在卡桑德拉模拟M:M关系的另一种方法是什么?

时间:2010-04-04 00:08:51

标签: database cassandra nosql referential-integrity

考虑需要在Cassandra数据存储中表示的M:M关系。

M:M建模选项可用吗?对于每种替代方案,何时更喜欢?你在Cassandra动力项目中做过哪些M:M建模选择?

2 个答案:

答案 0 :(得分:15)

不是像使用rdbms那样使用连接表,而是让一个ColumnFamily包含每个X的行和与之关联的Y列表,然后是包含每个Y的行的CF和一个列表每个与之相关的X.

如果事实证明你并不真正关心查询其中一个方向,那么只保留你关心的CF.

答案 1 :(得分:1)

Cassandra的设计是Key值数据库,所以要实现M:M有两种方法可以做到。

  1. 取消规范化您的数据,以便每个关系都应该重复数据。

    即。 x-> y(值)和x-> z(值)和a-> y(值)

    y应该保存为x和a

    这是应该如何做的,因为它给你数据库的力量

  2. 将关系键的引用保存为值。

    x-> y(键)和x-> z(键)和a-> y(键)

    因此,如果你需要x值为y,那么它应该是两个运算,得到x将给你y的值。然后单独进行操作。

  3. Cassandra不是RDBMS,所以不要通过删除值和定义关系来绕过传统方式。