Googles Cloud-Spanner: how does it stack up?

0
170

0

Vor ein paar Monaten schrieb ich einen in-depth-Stück auf der Microsoft-Kosmos DB, was Redmond ‘ s Einstieg in die Welt Global verteilten cloud-Datenbanken. Die Ankündigung des Kosmos DB Allgemeinen Verfügbarkeit (GA) erfolgte in Abstimmung mit der Unternehmens-Build-event, der im Mai stattfand. In der folgenden Woche kündigte Google, dass die GA von Cloud-Maulschlüssel, einen Global verteilten operativen Datenbank der eigenen.

Lesen Sie auch: Inside Microsoft ‘ s Kosmos DB
Lesen Sie auch: Microsoft debuts Azure Kosmos DB, eine Obermenge von Ihr DocumentDB-Dienst
Lesen Sie auch: Google Cloud Spanner allgemein verfügbar

Wegen der Zusammenfluss von diesen Ankündigungen, die von zwei der drei führenden public-cloud-providers, und ich dachte, es würde nützlich sein, zu Folgen, bis mein Kosmos DB Abdeckung mit Abdeckung für Cloud-Maulschlüssel, war von ähnlichem Umfang und Tiefe. Fügen Sie in einem briefing auf Spanner von Google Cloud Director of Product Management-Dominic Preuß, Google war so freundlich genug zu bieten, und es war ein slam-dunk. Also lasst uns gehen.

Wettbewerbsfähige Vergleiche
Lassen Sie uns zunächst besprechen, wie Spanner vergleicht-und wie es nicht, — zu konkurrierenden angeboten aus dem Amazon-und Microsoft-cloud-Plattformen. Dies ist mehr über unser Lager aus, als die Bereitstellung einer Wettbewerbsanalyse.

Das erste, was zu verstehen, über Spanner ist, dass es eine relationale Datenbank, ausgerichtet auf die operative OLTP – (online transactional processing) – workloads mit voller ACID (Atomarität, Konsistenz, isolation und Dauerhaftigkeit) – Funktionalität. Spanner ist nicht ein einfaches scale-up relationalen Datenbank-service-das ist, wo Google Cloud SQL. Spanner ist nicht ein data-warehouse; Google BigQuery ist entworfen, um Arbeitsauslastungen. Und es ist nicht eine NoSQL-Datenbank, entweder, wie BigTable von Google bietet es auch.

So Strich kontrastiert stark mit Amazon DynamoDB ist ein NoSQL-Datenbank, die Beschäftigung von so genannten “eventual consistency” und Microsoft ‘ s Kosmos DB, auch eine NoSQL-Datenbank, und eine, die konfigurierbar ist, zusammen mit dem vollen Spektrum von Konsistenz-Modelle, reicht eine SÄURE bilden Modell an einem Ende, um eventuelle Konsistenz auf der anderen, und zwei weitere Konsistenz-Modelle dazwischen.

Analysen, zu
Und obwohl Schraubenschlüssel ist relational und konzipiert für OLTP, es kann auch mit in-database-operational analytics. Mit all das im Hinterkopf, macht es mehr Sinn, zu vergleichen, Strich Azure SQL-Datenbank oder Amazon Relational Database Service (RDS), die sind beide voll relationale, ACID-konform und bieten eine Ebene der operationellen Analysen selbst.

Aber wenn die relationale/SÄURE-Affinität verführt Sie zu vergleichen, Strich Azure SQL-Datenbank und Amazon RDS, es ist nicht so einfach. Warum? Weil — wie die Google-eigenen Cloud-SQL — SQL-DB und RDS sind cloud-Inkarnationen der lokalen Datenbank-management-Systeme, in der Erwägung, dass Spanner wurde entwickelt für die cloud. Und Kosmos DB und DynamoDB waren zu.

