我正在考虑开始一个非常明显需要持久存储的项目。当我偶然发现一篇简要提到 CouchDB 的文章时,我正要不情愿地决定使用 RDBMS。自从我上次查看以来,似乎在数据库技术方面发生了一些进步,所以我想在进入数据库之前先在这里询问一下数据库。
这是我的标准。(我在最后再次列出了标准,所以如果您想跳过解释,只需向下滚动即可。)
该项目是开源的,我不会要求任何东西,所以最好是数据库是开源和免费的。此外,该软件必须在 Linux 和 Windows 上运行。
项目的某些部分必须使用 C++。该项目的代码不够大,不足以证明使用第二种语言是合理的。所以基本上整个事情都是C++。
该项目与网络没有任何关系,因此数据库最好不需要网络库的碎片。
我要存储的对象属于以下两类之一:基本对象和容器对象。不同之处在于作为容器的对象将包含更多对象,即:零件的一部分问题。我需要一个能够干净有效地处理此类情况的数据库。
我还希望架构能够迅速发展,至少在最初是这样。我还怀疑一些旧数据根本不适合新模式。所以我想保留不同版本的模式。赢可能,我希望能够将一个模式中的数据转换为另一个模式。
为了使应用程序按预期方式工作,人们必须相互交换大量数据库。所以我想要导入和导出数据的简单方法,我可以在某种程度上实现自动化。
最后,如果可以在单元测试中以某种方式模拟数据库,那就太好了。
这些是我的要求。我在下面复制了它们,以使人们更容易回答。
谢谢
非技术要求 1. 开源最好免费。2. 在 Windows 和 Linux 上运行
- 有一个 C++ 接口。
- 能够处理非 Web 应用程序,最好不使用 REST。
- 可以很好地处理“零件的零件”问题。
- 可以处理多个索引。
- 有模式版本的概念,可以处理多个模式版本,并且可以将表从一个模式迁移到另一个模式。
- 应该有一个简单的机制来将数据从一个数据库实例移动到另一个实例。
- 最好有一些测试机制。