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

Xeo*_*oss 11 database-design nosql

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

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

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

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

And*_*ght 1

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

如果您需要根据值在键值存储中搜索内容,那么您需要发挥创意。您可以:
1) 创建您自己的指向原始键的键,然后在原始对的新插入、更新和删除时维护这些对。
2)只需查看每个值,暴力破解,离线,每天一次,并将答案保存在某个地方。显然,如果您立即需要新数据,这将不起作用。

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