Und obwohl Schraubenschlüssel verwendet SQL für die Abfrage und Datendefinition (erstellen von Tabellen und dergleichen), nicht für Daten-manipulation – /schreib-Operationen. Stattdessen beschäftigt es eine “mutation” – API, die syntax für die mehr-Objekt-relationales mapping (ORM)-wie und Eigentum orientierte, als es ist, basiert. Das ist ein weiterer Punkt, das unterscheidet Sie von Diensten wie Azure SQL-DB und Amazon RDS. Also äpfel mit äpfeln Vergleiche sind schwer zu fassen.

Genesis
Die in-house-version von Spanner wurde ursprünglich von Google verarbeiten workloads wie AdWords und Google Play, die dabei waren, laut Google, zuvor ausgeführt, die auf massiven, manuell sharded MySQL-Implementierungen. Das problem mit diesen Implementierungen war die manuelle Splitter-während es zur Verfügung gestellt Google mit scale-out-Mechanismus, die MySQL nicht nativ unterstützen, es war unhandlich; so sehr, dass re-Splitter der Datenbank wurde ein multi-Jahres-Prozess.

Google benötigt eine Datenbank, hatte native, flexibel, Splitter-Funktionen, eingehalten relationale schema und Speicherung, war ACID-konform und unterstützt zero-downtime. Da eine solche Datenbank nicht existiert, wird Google ein eigenes erstellt, und die ursprüngliche Spanner war geboren. Jetzt, nach fast 10 Jahren des Kampfes-Test das Produkt in-house -, Google Cloud-Maulschlüssel, eine öffentliche API vor, die gleiche Technologie, die allgemein verfügbar sind.

Nachdem Sie Ihre scale-out -, und Essen Sie Ihre SÄURE, auch
Trotz der auto-Splitter, Spanner bald Unterstützung von cross-region-Transaktionen. Wenn Sie all das tun können, warum dann nicht herkömmliche relationale Datenbanken? Und warum sind die traditionellen Plattformen basieren auf einer scale-up-Modell, während die Spanner ist für horizontales skalieren, aber behält noch die andere herkömmliche Merkmale von relationalen Datenbank-Systemen? Wie sind Spanner Kunden in der Lage, “beides haben?”

Der große Grund ist die Möglichkeit Transaktionen ein commit ausgeführt werden. Traditionelle Systeme, wenn geografisch verteilte, muss ein Protokoll, bekannt als two-phase-commit, der nicht abgeschlossen werden kann, bis jede Seite endet an der eigenen Arbeit. Aber Strich macht jede Website ein vollständiges Replikat der anderen und verwendet einen Paxos consensus-Algorithmus, um einen commit für eine Transaktion, wenn eine Mehrheit der Websites, die mit Ihrer Arbeit fertig sind. Die Benutzer einer bestimmten Website, die noch nicht selbst aktualisieren abgeschlossen ist, weitergeleitet werden können, um eine Website, die hat, bis zu Ihrer eigenen Website ist getan. Das führt einige zusätzliche Wartezeit für bestimmte Benutzer in bestimmten Intervallen, aber es beseitigt den Stillstand, die standard-Datenbanken auseinandersetzen müssen mit dem bei der Konfiguration in einer verteilten Weise.

Aber warten Sie, es gibt noch mehr…
Paxos/Konsens ist der Schlüssel um alles zu funktionieren, aber die anderen tricks, wie optimierte Netzwerk-und hardware, sowie andere software-tricks, die auch helfen. Zum Beispiel, wenn Daten gesperrt, während schreib-Operationen, Spanner hat nur sperren von Zellen (eine Zelle ist die bestimmte Spalte in einer bestimmten Zeile) eher als ganze Zeilen. Dies minimiert Konflikte und beschleunigt die Transaktion Engagement, während immer noch die Gewährleistung der vollen Konsistenz der Datenbank. Auch etwas ältere Versionen der Daten kann zur Verfügung gestellt werden für nur-lese-Operationen, die eine gewisse Toleranz für “veraltete” Daten, wodurch Konflikte noch weiter.

