Quais são as formas alternativas de modelar relações M:M em Cassandra?
-
24-09-2019 - |
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?
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.
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
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.