Von Apache Cassandra zu Bigtable migrieren
In diesem Dokument wird beschrieben, wie Sie Daten von Apache Cassandra zu Bigtable migrieren können, ohne dass es zu größeren Unterbrechungen kommt. Darin wird beschrieben, wie Sie Open-Source-Tools wie den Cassandra-zu-Bigtable-Proxy-Adapter oder den Cassandra-zu-Bigtable-Client für Java verwenden, um die Migration durchzuführen. Machen Sie sich zuerst mit Bigtable für Cassandra-Nutzer vertraut.
Proxy-Adapter für Cassandra für Bigtable
Mit dem Cassandra-zu-Bigtable-Proxyadapter können Sie Cassandra-basierte Anwendungen mit Bigtable verbinden. Der Proxy-Adapter fungiert als drahtkompatible Cassandra-Schnittstelle und ermöglicht Ihrer Anwendung die Interaktion mit Bigtable über die Cassandra-Abfragesprache (Cassandra Query Language, CQL). Wenn Sie den Proxy-Adapter verwenden, müssen Sie keine Cassandra-Treiber ändern und die Konfigurationsanpassungen sind minimal.
Informationen zum Einrichten und Konfigurieren des Proxy-Adapters finden Sie unter Cassandra-zu-Bigtable-Proxy-Adapter.
Informationen dazu, welche Cassandra-Versionen den Proxy-Adapter unterstützen, finden Sie unter Unterstützte Cassandra-Versionen.
Cassandra-Schlüsselbereich
In einem Cassandra-Schlüsselraum werden Ihre Tabellen gespeichert und Ressourcen werden ähnlich wie in einer Bigtable-Instanz verwaltet. Der Proxy-Adapter für die Migration von Cassandra zu Bigtable verarbeitet die Benennung von Schlüsselbereichen transparent, sodass Sie Abfragen mit denselben Schlüsselbereichen ausführen können. Sie müssen jedoch eine neue Bigtable-Instanz erstellen, um Ihre Tabellen logisch zu gruppieren. Sie müssen die Bigtable-Replikation auch separat konfigurieren.
Unterstützte Datentypen
In der folgenden Tabelle sehen Sie, wie unterstützte Cassandra CQL-Datentypen ihren Bigtable-Entsprechungen zugeordnet werden.
CQL-Typ | Bigtable-Zuordnung |
---|---|
text |
RAW BYTES |
blob |
RAW BYTES |
timestamp |
RAW BYTES |
int |
RAW BYTES |
bigint |
RAW BYTES |
float |
RAW BYTES |
double |
RAW BYTES |
boolean |
RAW BYTES |
MAP<key, value> |
Der Spaltenname in Cassandra wird als Name der Spaltenfamilie in Bigtable verwendet. Der key der Map wird als Spaltenqualifizierer verwendet und der value der Map wird als Zellwert gespeichert. |
SET<item> |
Der Spaltenname in Cassandra wird als Name der Spaltenfamilie in Bigtable verwendet. Jeder item im SET wird als Spaltenqualifizierer verwendet und der Zellenwert bleibt leer. |
LIST<item> |
Der Spaltenname in Cassandra wird als Name der Spaltenfamilie in Bigtable verwendet. Der aktuelle Zeitstempel wird als Spaltenqualifizierer verwendet und die Listenelemente werden als Zellwert gespeichert. |
Weitere Informationen zum Zuordnen von Datentypen in Bigtable finden Sie unter GoogleSQL für Bigtable – Übersicht.
Nicht unterstützte Datentypen
Die folgenden Cassandra-Datentypen werden nicht unterstützt:
counter
date
decimal
duration
frozen
inet
smallint
time
timeuuid
tinyint
US-ASCII
user-defined
-Typen (UDT)uuid
varint
DDL-Unterstützung
Der Proxy-Adapter für Cassandra zu Bigtable unterstützt DDL-Vorgänge (Data Definition Language). Mit DDL-Vorgängen können Sie Tabellen direkt über CQL-Befehle erstellen und verwalten. Wir empfehlen diesen Ansatz zum Einrichten Ihres Schemas, da er SQL ähnelt, Sie Ihr Schema aber nicht in Konfigurationsdateien definieren und dann Skripts zum Erstellen von Tabellen ausführen müssen.
Die folgenden Beispiele zeigen, wie der Proxy-Adapter für die Migration von Cassandra zu Bigtable DDL-Vorgänge unterstützt:
Führen Sie den Befehl
CREATE TABLE
aus, um eine Cassandra-Tabelle mit CQL zu erstellen:CREATE TABLE keyspace.table ( id bigint, name text, age int, PRIMARY KEY ((id), name) );
Führen Sie den Befehl
ALTER TABLE
aus, um der Tabelle eine neue Spalte hinzuzufügen:ALTER TABLE keyspace.table ADD email text;
Führen Sie den Befehl
DROP TABLE
aus, um eine Tabelle zu löschen:DROP TABLE keyspace.table;
Weitere Informationen finden Sie unter DDL-Unterstützung für die Schemaerstellung (empfohlene Methode).
DML-Unterstützung
Der Proxy-Adapter für Cassandra zu Bigtable unterstützt DML-Vorgänge (Data Manipulation Language, Datenbearbeitungssprache) wie INSERT
, DELETE
, UPDATE
und SELECT
.
Damit die DML-Rohabfragen ausgeführt werden können, müssen alle Werte außer numerischen Werten in einfache Anführungszeichen gesetzt werden, wie in den folgenden Beispielen gezeigt:
SELECT * FROM keyspace.table WHERE name='john doe';
INSERT INTO keyspace.table (id, name) VALUES (1, 'john doe');
Migration ohne Ausfallzeiten
Verwenden Sie den Cassandra-zu-Bigtable-Proxy-Adapter mit dem Open-Source-ZDM-Proxy-Tool (Zero Downtime Migration) und dem Cassandra-Datenmigrator, um Daten mit minimaler Ausfallzeit zu migrieren.
Das folgende Diagramm zeigt die Schritte für die Migration von Cassandra zu Bigtable mit dem Proxy-Adapter:


