Inner Join à cassandra CQL
Comment puis-je écrire les sous-requêtes/requêtes imbriquées dans cassandra. Est cette facilité de crédit est fournie dans le CQL?
Exemple, j'ai essayé:
cqlsh:testdb> select itemname from item where itemid = (select itemid from orders where customerid=1);
Il juste jette l'erreur suivante -
Bad Request: line 1:87 no viable alternative at input ';'
source d'informationauteur Saurabh Deshpande
Vous devez vous connecter pour publier un commentaire.
En raison de sa nature distribuée, Cassandra n'a pas de support pour les SGBDR style jointures. Vous avez quelques options pour quand vous voulez quelque chose comme une jointure.
Une option d'effectuer des requêtes et ensuite votre demande de joindre les données lui-même. Ce a de sens que si les données sont relativement petites et vous n'avez qu'à effectuer un petit nombre de requêtes. Basé sur l'exemple que vous avez donné ci-dessus, ce serait sans doute une bonne solution pour vous.
Pour plus compliquée rejoint, la stratégie habituelle consiste à éliminer les données et de les stocker un vue matérialisée de la jointure. L'avantage de ce système est que l'extraction de ces données sera beaucoup plus rapide que d'avoir à le construire joindre à votre demande chaque fois que vous en avez besoin. Le coût est de maintenant, vous avez plusieurs endroits où vous stockez les mêmes données, et vous aurez besoin de tout garder en synchronisation. Vous pouvez mettre à jour tous vos points de vue lorsque de nouvelles données dans le système, ou vous pouvez avoir un périodique de traitement par lots qui recrée fete.
Vous pouvez trouver cet article utile: Avez-Vous Vraiment Besoin de SQL à Faire Tout Cela dans Cassandra? il est un peu vieux, mais ses principes sont toujours d'application.