Domain driven design CouchDB/NoSQL和域驱动设计?

Domain driven design CouchDB/NoSQL和域驱动设计?,domain-driven-design,nosql,couchdb,couchapp,Domain Driven Design,Nosql,Couchdb,Couchapp,为CouchApp项目做一些研究 我理解文档数据存储与常规RDBMS的概念。我完全可以掌握建模文档和视图,而不是使用WHERE和JOIN语句。但是我还没有找到很多关于如何在考虑域驱动设计(DDD)的情况下对文档、视图和文档进行建模的资源 示例: 在CouchDB世界中没有DDD(例如GetObjectAFor(id,…其他一些int、string、ObjectB、foobar)==BOOM) 当DDD开始指示您应该使用SQL时 CouchDB重载和潜在瓶颈(视图建模、压缩、复制等)的DDD注意

为CouchApp项目做一些研究

我理解文档数据存储与常规RDBMS的概念。我完全可以掌握建模文档和视图,而不是使用WHERE和JOIN语句。但是我还没有找到很多关于如何在考虑域驱动设计(DDD)的情况下对文档、视图和文档进行建模的资源

示例:

  • 在CouchDB世界中没有DDD(例如GetObjectAFor(id,…其他一些int、string、ObjectB、foobar)==BOOM
  • 当DDD开始指示您应该使用SQL时
  • CouchDB重载和潜在瓶颈(视图建模、压缩、复制等)的DDD注意事项
看看CQR——它与DDD+NoSQL组合非常匹配

请参见此处的#cqrs标签,并查看:


这篇文章似乎打湿了我的胃口(看起来CouchDB设计应该真正反映出标准DDDAPI的外观),但在继续这条路线之前,仍然没有讨论性能考虑的细节。想法我真的不明白你在问什么或者你担心什么。例如,“当DDD开始指示您应该使用SQL时”是什么意思?我认为DDD永远不应该告诉您应该使用SQL,因为“SQL”永远不应该是您的域的一部分(除非您正在设计一个关系数据库…)?包含一些很好的指针,不是特定于DDD,而是通常用于CouchDB中的建模数据。DDD不应指定我使用的数据库技术。但数据存储会对我的域设计产生重大影响。与CQR的情况一样,通常在读取情况下处理1NF中的对象,在写入情况下处理3NF中的对象。但是当使用文档数据存储(如CouchDB)时,通常会在1NF中与应用程序的主要部分(如果不是全部)进行交互。当你写下你的回复时,我已经开始走CQR的道路,希望有一个交叉点(存储是附加的)。我很好奇CouchDB是否采取了与CQR不同的方法试图将3NF全部删除。但很明显,有相当数量的交叉。我一定会从中吸取教训。