2010-04-04 60 views

回答

15

而不是像你使用rdbms一样使用连接表,你将有一个ColumnFamily包含每个X的行和一个与它关联的Y的列表,然后一个CF包含每个Y的一行和一个列表与它关联的每个X.

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

1

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

  1. 对您的数据进行反规范化处理,以便每个关系船都应该复制数据。

    即。 X-> Y(值)和X-> Z(值)和A-> Y(值)

    Ÿ应保存的X和一个

    这是它应该怎么做,因为它是给你数据库的强度

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

    X-> Y(键),X-> Z(密钥)和A-> Y(密钥)

    所以如果你需要X与Y的值应该是两种操作,获得X这将给你y的价值。然后让y本身进行单独的操作。

Cassandra不是RDBMS,所以不要用传统的方法来放弃值并定义关系。

相关问题