2010-04-04 5 views
12

Рассмотрите отношение M: M, которое должно быть представлено в хранилище данных Cassandra.Каковы альтернативные способы моделирования отношений M: M в Кассандре?

Какие варианты моделирования M: M доступны? Для каждой альтернативы, когда это предпочтительнее? Какие модели M: M вы выбрали в своих проектах на базе Cassandra?

ответ

15

Вместо того, чтобы использовать таблицу соединений так, как вам было бы с rdbms, у вас будет один ColumnFamily, содержащий строку для каждого X и список связанных с ним Ys, затем CF, содержащий строку для каждого Y и список каждого X, связанного с ним.

Если выясняется, что вам не очень важно запрашивать одно из этих направлений, тогда сохраняйте только тот CF, о котором вы заботитесь.

1

Cassandra по дизайну - база данных ключевых значений, поэтому для достижения M: M есть два способа сделать это.

  1. Де-нормализовать данные, чтобы каждое отношение корабля должно дублировать данные.

    ie. х> у (значение) и х> г (значение) и а-> у (значение)

    у должен быть сохранены для й и

    Это то, как это должно быть сделано, как это даст вам численность базы данных

  2. Сохраните ссылку для реляционного ключа как значение.

    х-> у (ключ) и х> г (Key) и а-> у (Key)

    Так что, если вам нужно х со значением у него должно быть две операции, получить х, которые будут дайте вам значение y. Затем возьмите y в отдельной операции.

Cassandra не является РСУБД, поэтому не обманывайте себя традиционным способом сделать это, сбросив значения и определите взаимосвязь.