Каковы альтернативные способы моделирования отношений M: M в Кассандре? - PullRequest
12 голосов
/ 04 апреля 2010

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

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

Ответы [ 2 ]

15 голосов
/ 09 апреля 2010

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

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

1 голос
/ 07 апреля 2010

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

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

    есть. x-> y (значение) и x-> z (значение) и a-> y (значение)

    y следует сохранить для x и a

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

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

    x-> y (ключ) и x-> z (ключ) и a-> y (ключ)

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

Cassandra не является RDBMS, так что не забывайте о традиционном способе сделать это, отбросив значения и определив отношения.

...