我正在写一个CAD (计算机辅助设计)应用程序。我需要用这个产品提供一个3d对象库。这些都是简单的物体,只有三维坐标才能组成,而且不会超过300个。
为此,我正在考虑使用关系数据库。但考虑到我的简单需求,我不想要任何复杂的事情。到目前为止,我倾向于SQLite。它很小,在客户端进程中运行,并且据称速度很快。另外,我是个可怜的人,而且免费。
但是在我承诺使用SQLite之前,我只想询问您的意见,考虑到我的需求,这是否是一个好的选择。此外,在作出决定之前,我是否也应该尝试其他类似的选择?
编辑
我没有在前面提到,上面说的CAD对象,我将交付不会是不变的。我期望用户编辑它们(改变尺寸、颜色等)然后保存回图书馆。我还期望用户添加他们自己新创建的对象。请在你的回答中考虑这一点。
(到目前为止,谢谢你的回答。)
发布于 2009-04-11 17:58:39
真正需要考虑的是你的程序对数据做了什么。关系数据库设计用于处理数据集之间的复杂关系。然而,它们的设计并不是为了执行复杂的计算。
而且,数据量和它的相对简单性告诉我,您可以使用一个平面文件来存储坐标,并在需要时将它们读入内存。通过这种方式,您可以设计您的数据结构,以更密切地反映您将如何使用这些数据,而不是如何存储它。
许多语言提供了一种机制,可以将数据结构写入文件并将它们再读回称为串行化。Python的泡菜就是这样一个库,我相信您可以为您使用的任何语言找到一个库。基本上,只需根据程序如何使用类或数据结构来设计类或数据结构,并使用其中一个序列化库来填充该类或数据结构的实例。
编辑:结构可变的要求对我的回答并没有太大的影响--我仍然认为序列化和反序列化是解决这个问题的最好方法。事实上,用户需要能够修改和保存这些结构,这就需要进行一些规划,以确保文件被完全和正确地更新,但我认为最终您将花费更少的时间和精力在这种方法上,而不是尝试让SQLite或其他嵌入式数据库为您完成这项工作。
数据库最好的唯一情况是,如果您有一个系统,其中多个用户正在与一个中央数据存储库进行交互和更新,对于这种情况,您将查看像MySQL、PostgreSQL或server这样的数据库服务器的速度和并发性。
发布于 2009-04-11 18:04:50
我建议您考虑使用H2,它确实是轻量级和快速的。
https://stackoverflow.com/questions/740525
复制相似问题