是否有任何变通方法可以使用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(如果我有1kk用户怎么办?)
我想到的另一个NoSQL解决方案是非规范化。但我不是它的忠实粉丝。我不反对将评论集合放到帖子实体(因为评论属于帖子),但我不喜欢将用户放在用户内的文章或文章中。
还有其他解决方案吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
RavenDB Multi Maps可以很好地处理这种情况:
http://ayende.com/blog/89089/ravendb-multi-maps-reduce-indexes
答案 2 :(得分:0)
另一个解决方案可能是playOrm,您可以在其中对表进行分区并选择并加入分区。 IT基本上就像使用JQL进行休眠,除了查询分区之外的所有内容。也许如果你按月分区,你可以在该分区上运行一个简单的旧学校选择查询,并将其与其他东西连接。 noSql现在似乎通过playOrm加入了连接;)。它当然不会在巨大的表上加入。在进行连接时,PARTITION需要与RDBMS表大小的比较大小....表大小可以是无限的(即,您有无限分区)。