Proposer modèle de données Cassandra pour un schéma existant
-
21-09-2019 - |
Question
J'espère qu'il ya quelqu'un qui peut me aider à suggérer un modèle de données adapté à mettre en œuvre en utilisant la base de données NoSQL Apache Cassandra. Plus de que j'ai besoin de travailler sous des charges élevées et de grandes quantités de données.
J'ai simplifié 3 types d'objets:
- Produit
- balise
- ProductTag
produit:
key - string key
name - string
.... - some other fields
Tag:
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
Chaque produit peut avoir 0 ou plusieurs balises. Tag peut être attribué à 1 ou plusieurs produits. Moyens relation entre les produits et les étiquettes est beaucoup à beaucoup en termes de bases de données relationnelles.
Valeur de « rating » est mis à jour « très » souvent.
Je dois être exécuter les requêtes suivantes
- Sélectionner les objets par les touches
- Sélectionner les tags pour les produits commandés par notes
- Sélectionner les produits par ordre d'étiquette par note
- note de mise à jour par product_key et tag_key
Le plus important est de rendre ces requêtes très rapidement sur de grandes quantités de données, étant donné que la notation est constamment mis à jour.
La solution
Quelque chose comme ceci:
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
}
}
UPDATE Cochez cette pour stocker plus gros score