面向对象数据库和文档数据库有啥区别?

Posted

技术标签:

【中文标题】面向对象数据库和文档数据库有啥区别?【英文标题】:What is the difference between object-oriented and document databases?面向对象数据库和文档数据库有什么区别? 【发布时间】:2012-04-10 16:21:24 【问题描述】:

面向对象数据库和文档数据库有什么区别?

我没有使用面向对象的数据库,但是当我使用文档数据库 (RavenDb) 时,我可以毫无问题地存储和读取常用的面向对象的类。

【问题讨论】:

【参考方案1】:

我从 db4o (OODB) 转到 RavenDB(文档 DB)。我发现最大的不同是对象数据库存储完整的对象,当一个对象与其中的另一个对象一起存储时,该子对象被完整存储并且它是该对象的最新版本。使用文档数据库,对象仍然被存储,但它们的组织方式不同。聚合/根对象将存储子对象的部分,以便聚合/根对象是自包含的。当您检索根对象时,您不会伸手去抓取与其相关的对象。

OODB 会以这种方式存储团队:

TeamName
City
List<Player>  // The entire player objects would be stored here

文档数据库会以这种方式存储团队:

TeamName
City
List<string> PlayerNames

PlayerNames 将存储在这里,因为这就是团队对象所需要的全部内容。

RavenDB 在这里对文档数据库的理论有很好的解释:

http://ravendb.net/docs/theory/document-structure-design

【讨论】:

以上是关于面向对象数据库和文档数据库有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器对象模型和文档对象模型有啥区别?

MongoDB:文档、记录和属性之间有啥区别?

面向数据的程序和数据驱动的程序有啥区别?

COM 和 OLE 有啥区别?

mongodb bsondump 有啥作用

Mongodb和mysql的区别