我们正在开发一个具有关系对象模型的项目,我们希望在数据存储的某些部分使用no / sql解决方案(couchdb)。例如,有些用户和应用程序通过Applications UserId字段(或DDD世界中的用户属性)相互关联
在“应用程序”文档中将“用户”数据存储在couchdb中的正确方法是什么?使用id for relation或将整个“用户”对象放在“应用程序”文档中?如果我将整个“用户”对象放在“应用程序”文档中,则更新用户将导致更新其中包含完整用户信息的所有“应用程序”文档。
我们有点困惑,所以我会很高兴听到一些有关这方面的想法。
谢谢。
答案 0 :(得分:0)
这两种方法都是有效的,具体取决于您需要的读写内容 - 如果用户对象几乎从不更改,则缓慢/复杂的写入过程无关紧要,您可以通过包含它来避免大量额外读取在申请文件中。如果它发生了很大的变化,那么慢速/复杂的写入将成为主要问题,只需在应用程序文档中添加引用就更有意义了。这实际上是SQL和NoSQL之间更大的差异之一 - SQL有一个正确的规范化结构,使用NoSQL需要更多地考虑你的需求。
也就是说,用户几乎总是有意义作为一个独立的对象。但是,您不仅限于在应用程序文档中仅使用用户ID - 包括显示名称(很少更改)可能会消除与包括整个用户对象一样多的读取。