it-swarm.com.de

So führen Sie Join-Abfragen mit 2 oder mehr Tabellen in cassandra cql

Ich bin neu bei Cassandra. Hier habe ich zwei Tabellen EVENTS und TOWER. Ich muss mich diesen für einige Fragen anschließen. Aber ich bin nicht in der Lage, es zu tun.

Struktur der Tabelle EVENTS:

eid int PRIMARY KEY,
a_end_tow_id text,
a_home_circle text,
a_home_operator text,
a_imei text,
a_imsi text,

Struktur der Tabelle TOWER:

 tid int PRIMARY KEY,
 tower_address_1 text,
 tower_address_2 text,
 tower_azimuth text,
 tower_cgi text,
 tower_circle text,
 tower_id_no text,
 tower_lat_d text,
 tower_long_d text,
 tower_name text,

Jetzt möchte ich diese Tabelle in Bezug auf EID und TID verknüpfen, damit ich die Daten beider Tabellen abrufen kann.

27
BlueShark

Cassandra = Keine Beitritte. Ihr Modell ist zu 100% relational. Sie müssen es für Cassandra überdenken. Ich würde Ihnen raten, sich diese Folien anzuschauen. Sie beschäftigen sich intensiv mit der Modellierung von Daten für Cassandra. Auch hier ist ein Webinar zum Thema. Aber hör auf, an Fremdschlüssel zu denken und Tabellen zu verbinden, denn wenn du Relationen brauchst, ist cassandra nicht das Werkzeug für diesen Job.

Aber warum?
Da Sie dann die Konsistenz überprüfen und viele andere Aufgaben ausführen müssen, die relationale Datenbanken ausführen, verlieren Sie die Leistung und Skalierbarkeit, die cassandra) bietet.

Was kann ich tun?
DENORMALISIEREN! Viele Daten in einer Tabelle? Die Tabelle enthält jedoch zu viele Spalten!
So? Cassandra kann eine sehr große Anzahl von Spalten in einer Tabelle verarbeiten.

Sie können auch den Join in Ihrer Client-Anwendung simulieren. Passen Sie die beiden Datasets in Ihrem Code an, dies ist jedoch sehr langsam, da Sie alle Ihre Informationen durchlaufen müssen.

Eine andere Möglichkeit besteht darin, mehrere Abfragen durchzuführen. Wählen Sie das gewünschte Ereignis und dann den passenden Turm aus.

61
Lyuben Todorov

Es gibt verschiedene Möglichkeiten, Tabellen in Cassandra zu verknüpfen und abzufragen. Natürlich müssen Sie den Teil des Datenmodells überdenken.

  1. Verwenden Sie SparkSQL von Apache Spark ™ mit Cassandra (entweder Open Source oder in DataStax Enterprise - DSE).
  2. Verwenden Sie von DataStax bereitgestelltes ODBC Connectors mit Cassandra und DSE.
5
Mayank Raghav

PlayOrm ist eine gute Option für Joins auf skalierbaren Systemen mit einer speziellen Scalable SQL-Sprache, in der Sie Partitionen verbinden können (dh Sie möchten niemals 1 Milliarde Zeilen mit einer weiteren Milliarde Zeilen verbinden). Es enthält Tonnen von NoSQL-Mustern und ist eine völlige Abkehr von Ruhezustand und JPA, um NoSQL-Muster bei Bedarf mit clientseitigen Verknüpfungen nachzuahmen.

0
Dean Hiller