Database 数据库推荐

Database 数据库推荐,database,sqlite,Database,Sqlite,我正在写一个CAD计算机辅助设计应用程序。我需要随此产品提供一个3d对象库。这些都是由三维坐标组成的简单物体,它们不会超过300个 为此,我正在考虑使用关系数据库。但考虑到我的简单需求,我不想让任何事情变得复杂。到目前为止,我倾向于SQLite。它很小,在客户端进程中运行,据说速度很快。而且我是个穷人,而且是免费的 但在我向SQLite承诺之前,我只想问一下您的意见,根据我的要求,这是否是一个好的选择。另外,在做出决定之前,我是否也应该尝试任何类似的替代方案 编辑: 我之前没有提到我将发布的上述

我正在写一个CAD计算机辅助设计应用程序。我需要随此产品提供一个3d对象库。这些都是由三维坐标组成的简单物体,它们不会超过300个

为此,我正在考虑使用关系数据库。但考虑到我的简单需求,我不想让任何事情变得复杂。到目前为止,我倾向于SQLite。它很小,在客户端进程中运行,据说速度很快。而且我是个穷人,而且是免费的

但在我向SQLite承诺之前,我只想问一下您的意见,根据我的要求,这是否是一个好的选择。另外,在做出决定之前,我是否也应该尝试任何类似的替代方案

编辑:

我之前没有提到我将发布的上述CAD对象不会是不变的。我希望用户编辑它们,更改尺寸、颜色等,并保存回库中。我还希望用户添加自己新创建的对象。请在回答中考虑这个问题。


感谢您目前的回答。

您要运送多少件物品?能否在xml文件中定义这些对象及其坐标?所以基本上每个对象都使用一个不同的xml文件?您可以将这些xml文件放在一个目录中。这可以是一个简单的结构。

真正要考虑的是你的程序对数据所做的事情。关系数据库设计用于处理数据集之间的复杂关系。但是,它们不是为执行复杂计算而设计的

此外,大量的数据和相对简单的数据向我建议,您可以简单地使用平面文件来存储坐标,并在需要时将其读入内存。通过这种方式,您可以设计数据结构,以更紧密地反映您将如何使用这些数据,而不是如何存储这些数据

许多语言都提供了一种机制,可以将数据结构写入文件,然后再次将其读回。Python就是这样一个库,我相信您可以为您使用的任何语言找到一个库。基本上,只需根据程序使用类或数据结构的方式来设计类或数据结构,并使用其中一个序列化库来填充该类或数据结构的实例

编辑:关于我的答案,结构是可变的这一要求实际上并没有多大影响——我仍然认为序列化和反序列化是解决这个问题的最佳方案。用户需要能够修改和保存结构,这一事实需要进行一些规划,以确保文件得到完全和正确的更新,但最终我认为,与尝试使用SQLite或其他嵌入式数据库为您完成这项工作相比,使用这种方法所花费的时间和精力会更少

唯一一种数据库更好的情况是,如果您有一个多用户与中央数据存储库交互并更新的系统,对于这种情况,您将考虑MySQL、PostgreSQL或SQL server等数据库服务器的速度和并发性


您还评论说您将使用C作为您的语言。NET支持序列化,所以你应该是。

我建议你考虑使用,它真的轻量级和快速。

当你说你有300个3D对象的库时,我会假设你是代码的对象,而不是用户将创建的模型。p>
我已经读过,它们非常适合帮助解决CAD问题,因为它们非常适合追踪具有复杂模型特征的长参考链。也许类似的东西在您的上下文中会有用。

我不会使用SQL数据库。您可以使用XML文件轻松描述每个3D对象。将这些文件打包到一个目录中,然后全部打包。如果您需要方便地访问对象的元数据,那么您可以只生成一个带有名称或描述的索引文件,这样,如果您有库管理器之类的工具,就不必解析所有对象并将其加载到内存中

有快速简单的SAX解析器可用,您可以轻松编写XML编写器或找到一些可用于此目的的免费代码

如今,许多类似的应用程序都在使用XML。它易于解析/写入,可读性强,压缩后不需要太多空间


我使用过Sqlite,它易于使用,并且易于与自己的对象集成。但是我更喜欢像Sqlite这样的SQL数据库,用于那些需要一些好的搜索工具来搜索大量数据记录的应用程序。

对于特定要求,即提供应用程序附带的对象库,数据库系统可能不是正确的答案

首先想到的是,您可能希望文件是可更新的,也就是说,您需要能够在不更改应用程序其余部分的情况下将文件拖放并更新到应用程序中

第二件事是 您提供的e数据是不可变的——因此,您不需要关系数据库的功能,只需要能够以足够的效率访问特定的模型即可

为了简单起见,一种XML文件会很好地满足您的要求,因为您有良好的结构。以此为基础,您可以选择对其进行压缩、加密、将其作为资源嵌入到程序集中(如果在.NET中玩),等等


显然,如果SQLite将其数据存储在每个数据库的单个文件中,并且如果您有其他原因需要存储系统中的db功能,那么是的,但我想首先考虑db对整个应用程序的效用。

SQL Server CE是免费的,占用空间小,没有运行服务,SQL Server是否兼容取决于您的操作系统/编程语言平台。你在用什么?Windows上的C/.NET?Linux上的Java?Marc,我将在Windows上使用C。我将提供的库将包含某种默认的对象集。用户将被允许更改它们并将更改保存回库中。此外,他们还可以创建自己的新对象并添加到库中。