Sugira o modelo de dados Cassandra para um esquema existente
-
21-09-2019 - |
Pergunta
Espero que haja alguém que possa me ajudar a sugerir um modelo de dados adequado a ser implementado usando o banco de dados NoSQL Apache Cassandra. Mais do que eu preciso trabalhar sob altas cargas e grandes quantidades de dados.
Simplificado Eu tenho 3 tipos de objetos:
- produtos
- Marcação
- ProductTag
Produtos:
key - string key
name - string
.... - some other fields
Marcação:
key - string key
name - unique tag words
ProductTag:
product_key - foreign key referring to product
tag_key - foreign key referring to tag
rating - this is rating of tag for this product
Cada produto pode ter 0 ou muitas tags. A tag pode ser atribuída a 1 ou a muitos produtos. A relação significa entre produtos e tags é muitos para muitos em termos de bancos de dados relacionais.
O valor da "classificação" é atualizado "com muita frequência.
Eu preciso ser executado as seguintes consultas
- Selecione objetos por chaves
- Selecione Tags para o produto ordenado pela classificação
- Selecione produtos por ordem de tag classificando
- Atualizar classificação por product_key e tag_key
O mais importante é tornar essas consultas muito rápidas em grandes quantidades de dados, considerando que a classificação é constantemente atualizada.
Solução
Algo assim:
Products : { // Column Family
productA : { //Row key
name: 'The name of the product' // column
price: 33.55 // column
tags : 'fun, toy' // column
}
}
ProductTag : { // Column Family
fun : { //Row key
timeuuid_1 : productA // column
timeuuid_2 : productB // column
},
toy : { //Row key
timeuuid_3 : productA // column
}
}
ATUALIZAR
Verifique isso Modelo para armazenar a maior pontuação