Inner Join in cassandra CQL

Come scrivo subquery / query nidificate in cassandra. Questa funzione è fornita in CQL?

Esempio ho provato:

cqlsh:testdb> select itemname from item where itemid = (select itemid from orders where customerid=1); 

Getta solo il seguente errore –

 Bad Request: line 1:87 no viable alternative at input ';' 

A causa della sua natura distribuita, Cassandra non supporta i join in stile RDBMS. Hai alcune opzioni per quando vuoi qualcosa come un join.

Un’opzione esegue query separate e poi fa in modo che l’applicazione si unisca ai dati stessi. Questo ha senso se i dati sono relativamente piccoli e devi solo eseguire un piccolo numero di query. In base all’esempio che hai fornito sopra, questa probabilmente sarebbe una buona soluzione per te.

Per i join più complicati, la strategia abituale è denormalizzare i dati e archiviare una vista materializzata del join. Il vantaggio di questo è che scaricare questi dati sarà molto più veloce di doverli integrare nella tua applicazione ogni volta che ne hai bisogno. Il costo è ora che hai più posti in cui stai memorizzando gli stessi dati e dovrai tenere tutto sincronizzato. È ansible aggiornare tutte le visualizzazioni quando i nuovi dati entrano nel sistema o è ansible avere un lavoro batch periodico che si ricostruisce.

Potresti trovare utile questo articolo: hai davvero bisogno di SQL per fare tutto in Cassandra? È un po ‘vecchio ma i suoi principi si applicano ancora.