你如何处理NoSQL数据库中的关系?

时间:2011-02-14 17:35:44

标签: database-design nosql

使用标准RDMS,我可以通过使用主键和外键找到关系。如果我想要最近的评论,那么我只是按日期时间排序。如果我想要用户的所有评论,那么我将获取评论属于该用户的位置。

换句话说,我可以使用索引来过滤结果。 不仅仅是主键。

但是,对于文档和键值NoSQL,我无法弄清楚如何使用它们比文本转储更多。您唯一能做的就是通过ID获取值。

我需要一些例子,说明当你不能再使用索引或过滤器时,如何在NoSQL中建模数据。您如何排序和搜索数据?

2 个答案:

答案 0 :(得分:1)

如果您需要像您所描述的二级索引,那么您不能只使用任何非关系数据库。像Cassandra(可能还有其他人)这样的BigTable数据库允许使用二级索引。

如果您需要根据在键值存储中搜索内容,那么您需要获得创意。你可以:
1)创建自己的键,指向原始键,然后在原始对的新插入,更新和删除时保持这些对。
2)每天看一次每个值,蛮力,离线,并在某处保存答案。显然,如果您需要立即获得新数据,这将无效。

如果使用技术(1)和Redis,则可能需要在应用程序层或自定义排序集上对数据进行排序。

答案 1 :(得分:0)

您使用的是哪个NoSQL数据库?例如,Berkeley DB支持secondary indices