So migrieren Sie Cassandra zu Bigtable:
- Verbinden Sie Ihre Cassandra-Anwendung mit dem ZDM-Proxy-Tool.
- Aktivieren Sie Dual-Writes für Cassandra und Bigtable.
- Verschieben Sie Daten mit dem Tool Cassandra Data Migrator in großen Mengen.
- Migration validieren Nach der Validierung können Sie die Verbindung zu Cassandra beenden und direkt eine Verbindung zu Bigtable herstellen.
Wenn Sie den Proxy-Adapter mit dem ZDM-Proxy-Tool verwenden, werden die folgenden Migrationsfunktionen unterstützt:
- Duale Schreibvorgänge: Datenverfügbarkeit während der Migration aufrechterhalten
- Asynchrone Lesevorgänge: Bigtable-Instanz skalieren und Stresstests durchführen
- Automatisierte Datenüberprüfung und Berichterstellung: Datenintegrität während des gesamten Prozesses sicherstellen
- Datenzuordnung: Felder und Datentypen zuordnen, um Produktionsstandards zu erfüllen
Wenn Sie die Migration von Cassandra zu Bigtable üben möchten, sehen Sie sich das Codelab zur Migration von Cassandra zu Bigtable mit einem Dual-Write-Proxy an.
Cassandra-zu-Bigtable-Client für Java
Wenn Sie Bigtable direkt einbinden und Ihre Cassandra-Treiber ersetzen möchten, können Sie mit der Cassandra-zu-Bigtable-Clientbibliothek für Java Cassandra-basierte Java-Anwendungen mit CQL in Bigtable einbinden.
Eine Anleitung zum Erstellen der Bibliothek und zum Einbinden der Abhängigkeit in den Anwendungscode finden Sie unter Cassandra to Bigtable Client for Java.
Im folgenden Beispiel wird gezeigt, wie Sie Ihre Anwendung mit dem Cassandra-zu-Bigtable-Client für Java konfigurieren:
Zusätzliche Cassandra-Open-Source-Tools
Die Wire-Kompatibilität des Cassandra-zu-Bigtable-Proxy-Adapters mit CQL ermöglicht es Ihnen, zusätzliche Tools im Cassandra-Open-Source-Ökosystem zu verwenden. Dazu gehören:
- Cqlsh: Mit der CQL-Shell können Sie über den Proxy-Adapter direkt eine Verbindung zu Bigtable herstellen. Sie können es für das Debugging und schnelle Datensuchen mit CQL verwenden.
- Cassandra Data Migrator (CDM): Dieses Spark-basierte Tool eignet sich für die Migration großer Mengen (bis zu Milliarden von Zeilen) von Verlaufsdaten. Das Tool bietet Validierungs-, Differenzberichts- und Wiedergabefunktionen und ist vollständig mit dem Proxy-Adapter kompatibel.