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