Suggerisci modello di dati Cassandra per uno schema esistente
-
21-09-2019 - |
Domanda
Spero che ci sia qualcuno che mi può aiutare a suggerire un modello di dati adatto ad essere implementato utilizzando banca dati NoSQL Apache Cassandra. Più di quanto ho bisogno di lavorare sotto carichi elevati e grandi quantità di dati.
semplificata ho 3 tipi di oggetti:
- prodotto
- tag
- ProductTag
del prodotto:
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
Ogni prodotto può avere 0 o più tag. Tag può essere assegnato a 1 o più prodotti. Mezzi relazione tra prodotti e tag è molti-a-molti, in termini di database relazionali.
Valore di "rating" si aggiorna "molto" spesso.
ho bisogno di essere eseguire le seguenti query
- Seleziona oggetti di chiavi
- Seleziona tag per il prodotto in ordine di voto
- Selezionare i prodotti per ordine tag rating
- Aggiornamento rating da PRODUCT_KEY e tag_key
Il più importante è quello di rendere queste query veramente veloce su grandi quantità di dati, considerando che il rating è in costante aggiornamento.
Soluzione
Qualcosa di simile a questo:
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
}
}
Aggiorna
Controllare questo per memorizzare più grande punteggio