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.

Foi útil?

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

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