Orm 为什么O/R映射器似乎是DDD用户青睐的持久性方法?

Orm 为什么O/R映射器似乎是DDD用户青睐的持久性方法?,orm,domain-driven-design,nosql,Orm,Domain Driven Design,Nosql,为什么没有很多DDD故事使用更新的nosql工具(如db4o和Cassandra)来实现持久性呢 在我看来,O/R映射所涉及的工作对于返回值来说似乎太高了。能够立即报告数据库是我在项目中看到的主要优势 另一方面,db4o似乎几乎是存储库模式,Cassandra的列族和超级列概念似乎非常适合定义聚合及其值对象(可伸缩性只是一个额外的好处)。然而,大多数提供DDD项目示例的在线资源似乎总是默认使用[N]Hibernate 我没有足够的时间/资源在我的项目上尝试这些更新的工具来承担巨大的风险,这让我想

为什么没有很多DDD故事使用更新的nosql工具(如db4o和Cassandra)来实现持久性呢

在我看来,O/R映射所涉及的工作对于返回值来说似乎太高了。能够立即报告数据库是我在项目中看到的主要优势

另一方面,db4o似乎几乎是存储库模式,Cassandra的列族和超级列概念似乎非常适合定义聚合及其值对象(可伸缩性只是一个额外的好处)。然而,大多数提供DDD项目示例的在线资源似乎总是默认使用[N]Hibernate


我没有足够的时间/资源在我的项目上尝试这些更新的工具来承担巨大的风险,这让我想选择一种非常有文档记录的持久性方法。有没有可能仅仅因为人们害怕放弃非常可靠的SQL,O/R映射仍然是标准?我是否应该有所突破?

关系数据库是为特定类别的用例而设计的,特别是在业务应用程序中。因此,它们具有某些在这些场景中很有价值的功能。数据检索通常伴随着复杂的搜索和分析。如果您使用NoSql或对象数据库,您可能会放弃其中一些功能,转而使用其他功能,例如处理大型分布式数据集,NoSql数据库通常擅长这项任务


换句话说,您可能需要更多的功能,而不仅仅是数据持久性,关系数据库已经提供了这些功能。关系数据库是一种成熟、知名和可预测的技术,许多专家在这方面拥有丰富的专业知识。所有这些原因都是继续选择关系数据库而不是更“奇特”的解决方案的好理由

据我所见,DDD在长寿命、面向业务的代码库中最为常见。到目前为止,SQL数据库思维在这一领域几乎没有受到挑战。一些影响因素:

  • 编写长寿命代码库的人倾向于喜欢已经存在很长时间的技术
  • 面向业务的大型项目通常发生在自然保守的大型企业中
  • 如果您使用任何现有数据启动项目,那么它很可能位于SQL数据库中,并且现有代码可能与此相关
  • 大多数业务项目对性能不太敏感,至少与纯技术或以消费者为中心的工作不同
我相信还有更多

如果你负担不起尝试新工具带来的财务风险,那么你可能应该坚持使用已知的工具。一些可选的持久性方法非常棒,可以根据需要从根本上提高性能。但它们都处于生命周期的早期。尽管SQL数据库有很多限制,但至少您和继承您的代码的开发人员都知道这些限制