【问题标题】:SailsJS - Associated records vs Embedded CollectionSailsJS - 关联记录与嵌入式集合
【发布时间】:2015-06-28 21:27:08
【问题描述】:
我正在使用带有 Mongo DB 的 SailsJS / Waterline ORM。这是一个实时应用程序,因此sails sockets.io pub/sub 被大量使用。
我的应用程序中有一些实例需要多对多和多对一关联。
我相当确定我可以通过嵌入式集合实现多对*关系,但是水线关联似乎更清晰一些(例如,访问 publishAdd())。
问题是:连接/链接数据(嵌入或关联)的最佳做法(对于我当前的堆栈)是什么?由于额外的查询,关联记录是否会影响性能?
【问题讨论】:
标签:
node.js
mongodb
sails.js
waterline
sails-mongo
【解决方案1】:
问自己这些问题:
1.我要创建/阅读这些关联或嵌入的集合吗?
或
2。我是否需要对这些集合执行大量更新/删除操作?
- 如果您的答案更倾向于 Q1,则可以使用嵌入式集合。它们通过一次只查询一个集合来加快访问速度。它也更易于实现。
但是
如果您的答案更倾向于 Q2,那么您需要的是关联。这种方法有很多好处:
更新/删除操作不需要更新/删除其嵌入的所有集合中的嵌入文档。
由于您大量使用套接字,因此关联将有助于以更有条理的方式通过套接字通知模型的更改。
每个嵌入式集合都有自己的模型,因此也有自己的结构,这使代码更有条理、更容易维护和更易于理解。
如果您在实施过程中发现更多优点和缺点,请随时添加您自己的指针。祝你好运!