Einführung in das Datenmodell in Cassandra
Apache Cassandra ist zu einer der leistungsstärksten NoSQL-Datenbanken geworden. Es ist die richtige Wahl, wenn Sie eine hohe Verfügbarkeit und Skalierbarkeit wünschen, ohne Kompromisse bei der Leistung eingehen zu müssen - insbesondere für Anwendungen, die es sich nicht leisten können, Daten zu verlieren. In diesem Thema lernen wir das Datenmodell in Cassandra kennen.
Es ist eine kurze Tatsache, dass Cassandra-Ingenieure heute zu den bestbezahlten Tech-Profis gehören. Unternehmen wie Netflix, Instagram und Apple setzen Cassandra ein, um ein hochgradig individualisiertes Kundenerlebnis zu bieten. Um die richtige Leistung zu erzielen, müssen Sie das für das Geschäftsproblem spezifische Schema sorgfältig entwerfen. In diesem Artikel befassen wir uns mit dem Cassandra-Datenmodell, das sich erheblich von dem unterscheidet, was wir in RDBMS sehen.
Cassandra-Datenmodellregeln
In einfachen Worten ist das Datenmodell die logische Struktur einer Datenbank. Es beschreibt, wie Daten gespeichert werden und auf welche Art von Daten zugegriffen wird, sowie die Beziehungen zwischen den verschiedenen Datentypen.
Die Auswahl des richtigen Datenmodells kann der schwierigste Teil bei der Verwendung einer NoSQL-Datenbank wie Cassandra sein. Wie bereits erwähnt, unterscheidet sich die Datenmodellierung in Cassandra von der in einem RDBMS.
Partitionsschlüssel und Clustering-Schlüssel sind die Begriffe, die jeder kennen sollte, der mit Cassandra zu tun hat. Bevor wir uns mit den Grundregeln der Datenmodellierung in Cassandra befassen, sollten wir uns kurz ansehen, was diese Begriffe bedeuten.
Trennwand
Cassandra ist eine verteilte Datenbank, in der Daten auf verschiedenen Knoten in einem Cluster partitioniert und gespeichert werden. Die Daten werden mithilfe eines Partitionsschlüssels aufgeteilt, der aus einem oder mehreren Datenfeldern bestehen kann. Dieser Partitionsschlüssel wird verwendet, um einen Hash-Mechanismus zu erstellen, mit dem Daten gleichmäßig auf alle Knoten verteilt werden.
Cluster
Ein Cluster ist eine Sammlung von Knoten, die eine einzelne logische Datenbank darstellen. Ein Clustering-Schlüssel besteht aus einem oder mehreren Feldern, die zum Gruppieren von Daten in einer Partition verwendet werden.
In dieser Tabelle "restaurants" werden die Daten unter Verwendung von country_code, state_name und city_name partitioniert. Innerhalb dieser Partition werden die Daten nach opening_data und restaurant_name gruppiert und sortiert.
Betrachten wir nun die beiden Regeln für die Datenmodellierung, die beachtet werden sollten.
- Die Daten werden gleichmäßig im Cluster verteilt
- Lesen Sie von so wenig Partitionen wie möglich
Schauen wir uns an, was diese Regeln zu vermitteln versuchen
- Wir wissen, was für ein Cluster richtig ist? Ein Cluster besteht aus mehreren Knoten. Wir möchten die Daten auf diese Knoten aufteilen, sodass jeder Knoten ungefähr dieselbe Datenmenge hat. Wie wir wissen, werden Daten mit einem Hash des Partitionsschlüssels (der der erste Schlüssel des Primärschlüssels ist) in verschiedene Knoten partitioniert. Kurz gesagt: „Sie sollten einen guten Primärschlüssel auswählen“.
- Jede Partition befindet sich auf einem anderen Knoten. Wenn Sie also Daten abrufen, möchten Sie sicherstellen, dass die Daten von so wenig Partitionen wie möglich abgerufen werden. Wenn für Ihre Abfrage Daten aus verschiedenen Partitionen erforderlich sind, wird ein Befehl an verschiedene Knoten gesendet, um diese Daten abzurufen. Dies ist mit einem Mehraufwand verbunden und führt zu einer Latenz.
Der Schlüssel zu einem effizienten Datenmodell wäre ein Gleichgewicht zwischen diesen beiden Regeln.
Behandeln Sie Beziehungen in Cassandra
Beachten Sie, dass die Datenmodellierung in Cassandra im Gegensatz zu RDBMS, bei dem Sie zuerst Entitäten identifizieren, Tabellen erstellen und dann mithilfe von JOINS Abfragen erstellen, um Daten abzurufen, mithilfe eines abfragebasierten Ansatzes erfolgt.
Um es in einfachen Worten auszudrücken, wir modellieren nicht um Relationen oder Objekte, wir modellieren um Abfragen.
1. Eins zu Eins Beziehung
Bedenken Sie, dass sich ein Student an einer Universität nur für ein Seminar anmelden kann. Dies ist eine Eins-zu-Eins-Beziehung. Wenn wir die Regel 1 einhalten, denken wir an die Abfragen, die wir wollen. Ich möchte nach dem Seminar suchen, an dem ein Student teilnimmt. In diesem Fall machen wir nur einen Tisch. Die Tabelle sollte die Schüler- und Seminardetails enthalten.
2. Eine zu viele Beziehung
Was wäre, wenn ich im selben Kontext nach allen Studenten suchen wollte, die an einem Seminar teilnehmen? Anstatt dieselbe Tabelle zu verwenden und die einzelnen Zeilen zu durchlaufen, um den Schülernamen für das jeweilige Seminar zu ermitteln, kann eine andere Tabelle erstellt werden, in der die Daten nach Seminarnamen unterteilt werden. Wenn ich also die Abfrage stelle, trifft sie nur einen Knoten und nicht alle Knoten, um den Seminarnamen abzurufen.
3. Viele zu viele Beziehung
Nehmen wir an, ein Student kann an vielen Seminaren teilnehmen, und ein Seminar kann von vielen Studenten besucht werden. Hier haben wir viele zu viele Beziehungen. In diesem Fall können Sie die beiden oben genannten Tabellen ausnutzen, um Abfragen zu erstellen, ohne den Aufwand für das Erstellen komplexer Abfragen mithilfe von Joins zu haben, wie Sie dies normalerweise in RDBMS tun würden.
Bedeutung von Cassandra
Mit der schnellen Erweiterung digitaler Daten wird es immer wichtiger, eine hoch skalierbare, fehlertolerante Datenbank zu haben. Lassen Sie mich einige Punkte auflisten, warum Sie Cassandra verwenden sollten
- Schnelle Lesevorgänge beleuchten: Wir haben diskutiert, wie durch die korrekte Modellierung Ihrer Daten Lesevorgänge massiv optimiert werden können.
- Fehlertolerant: Daten werden knotenübergreifend repliziert, sodass Ihre Daten auch dann sicher sind, wenn ein Knoten ausfällt.
- Benutzerdefiniertes Tuning: Sie können Cassandra so einrichten, dass es entsprechend Ihrer Arbeitsbelastung funktioniert. Wenn Sie viele Daten schreiben, wie z. B. Protokollierung, können Sie diese optimieren, um schreibintensive Systeme zu handhaben. Es gibt mehrere andere Tuning-Optionen.
- Umgang mit hohen Datenmengen: Aufgrund der Clustergröße kann Cassandra mit den großen Datenmengen umgehen.
Wie modelliere ich die Daten in Cassandra?
Eine gute Datenmodellierung folgt diesen Schritten
- Stellen Sie die für Ihre Anwendung erforderlichen Abfragen zusammen
- Erstellen von Tabellen, um diese Abfragen zu erfüllen
Bevor wir diese Regeln anwenden, ist Folgendes zu beachten: „Wir konzentrieren uns darauf, unsere Lesevorgänge zu optimieren, auch wenn Daten dupliziert werden müssen.“ Wir können viele Tabellen haben, die möglicherweise fast ähnliche Daten enthalten.
Angenommen, wir möchten eine Datenbank, in der Informationen zu Restaurants gespeichert werden. Stellen wir uns die Einschränkung, dass Restaurantnamen eindeutig sein müssen.
Die folgende Tabelle kann verwendet werden, wenn wir nach dem Namen des Restaurants suchen möchten:
Wenn wir nun die Restaurants für einen bestimmten Ort suchen möchten, schreiben wir eine Abfrage, die alle Zeilen durchläuft und die Restaurantnamen abruft.
Unter Berücksichtigung der Regel 2 können wir stattdessen problemlos eine weitere Tabelle erstellen, die unseren Anforderungen entspricht.
Jetzt werden unsere Daten so partitioniert, dass ein Knoten im Cluster über Restaurants für einen bestimmten Standort verfügt. Dies optimiert unsere Leseabfragen, da die Abfragesuche nur auf einem Knoten mit viel weniger Zeilen als in der ersten von uns erstellten Tabelle ausgeführt wird.
Was ist, wenn wir Restaurants in einer bestimmten Stadt suchen möchten, können wir eine andere Tabelle erstellen, anstatt alle Zeilen in einer einzelnen Partition der obigen Tabelle zu durchlaufen.
Fazit
In diesem Artikel habe ich einige bewährte Methoden vorgestellt, die Sie zum Vorgehen bei der Datenmodellierung in Cassandra befolgen können. Wenn Sie diese Konzepte verstehen und die Art der Abfragen, die Ihre Anwendung benötigt, effizient erkennen können, können Sie ein hervorragendes Datenmodell entwerfen, um eine hohe Leistung Ihrer Datenbank zu erzielen.
Empfohlene Artikel
Dies ist eine Anleitung zum Datenmodell in Cassandra. In diesem Abschnitt wird erläutert, wie Sie unsere Daten in Cassandra modellieren und dabei die Regeln und die Bedeutung von Cassandra-Datenmodellen berücksichtigen. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -
- Was ist Datenmodellierung?
- Datenmodelle im DBMS
- Fragen im Vorstellungsgespräch zur Datenmodellierung
- Cassandra Datenmodellierung