【问题标题】:Open Source C++ Object Oriented Database [closed]开源 C++ 面向对象数据库
【发布时间】:2010-11-04 13:25:59
【问题描述】:

是否有面向 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,包括对树节点的并发访问。

我曾在具有此类自定义数据库和 api 的嵌入式系统上工作。

我几乎要创建自己的并将其开源。

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

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

并且正在尝试找出这可能有效:

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

提前致谢。

【问题讨论】:

  • 您可以通过搜索“序列化”以及“ORM”和“数据库”找到更多内容。
  • 我基于不想学习的设计决定似乎很不幸。使用 ORM 有充分的理由,但不应该是无知。

标签: database oop


【解决方案1】:

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

  • OO 数据库不是一种避免 SQL 的方法 - 你需要两者。坦率地说,如果你对 SQL 不太了解,作为一名专业程序员的生活可能会很不愉快。

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

  • OO 数据库最适合在关系数据库出现故障的情况下使用 - 我已将它们用于复杂的金融工具建模、石油管道优化和电信工作。

  • ORM 数据库吸收了 OO 和关系模型的不良部分,使它们变得更糟。

  • 我最喜欢的商业 OODB 是 ObjectStore,但我已经有一段时间没有使用它了。

希望对您有所帮助。

【讨论】:

  • 关系数据库在哪里失败?我的意思是,“针对什么数据/应用程序/要求?”。
  • 树形/图形导航。使用关系比使用 OO 慢得多(1000 倍)。
  • 导航,嗯?我一直在使用嵌套集模型在 SQL 中存储树。因此,选择树和/或子树/分支中的记录很便宜,然后我将它们重新水合到数据库外部的对象树中。
  • 相信我,无论 SQL 数据库有多快,OO 数据库都会快得惊人——这几乎是他们存在的理由。
【解决方案2】:

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

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

更新:

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

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

【讨论】:

  • 是的,“避免学习 SQL”并不是 IMO 的一个好理由。当您指定要序列化的字段时,您可能还不如使用 SQL!
  • ZODB 和 Gemstone 肯定不是最前沿的。它们已经存在了几十年。
猜你喜欢
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多