Pergunta

Considere uma relação M:M que precisa ser representada em um armazenamento de dados Cassandra.

Quais opções de modelagem M:M estão disponíveis?Para cada alternativa, quando é preferível?Que escolhas de modelagem M:M você fez em seus projetos com Cassandra?

Foi útil?

Solução

Em vez de usar uma tabela de junção como faria com um rdbms, você teria um ColumnFamily contendo uma linha para cada X e uma lista de Ys ​​associados a ele, então um CF contendo uma linha para cada Y e uma lista de cada X associado com isso.

Se acontecer que você realmente não se importa em consultar uma dessas instruções, mantenha apenas o CF que lhe interessa.

Outras dicas

Cassandra by Design é o banco de dados de valor chave; portanto, para alcançar M: M, há duas maneiras de fazê -lo.

  1. Des-normalize seus dados para que todo navio de relação deve duplicar dados.

    ou seja. x-> y (valor) e x-> z (valor) e a-> y (valor)

    y deve ser salvo para x e um

    É assim que deve ser feito, pois lhe dão força de banco de dados

  2. Salvar referência para a chave relacional como valor.

    x-> y (chave) e x-> z (chave) e a-> y (chave)

    Portanto, se você precisar de x com o valor de Y, deve ser duas operações, obtenha x que lhe dará valor de y. Em seguida, obtenha Y em uma operação separada.

Cassandra não é RDBMS, então não me importe com a maneira tradicional de fazê -lo, deixando os valores e definem o relacionamento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top