我正在考虑启动一个非常明显需要持久存储的项目。当我遇到一篇简短提及CouchDB的文章时,我正在不情愿地决定使用RDBMS。似乎自从我上次查看以来,数据库技术已经发生了一些进步,所以我想在进入数据库之前我会在这里询问数据库。
这是我的标准。 (我在最后再次列出标准,所以如果你想跳过解释,只需向下滚动。)
该项目是开源的,我不会要求任何东西,所以最好是数据库是开源的,免费的。此外,该软件必须在Linux和Windows上运行。
项目的某些部分必须使用C ++。该项目代码不够大,无法证明使用第二语言。所以基本上整个事情都是C ++。
此项目与网络无关,因此最好 数据库不需要Web库的碎片。
我想要存储的对象分为两类:基本对象和容器对象。不同的是作为容器的对象将包含更多的对象,即:部件的一部分问题。我需要一个能够干净有效地处理这种情况的数据库。
我还希望架构能够快速发展,至少在最初阶段。我怀疑一些旧数据根本不适合新的模式。所以我想保留不同版本的架构。赢得可能,我希望能够将一个数据转换为一个模式到另一个模式。
为了使应用程序按预期方式工作,人们将不得不相互交换大块数据库。所以我想要简单的导入和导出数据的方法,我可以在某种程度上自动化。
最后,如果数据库可以在单元测试中进行模拟,那将是很好的。
这是我的要求。我已将它们复制到下面,以方便人们回答。
非技术要求 1.开源最好是免费的。 2.在Windows和Linux上运行
答案 0 :(得分:2)
HDF5是一种二进制格式,其行为类似于分层数据库。它具有C ++和python的绑定和库(我只使用后者),它用于存储大量数据,如某些物理和天文实验中产生的数据。
答案 1 :(得分:0)
我前段时间看了几个nosql数据库(但要求比你不同 - 需要它是一个独立的服务器)。我记得特别有趣的是Redis和Kyoto Cabinets。看看。
顺便说一句,你没有提到任何性能要求。如果是这样,你考虑过SQLite吗?简单,嵌入,稳定,并且具有SQL的灵活性。使用准备好的语句,SQL的性能损失不应该很高。 编辑:ooops,刚刚注意到你在一年多前问过这个问题......好吧,也许你可以告诉我们你选择了什么:)