考虑需要在 Cassandra 数据存储中表示的 M:M 关系。
有哪些 M:M 建模选项可用?对于每种选择,什么时候更喜欢?您在 Cassandra 支持的项目中做出了哪些 M:M 建模选择?
考虑需要在 Cassandra 数据存储中表示的 M:M 关系。
有哪些 M:M 建模选项可用?对于每种选择,什么时候更喜欢?您在 Cassandra 支持的项目中做出了哪些 M:M 建模选择?
不是像使用 rdbms 那样使用连接表,而是有一个 ColumnFamily,其中包含每个 X 的一行和一个与之关联的 Y 列表,然后是一个 CF,其中包含每个 Y 的一行和一个关联的每个 X 的列表用它。
如果事实证明您并不真正关心查询其中一个方向,那么只保留您关心的 CF。
Cassandra 在设计上是键值数据库,所以要实现 M:M 有两种方法可以做到。
非规范化您的数据,因此每个关系都应该复制数据。
IE。x->y(value) 和 x->z(value) 和 a->y(value)
y 应保存为 x 和 a
这就是应该做的,因为它给了你数据库的力量
将关系键的引用保存为值。
x->y(key) 和 x->z(Key) 和 a->y(Key)
因此,如果您需要具有 y 值的 x,它应该是两个操作,获取 x 它将为您提供 y 值。然后在单独的操作中获取 y 本身。
Cassandra 不是 RDBMS,所以不要通过删除值和定义关系来围绕传统方式进行操作。