2010-04-04 59 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,所以不要用傳統的方法來放棄值並定義關係。

相關問題