【发布时间】:2010-02-25 17:34:25
【问题描述】:
在数据库使用方面,过去十年是 ORM 时代,数百人竞相将我们的对象图保存在普通的老式 RMDBS 中。现在我们似乎正在见证面向文档的数据库时代的到来。 These databases 针对无模式文档进行了高度优化,但它们的横向扩展和并行查询集群的能力也非常有吸引力。
与 RDBMS 相比,面向文档的数据库在面向对象设计中持久化数据模型方面也具有一些优势。由于表是无模式的,因此可以将属于不同类的对象并排存储在继承层次结构中。此外,随着域模型的变化,只要代码能够处理从旧版本的域类中取回对象,就可以避免每次更改时都必须迁移整个数据库。
另一方面,面向文档的数据库的性能优势主要出现在存储更深的文档时。在面向对象的术语中,由其他类组成的类,例如,博客文章及其 cmets。不过,在我能想到的大多数示例中,例如博客示例,读取访问的增益似乎被每次有新评论时必须编写整个博客文章“文档”的惩罚所抵消已添加。
在我看来,如果一个人非常小心地将对象组织成针对数据读取和写入方式进行优化的深度图中的对象,那么面向文档的数据库可以为面向对象的系统带来显着的好处,但这意味着了解前面的用例。在现实世界中,我们通常只有在真正拥有可以分析的实时实现时才知道。
那么,关系数据库与面向文档的数据库的情况是不是一种摇摆和迂回?我对人们的意见和建议很感兴趣,尤其是如果有人在面向文档的数据库上构建了任何重要的应用程序。
【问题讨论】:
标签: database orm document-oriented-db