【发布时间】:2011-10-14 06:47:58
【问题描述】:
是否有任何变通方法可以使用 NoSQL 文档数据库执行类似联接的查询?
示例:我们需要按用户评分超过千的用户选择上个月的文章。 SQL解决方案是
SELECT a.* FROM Articles as a
INNER JOIN Users as u ON a.UserId = u.Id
WHERE a.Date > (Now - Month) AND u.Rating > 1000
我可以想象几种 NoSQL 解决方案。首先是两个查询解决方案:
- 检索评分超过 1000 的用户
- 检索这些用户上个月的文章
我不喜欢它,因为我必须进行两次查询,并且我必须检索所有评分 > 1000 的用户(如果我有 1kk 的用户怎么办?)
我想到的另一个 NoSQL 解决方案是非规范化。但我不是它的忠实粉丝。我不反对将 cmets 集合放到 post 实体中(因为 cmets 属于 post),但我不喜欢将 user 放在文章中或将文章放在 user 中。
还有其他解决方案吗?
【问题讨论】:
标签: mongodb couchdb ravendb nosql