开源C ++面向对象数据库

时间:2009-06-20 17:46:16

标签: database oop

是否有适用于C ++的开源面向对象数据库?

我查看了面向对象的关系映射(ORM)库,如下所示: https://stackoverflow.com/questions/74141/good-orm-for-c-solutions

这些也是相互关联的: Object-oriented-like structures in relational databases http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#C.2B.2B

到目前为止,我的经历一直很痛苦。解决方案似乎并不成熟,我甚至难以编译其中的一些,文档和支持可能很少。

我想在某种程度上我试图避免学习SQL(我不是数据库开发人员)。另一方面,我的直觉是ORM是一种架构“解决方法”,因为它们在数据库系统之上创建了一个本质上不支持对象的层。

我理想的数据库库允许以下内容:

  1. 允许一个人根据类名指定对象层次结构树,可能是XML或只是在C ++中。
  2. 允许指定这些类的哪些字段应该是持久的。
  3. 提供API以创建,更新,删除,检索对象的层次结构。
  4. 理想情况下,为内存树本身提供API,包括对树节点的并发访问。
  5. 我曾经使用过具有这样一个自定义数据库和api的嵌入式系统。

    我差不多就要创建自己的开源了。

    只是想知道我可以使用现成的任何东西。

    我看到了这个: http://en.wikipedia.org/wiki/Comparison_of_object_database_management_systems

    我想弄清楚这可能有用:

    http://www.fastdb.org/fastdb.html

    提前致谢。

2 个答案:

答案 0 :(得分:3)

我不打算提出任何建议,因为我不知道高质量的FOSS OO数据库。不过,我会提出以下意见:

  • OO数据库不是一种避免SQL的方法 - 你需要两者。坦率地说,如果你不熟悉SQL,你作为一名专业程序员的生活可能会让你感到不快。

  • OO数据库已经成熟 - 它们已经存在了20多年。 15年前,我个人首先在金融行业的一个大型项目中使用了一个。

  • OO数据库最适用于关系数据库失败的地方 - 我在复杂的金融工具建模,石油管道优化和电信公司工作中使用它们。

  • ORM数据库采用OO和关系模型的不良部分,使其更糟糕。

  • 我最喜欢的商业OODB是ObjectStore,但我现在还没有完成任何工作。

希望这有点模糊。

答案 1 :(得分:1)

老实说,除非你进入“前沿”,否则我会远离OO数据库。几乎在所有情况下,它们都没有得到很好的支持,不成熟,并且在客户端有各种支持问题。

问题是,只有关系数据库(以及某些非关系数据库)获得99%的关注,因此最终会更加成熟。 ORM可能是一种解决方法,但如果您需要可靠性,那么它就是您所需要的。

更新:

为了澄清,我确信有一些非常可靠的开源OODB,但我对“可靠性”的要求不仅仅是它不会崩溃而且不会破坏数据。它包括客户端连接器的可靠性,与流行语言的对象模型集成的可靠性等等。

这是关于开源的OODB,而不是商业的。