Ein anderer Weg Spanner Beschleunigung ist durch die Speicherung werden die child-Daten-die in herkömmlichen Datenbanken werden in separate, verknüpfte Tabelle, so dass es physikalisch vermischten Gegenstände mit übergeordneten Daten. Dies ermöglicht Abfragen für hierarchische Daten (wie Bestellungen und Ihre Werbebuchungen) zu Scannen und auf einen Schlag ist nicht erforderlich, die Datenbank zu durchqueren, eine join-Beziehung zwischen den beiden.

Während also das CAP-theorem besagt, dass eine Datenbank, die partition-tolerant und consistent nicht auch hoch einvailable, Maulschlüssel kann “schummeln”, dass theorem (in einer guten Weise) durch Optimierungen, die nebeneinander treten einige der normalen Einschränkungen, die durch verteilte Datenbanken.

Entwickler, Entwickler
Spanner ist sehr Entwickler-freundlich, mit einem JDBC-Treiber und Software Development Kits (SDKs) für Sprachen wie Java, Python, Node.js und andere, die beliebt bei open-source-stack-Entwickler.

Für diejenigen, die in der Microsoft -/.NETTO-camp, einem ODBC-Treiber und ein SDK C# sind in der pipeline. Das wird helfen, Spanner konkurrieren mehr robust gegen Azure Kosmos DB, SQL-Datenbank und SQL Data Warehouse sowie Amazon RDS -, alle sind sehr Microsoft-stack freundlich. Auch Amazon DynamoDB-service hat .NET-Unterstützung, so dass Spanner die ODBC-und C# – Unterstützung kann nicht schnell genug gehen.

Und jetzt alle zusammen
Wieder, obwohl, das sind nicht äpfel mit äpfeln Vergleiche, die Google cloud-stack entwickelt entlang verschiedener Achsen als die AWS und Azure lieben. Eine dieser Achsen betrifft inter-service-integration. Zum Beispiel, Google BigQuery unterstützt die gleichen SQL-Dialekt als Spanner. Und während die Azure-SQL-Datenbank und SQL Data Warehouse-beide verwenden Microsoft Transact-SQL, Kosmos-DB-SQL-Dialekt unterscheidet. Auf der Amazon Seite, DynamoDB gar nicht bieten native SQL-Unterstützung.

Die Google-integration geht über die SQL-Dialekte, obwohl. Zum Beispiel, BigQuery unterstützt Föderierte Abfragen über die eigenen Daten, ebenso wie BigTable und Dateien in Google Drive. Und während Spanner Tabellen nicht an diese Föderierte Abfragen heute, ich wäre nicht überrascht, wenn das geändert.

Wählen Sie Ihre Datenbank
Also welche Datenbank ist die richtige für Ihre Anwendung? Da das versetzen von Daten ist teuer, viel wird davon abhängen, wo Sie Ihre Daten heute ist. Und da viele Unternehmen haben eine Menge der gespeicherten Daten in Amazon Simple Storage Service (S3), AWS hat die power of incumbency.

Inzwischen werden die fans des relationalen Modells, die brauchen eine Global verteilte Datenbank, vielleicht finden Spanner bietet eine unwiderstehliche Kombination dieser Dinge. Kunden, die sehr fokussiert auf service-level-agreements (SLAs), die aus Gründen der compliance oder der SLAs, die Sie benötigen, zu bieten, Ihre eigenen Kunden finden kann Kosmos DB value proposition es übertrumpft den anderen beiden.

Egal welchen Weg die Kunden gehen, obwohl, Sie sind in einer guten position. Durch die Kombination von DynamoDB, Kosmos-DB-und Spanner, alle drei Internet-Giganten bieten kundenorientierte Versionen der weltweit verteilten Datenbank-Dienste, die Sie sich verlassen für first-party-Angebote. Mit, dass als Basis ist der Wettbewerb (und werden weiterhin) heftig, und der Kunde gewinnt.

0