Что альтернативные пути к отношениям модели M:M в Cassandra?

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

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

12
задан Mis94 15 November 2018 в 08:33
поделиться

2 ответа

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

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

15
ответ дан 2 December 2019 в 20:16
поделиться

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

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

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

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

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

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

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

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

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

1
ответ дан 2 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: