CouchDB / NoSQL和领域驱动设计有何关系?

7

我正在为CouchApp项目做一些研究。

我了解文档数据存储和常规关系型数据库之间的概念区别。我完全理解建模文档和视图,而不是使用WHERE和JOIN语句。但是,我还没有找到很多有关如何在考虑领域驱动设计(DDD)的情况下建模文档、视图和设计文档的资源。

例如:

  • CouchDB世界中不适合DDD的事情(例如GetObjectAFor(id,...某些其他int、string、ObjectB、foobar) == BOOM
  • 当DDD开始表明你应该改用SQL时
  • 针对CouchDB大量工作和潜在瓶颈(视图建模、压缩、复制等)的DDD注意事项

1
这篇文章似乎勾起了我的食欲(看起来 CouchDB 的设计应该真正反映出标准 DDD API 的样子),但在选择这条路之前仍然没有详细讨论性能方面的考虑。有什么想法吗?- http://www.erenaykin.net/blog/?p=21 - baseman
我并不真正理解你在问什么或者你的关注点是什么。例如,“当DDD开始表明你应该使用SQL时”是什么意思?我认为DDD永远不应该告诉你应该使用SQL,因为“SQL”本身不应该成为你的领域的一部分(除非你正在设计一个关系型数据库...)。 - mhanisch
你看过stackoverflow上的这篇文章了吗:https://dev59.com/z3I_5IYBdhLWcg3wFu_L?其中包含一些很好的指针,虽然不是特定于DDD,但是适用于在CouchDB中建模数据。 - mhanisch
DDD不应该规定我使用哪种数据库技术。但是数据存储可以显着影响我的域设计的实现方式。就像在CQRS中,通常在读取情况下处理1NF中的对象,在写入情况下处理3NF中的对象。但是当使用文档数据存储(如CouchDB)时,通常您的应用程序的主要部分(如果不是全部)都会以1NF进行交互。 - baseman
1个回答

3

谢谢。在你回答的时候,我已经开始走CQRS的路径,希望能有交叉点(存储是仅追加的)。我很好奇CouchDB是否采取了一种不同于CQRS的方法,试图完全消除3NF。但显然存在相当大的交叉点。我肯定会从中学到东西。 - baseman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接