Speichern von Daten in Bigtables

Ein Bigtable hat Tabellen wie ein RDBMS tut, aber im Gegensatz zu einem RDBMS, ein Bigtable Tabellen haben in der Regel keine Beziehungen zu anderen Tabellen. Stattdessen wird komplexe Daten in einer einzigen Tabelle zusammengefasst.

Menu

Eine Tabelle in einem Bigtable besteht aus Gruppen von Säulen, genannt Spalte Familien, und eine Reihe Schlüssel. Diese ermöglichen zusammen schnelle Abfrage eines einzelnen Datensatzes von Daten in einem Bigtable gehalten.

Mit Reihe Tasten

Jede Zeile muss eindeutig identifiziert werden können. Dies ist, wo eine Reihe Schlüssel kommt in. Eine Reihe Schlüssel eine eindeutige Zeichenfolge verwendet einen einzelnen Datensatz in einer Bigtable zu verweisen. Sie können von ihnen denken, als verwandt mit einem Primärschlüssel zu sein oder eine Sozialversicherungsnummer für Bigtables mögen.

Viele Bigtables bieten keine gute Sekundärindizes (Indizes zu Spaltenwerte selbst), so dass eine Reihe Schlüssel entwerfen, die schnelle Abfrage von Datensätzen ermöglicht, ist von entscheidender Bedeutung für eine gute Leistung zu gewährleisten.

Ein gut # 8208 gestaltete Zeilenschlüssel ermöglicht eine Aufzeichnung ohne Ihre Anwendung lesen und überprüfen Sie die Anwendbarkeit der einzelnen Datensätze selbst zu haben, befinden. Es ist schneller für die Datenbank, dies zu tun.

Row Schlüssel werden auch von den meisten Bigtables gleichmäßig zu verteilen Datensätze zwischen Servern verwendet. Eine schlecht konzipierte Reihe Schlüssel wird in der Datenbank-Cluster Empfang mehr Last (Requests) als die anderen Server zu einem Server führen, Benutzer # 8208 sichtbare Leistung Ihrer gesamten Datenbank-Service zu verlangsamen.

Erstellen von Spalten Familien

Eine Spalte Familie ist eine logische Gruppierung von Spalten. Obwohl Bigtables erlauben zur Laufzeit in jeder Tabellendefinition unterstützt Sie die Anzahl der Spalten zu ändern, müssen Sie die Spalte erlaubt Familien vorne angeben. Diese können in der Regel nicht ohne den Server offline geändert werden. Als Beispiel kann ein Adressbuchanwendung eine Familie für Heimatadresse verwenden. Dies könnte enthalten die Spalten Adresszeile 1, Adresszeile 2, Kreis, Stadt, Landkreis, Staat, Land und Postleitzahl.

Nicht alle Adressen müssen Daten in allen Bereichen. Zum Beispiel Adresszeile 2, Fläche, und die Grafschaft oft leer sein kann. Auf der anderen Seite, können Sie Daten nur in Adresszeile 1 und Postleitzahl haben. Diese beiden Beispiele sind beide gut in der gleichen Heimatadresse Spalte Familie.

eine unterschiedliche Anzahl von Spalten hat seine Nachteile. Wenn Sie HBase wollen, zum Beispiel, um alle Spalten innerhalb einer bestimmten Familie aufzulisten, müssen Sie alle Zeilen durchlaufen die komplette Liste der Spalten zu erhalten! So müssen Sie den Überblick über Ihre Datenmodell mit einem Bigtable Klon in der Anwendung zu halten diese Leistungseinbußen zu vermeiden.

Mit Zeitstempel

Jeder Wert innerhalb einer Spalte kann in der Regel verschiedene Versionen speichern. Diese # 173-Versionen werden unter Verwendung eines Timestamp-Wert bezeichnet.

Werte werden nicht verändert - ein anderer Wert ist mit einem anderen Zeitstempel hinzugefügt. Um einen Wert zu löschen, fügen Sie einen Grabstein Marker auf den Wert, der im Grunde ist das Markieren, dass der Wert zu einem bestimmten Zeitpunkt gelöscht.

Alle Werte für die gleiche Zeilenschlüssel und Spalten Familie zusammen gespeichert, was bedeutet, dass alle Lookups oder Version Entscheidungen in einem einzigen Ort getroffen werden, in dem alle relevanten Daten gespeichert sind.

Umgang mit binären Werten

In Bigtables, Werte sind einfach Byte-Arrays. Beispielsweise können sie Text, Zahlen oder Bildern sein. Was haben Sie in ihnen gespeichert werden, bleibt Ihnen überlassen.

Nur wenige Bigtable Klone Unterstützung Wert # 8208-Typisierung. Hypertable zum Beispiel ermöglicht es Ihnen, Typen zu setzen und Sekundärindizes auf Werte hinzufügen. Cassandra ermöglicht es Ihnen, auch Typen für Werte zu definieren, aber das Angebot # 8208-Abfrage Indizes (weniger # 8208-als und größer # 8208-als-Operationen für jeden Datentyp) beschränken sich auf die Schlüsselsuchoperationen zu beschleunigen, nicht Wert Vergleichsoperationen.

Menü