考虑需要在Cassandra数据存储中表示的M:M关系。
M:M建模选项可用吗?对于每种替代方案,何时更喜欢?你在Cassandra动力项目中做过哪些M:M建模选择?
答案 0 :(得分:15)
不是像使用rdbms那样使用连接表,而是让一个ColumnFamily包含每个X的行和与之关联的Y列表,然后是包含每个Y的行的CF和一个列表每个与之相关的X.
如果事实证明你并不真正关心查询其中一个方向,那么只保留你关心的CF.
答案 1 :(得分:1)
Cassandra的设计是Key值数据库,所以要实现M:M有两种方法可以做到。
取消规范化您的数据,以便每个关系都应该重复数据。
即。 x-> y(值)和x-> z(值)和a-> y(值)
y应该保存为x和a
这是应该如何做的,因为它给你数据库的力量
将关系键的引用保存为值。
x-> y(键)和x-> z(键)和a-> y(键)
因此,如果你需要x值为y,那么它应该是两个运算,得到x将给你y的值。然后单独进行操作。
Cassandra不是RDBMS,所以不要通过删除值和定义关系来绕过传统方式。