C ++的非关系数据库

时间:2009-10-15 17:28:19

标签: database non-relational-database

我正在考虑启动一个非常明显需要持久存储的项目。当我遇到一篇简短提及CouchDB的文章时,我正在不情愿地决定使用RDBMS。似乎自从我上次查看以来,数据库技术已经发生了一些进步,所以我想在进入数据库之前我会在这里询问数据库。

这是我的标准。 (我在最后再次列出标准,所以如果你想跳过解释,只需向下滚动。)

  1. 该项目是开源的,我不会要求任何东西,所以最好是数据库是开源的,免费的。此外,该软件必须在Linux和Windows上运行。

  2. 项目的某些部分必须使用C ++。该项目代码不够大,无法证明使用第二语言。所以基本上整个事情都是C ++。

  3. 此项目与网络无关,因此最好 数据库不需要Web库的碎片。

  4. 我想要存储的对象分为两类:基本对象和容器对象。不同的是作为容器的对象将包含更多的对象,即:部件的一部分问题。我需要一个能够干净有效地处理这种情况的数据库。

  5. 我还希望架构能够快速发展,至少在最初阶段。我怀疑一些旧数据根本不适合新的模式。所以我想保留不同版本的架构。赢得可能,我希望能够将一个数据转换为一个模式到另一个模式。

  6. 为了使应用程序按预期方式工作,人们将不得不相互交换大块数据库。所以我想要简单的导入和导出数据的方法,我可以在某种程度上自动化。

  7. 最后,如果数据库可以在单元测试中进行模拟,那将是很好的。

  8. 这是我的要求。我已将它们复制到下面,以方便人们回答。

    谢谢

    非技术要求 1.开源最好是免费的。 2.在Windows和Linux上运行

    1. 有一个C ++界面。
    2. 能够处理非Web应用程序,最好不使用REST。
    3. 可以很好地处理“零件部件”问题。
    4. 可以处理多个索引。
    5. 有一些架构版本的概念,可以处理多个架构版本,并且可以将表从一个架构迁移到另一个架构。
    6. 应该有一个简单的机制,用于将数据从一个数据库实例移动到另一个实例。
    7. 最好有一些测试机制。

2 个答案:

答案 0 :(得分:2)

HDF5是一种二进制格式,其行为类似于分层数据库。它具有C ++和python的绑定和库(我只使用后者),它用于存储大量数据,如某些物理和天文实验中产生的数据。

http://www.hdfgroup.org/HDF5/

答案 1 :(得分:0)

我前段时间看了几个nosql数据库(但要求比你不同 - 需要它是一个独立的服务器)。我记得特别有趣的是Redis和Kyoto Cabinets。看看。

顺便说一句,你没有提到任何性能要求。如果是这样,你考虑过SQLite吗?简单,嵌入,稳定,并且具有SQL的灵活性。使用准备好的语句,SQL的性能损失不应该很高。

编辑:ooops,刚刚注意到你在一年多前问过这个问题......好吧,也许你可以告诉我们你选择了什么:)