{"id":69568,"date":"2020-02-20T15:24:23","date_gmt":"2020-02-20T12:24:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/google-cloud-spanner-horoshij-plohoj-zloj"},"modified":"2020-03-03T16:14:50","modified_gmt":"2020-03-03T13:14:50","slug":"google-cloud-spanner-horoshij-plohoj-zloj","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","title":{"rendered":"Google Cloud Spanner: gut, schlecht, h\u00e4sslich","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hallo Hubber. Wie gewohnt teilen wir spannende Inhalte in der Vorfreude auf die neuen Kurse. Heute haben wir speziell f\u00fcr Sie einen Artikel \u00fcber Google Cloud Spanner \u00fcbersetzt, der die Einf\u00fchrung unseres Kurses begleitet. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">\u201eAWS f\u00fcr Entwickler\u201c<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: gut, schlecht, h\u00e4sslich\" src=\"\/wp-content\/uploads\/2020\/02\/b27b8a09543d10b078480c317553ca46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Urspr\u00fcnglich ver\u00f6ffentlicht in <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lightspeedhq.com\/blog\/\">dem Blog von Lightspeed HQ<\/a><\/noindex>.<\/i><\/p>\n<p>Als Unternehmen, das eine Vielzahl von Cloud-POS-L\u00f6sungen f\u00fcr Einzelh\u00e4ndler, Gastronomen und Online-Verk\u00e4ufer weltweit anbietet, verwendet Lightspeed verschiedene Arten von Datenbankplattformen f\u00fcr zahlreiche transaktionale, analytische und Suchanwendungen. Jede dieser Datenbankplattformen hat ihre eigenen St\u00e4rken und Schw\u00e4chen. Als Google Cloud Spanner mit vielversprechenden Funktionen auf den Markt kam, die in der Welt relationaler Datenbanken bislang unbekannt waren \u2013 wie nahezu unbegrenzte horizontale Skalierbarkeit und ein SLA von 99,999 % \u2013 konnten wir uns die Gelegenheit nicht entgehen lassen, es in unsere H\u00e4nde zu bekommen!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nUm Ihnen einen umfassenden \u00dcberblick \u00fcber unsere Erfahrungen mit Cloud Spanner sowie die Bewertungsma\u00dfst\u00e4be, die wir verwendet haben, zu geben, betrachten wir die folgenden Themen:<\/p>\n<ol>\n<li>Unsere Bewertungsma\u00dfst\u00e4be<\/li>\n<li>Cloud Spanner in K\u00fcrze<\/li>\n<li>Unsere Bewertung<\/li>\n<li>Unsere Schlussfolgerungen<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Google Cloud Spanner: gut, schlecht, h\u00e4sslich\" src=\"\/wp-content\/uploads\/2020\/02\/29ed599362fb189283faa9215c18297a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>1. Unsere Bewertungsma\u00dfst\u00e4be<\/h2>\n<p>\nBevor wir uns mit den Besonderheiten von Cloud Spanner sowie deren Gemeinsamkeiten und Unterschieden zu anderen L\u00f6sungen auf dem Markt befassen, lassen Sie uns zun\u00e4chst die Hauptanwendungsf\u00e4lle besprechen, die wir im Zusammenhang mit der Bereitstellung von Cloud Spanner in unserer Infrastruktur betrachtet haben:<\/p>\n<ul>\n<li>Als Ersatz f\u00fcr (das dominante) traditionelle SQL-Datenbankl\u00f6sungen<\/li>\n<li>Als OLTP-L\u00f6sung mit OLAP-Unterst\u00fctzung<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>Hinweis:<\/b> Zur Vereinfachung und besseren Vergleichbarkeit vergleicht dieser Artikel Cloud Spanner mit MySQL-Varianten aus den GCP Cloud SQL-Familien und Amazon AWS RDS.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h4>Einsatz von Cloud Spanner als Ersatz f\u00fcr traditionelle SQL-Datenbankl\u00f6sungen<\/h4>\n<p>\nIn einer Umgebung <i>traditioneller <\/i>Datenbanken, wenn die Antwortzeiten auf Datenbankanfragen die festgelegten Schwellenwerte der Anwendung erreichen oder sogar \u00fcberschreiten (haupts\u00e4chlich aufgrund einer steigenden Anzahl von Benutzern und\/oder Anfragen), gibt es verschiedene Ans\u00e4tze, um die Antwortzeiten auf ein akzeptables Niveau zu senken. Die meisten dieser L\u00f6sungen erfordern jedoch manuelles Eingreifen.<\/p>\n<p>Ein erster Schritt besteht darin, die verschiedenen Leistungsparameter der Datenbank zu \u00fcberpr\u00fcfen und sie so anzupassen, dass sie optimal zu den Anwendungsszenarien passen. Wenn dies nicht ausreicht, kann man sich f\u00fcr vertikales oder horizontales Scaling der Datenbank entscheiden.<\/p>\n<p>Beim vertikalen Skalieren einer Anwendung wird die Serverinstanz normalerweise durch das Hinzuf\u00fcgen von mehr Prozessoren\/Kernen, mehr RAM, schnellerem Speicher usw. aktualisiert. Durch die Hinzuf\u00fcgung weiterer Hardware-Ressourcen wird die Datenbankleistung erh\u00f6ht, typischerweise gemessen an der Anzahl der Transaktionen pro Sekunde sowie der Transaktionslatenz f\u00fcr OLTP-Systeme. Relationale Datenbanksysteme, die einen Multi-Threading-Ansatz verwenden, wie MySQL, skalieren gut vertikal.<\/p>\n<p>Dieser Ansatz hat einige Nachteile, aber der offensichtlichste ist die maximale Servergr\u00f6\u00dfe auf dem Markt. Sobald die Grenze des gr\u00f6\u00dften Server-Instances erreicht ist, bleibt nur noch der Weg des horizontalen Skalierens.<\/p>\n<p>Horizontales Skalieren ist ein Ansatz, bei dem weitere Server zum Cluster hinzugef\u00fcgt werden, um idealerweise die Leistung linear mit der Anzahl der Server zu steigern. Die meisten <i>traditioneller <\/i>Datenbanksysteme skalieren schlecht horizontal oder gar nicht. Zum Beispiel kann MySQL f\u00fcr Leseoperationen horizontal skalieren, indem slave-Reader hinzugef\u00fcgt werden, aber nicht f\u00fcr Schreiboperationen.<\/p>\n<p>Auf der anderen Seite kann Cloud Spanner aufgrund seiner Natur problemlos horizontal mit minimalem Aufwand skalieren.<\/p>\n<p>Vollwertige<i> Datenbank als Dienst<\/i> sollte aus verschiedenen Perspektiven bewertet werden. Als Grundlage haben wir die beliebteste Cloud-Datenbank genommen \u2013 Google, GCP Cloud SQL und f\u00fcr Amazon, AWS RDS. In unserer Bewertung haben wir uns auf folgende Kategorien konzentriert:<\/p>\n<ul>\n<li>Feature-Vergleich: SQL-Extent, DDL, DML; Verbindungsbibliotheken\/Kontaktoren, Unterst\u00fctzung f\u00fcr Transaktionen und mehr.<\/li>\n<li>Entwicklungsunterst\u00fctzung: Einfachheit in der Entwicklung und im Testen.<\/li>\n<li>Administrationsunterst\u00fctzung: Verwaltung von Instanzen \u2013 etwa Hoch- und Herunterskalierung sowie Upgrade von Instanzen; SLA, Backup und Wiederherstellung; Sicherheit\/Zugriffskontrolle.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Nutzung von Cloud Spanner als OLTP-L\u00f6sung mit OLAP-Unterst\u00fctzung<\/h4>\n<p>\nObwohl Google nicht ausdr\u00fccklich behauptet, dass Cloud Spanner f\u00fcr analytische Verarbeitung gedacht ist, teilt es einige Attribute mit anderen Mechanismen wie Apache Impala &amp; Kudu und YugaByte, die f\u00fcr OLAP-Workloads konzipiert sind.<\/p>\n<p>Selbst wenn es nur eine geringe Wahrscheinlichkeit g\u00e4be, dass Cloud Spanner eine konsistente, horizontal skalierbare HTAP-Engine (Hybrid Transactional\/Analytical Processing) mit einem (mehr oder weniger) brauchbaren Funktionsset f\u00fcr OLAP integriert hat, glauben wir, dass dies unsere Aufmerksamkeit verdient.<\/p>\n<p>In diesem Sinne haben wir die folgenden Kategorien betrachtet:<\/p>\n<ul>\n<li>Datenladen, Indizes und Unterst\u00fctzung f\u00fcr Partitionierung<\/li>\n<li>Abfrageleistung und DML<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Cloud Spanner in K\u00fcrze<\/h2>\n<p>\nGoogle Spanner ist ein verteiltes relationales Datenbankmanagementsystem (RDBMS), das Google f\u00fcr mehrere seiner eigenen Dienste verwendet. Google hat es Anfang 2017 f\u00fcr Nutzer der Google Cloud Platform \u00f6ffentlich zug\u00e4nglich gemacht.<\/p>\n<p>Hier sind einige der Eigenschaften von Cloud Spanner:<\/p>\n<ul>\n<li>Stark konsistente, skalierbare RDBMS-Cluster: Nutzt hardwarebasierte Zeitsynchronisation zur Gew\u00e4hrleistung der Datenkonsistenz.<\/li>\n<li>Unterst\u00fctzung f\u00fcr transaktionale Operationen \u00fcber mehrere Tabellen hinweg: Transaktionen k\u00f6nnen mehrere Tabellen einbeziehen und sind nicht auf eine einzige Tabelle beschr\u00e4nkt (im Gegensatz zu Apache HBase oder Apache Kudu).<\/li>\n<li>Tabellen basierend auf Prim\u00e4rschl\u00fcsseln: Alle Tabellen m\u00fcssen einen definierten Prim\u00e4rschl\u00fcssel (PK) aufweisen, der aus mehreren Spalten bestehen kann. Tabellendaten werden in der Reihenfolge des PK gespeichert, was die Suche nach dem PK sehr effizient und schnell macht. Wie bei anderen PK-basierten Systemen sollte die Implementierung mit Bedacht auf vordefinierte Anwendungsf\u00e4lle geplant werden, um <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/schema-and-data-model\">die beste Leistung zu erzielen.<\/a><\/noindex>.<\/li>\n<li>Wechselnde Tabellen: Tabellen k\u00f6nnen physische Abh\u00e4ngigkeiten zueinander aufweisen. Die Zeilen der Kindertabelle k\u00f6nnen den Zeilen der Elterntabelle zugeordnet werden. Dieser Ansatz beschleunigt die Suche nach Beziehungen, die bereits in der Datenmodellierungsphase definiert werden k\u00f6nnen, zum Beispiel bei der gemeinsamen Abrechnung von Kunden und deren Rechnungen.<\/li>\n<li>Indizes: Cloud Spanner unterst\u00fctzt sekund\u00e4re Indizes. Ein Index besteht aus indexierten Spalten sowie allen PK-Spalten. optional kann der Index auch andere nicht indexierte Spalten enthalten. Der Index kann mit der Elterntabelle wechseln, um die Abfragen zu beschleunigen. F\u00fcr Indizes gelten einige Einschr\u00e4nkungen, wie beispielsweise die maximale Anzahl zus\u00e4tzlicher Spalten, die im Index gespeichert werden d\u00fcrfen. Auch k\u00f6nnen Abfragen \u00fcber Indizes komplexer sein als bei anderen RDBMS.<\/li>\n<\/ul>\n<p>\n<i>\u201eCloud Spanner w\u00e4hlt Indizes automatisch nur in seltenen F\u00e4llen aus. Insbesondere w\u00e4hlt Cloud Spanner keinen sekund\u00e4ren Index automatisch aus, wenn die Abfrage nach Spalten fragt, die nicht im <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/secondary-indexes\">Index gespeichert sind. <\/a><\/noindex>\u00bb.<\/i><\/p>\n<ul>\n<li>Service Level Agreement (SLA): Bereitstellung in einer Region mit 99,99% SLA; multiregionale Bereitstellungen mit 99,999% SLA. Obwohl das SLA lediglich eine Vereinbarung ist und keine Garantie darstellt, gehe ich davon aus, dass die Mitarbeiter von Google \u00fcber genaue Daten verf\u00fcgen, um eine so ernsthafte Behauptung aufzustellen. (Zum Verst\u00e4ndnis: 99,999% bedeutet 26,3 Sekunden Ausfallzeit im Monat.)<\/li>\n<li>Mehr: <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/\">https:\/\/cloud.google.com\/spanner\/<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>Hinweis:<\/b> Das Apache Tephra-Projekt f\u00fcgt erweiterte Transaktionsunterst\u00fctzung in Apache HBase hinzu (nun auch in Apache Phoenix als Beta-Version umgesetzt).<\/i><\/p><\/blockquote>\n<p><\/p>\n<h2>3. Unsere Bewertung<\/h2>\n<p>\nWir haben alle die Aussagen von Google \u00fcber die Vorteile von Cloud Spanner gelesen - nahezu unbegrenzte horizontale Skalierung bei gleichbleibend hoher Konsistenz und sehr hohem SLA. Auch wenn diese Anforderungen extrem schwer zu erreichen sind, war es nicht unser Ziel, sie zu widerlegen. Stattdessen konzentrieren wir uns auf andere Aspekte, die f\u00fcr die meisten Datenbanknutzer wichtig sind: Zuverl\u00e4ssigkeit und Benutzerfreundlichkeit.<\/p>\n<h4>Wir haben Cloud Spanner als Ersatz f\u00fcr Sharded MySQL bewertet.<\/h4>\n<p>\nGoogle Cloud SQL und Amazon AWS RDS, die beiden bekanntesten OLTP-Datenbanken auf dem Cloud-Markt, bieten eine umfangreiche Funktionalit\u00e4t. Um diese Datenbanken jedoch \u00fcber die Gr\u00f6\u00dfe eines einzelnen Knotens hinaus zu skalieren, m\u00fcssen Sie eine Anwendungssplittung durchf\u00fchren. Dieser Ansatz f\u00fchrt zu zus\u00e4tzlicher Komplexit\u00e4t f\u00fcr sowohl Anwendungen als auch die Verwaltung. Wir haben untersucht, wie Spanner in das Szenario integriert werden kann, in dem mehrere Segmente zu einer Instanz zusammengef\u00fchrt werden und welche Funktionen (falls vorhanden) m\u00f6glicherweise geopfert werden m\u00fcssen.<\/p>\n<h4>SQL-, DML- und DDL-Unterst\u00fctzung sowie Connector und Bibliotheken?<\/h4>\n<p>\nZun\u00e4chst m\u00fcssen Sie beim Arbeiten mit einer Datenbank ein Datenmodell erstellen. Wenn Sie denken, dass Sie den JDBC Spanner an Ihr bevorzugtes SQL-Tool anschlie\u00dfen k\u00f6nnen, werden Sie feststellen, dass Sie damit auf Ihre Daten zugreifen k\u00f6nnen, jedoch nicht in der Lage sind, Tabellen zu erstellen oder Struktur\u00e4nderungen (DDL) sowie Einf\u00fcge-\/Aktualisierungs-\/L\u00f6schoperationen (DML) durchzuf\u00fchren. Der offizielle JDBC von Google unterst\u00fctzt weder das eine noch das andere.<\/p>\n<blockquote><p><i>\u201eDerzeit unterst\u00fctzen die Treiber keine DML- oder DDL-Operationen.\u201c<\/i><br \/>\nSpanner-Dokumentation<\/p><\/blockquote>\n<p>\nMit der GCP-Konsole sieht die Situation nicht besser aus \u2013 Sie k\u00f6nnen nur SELECT-Anfragen senden. Gl\u00fccklicherweise gibt es einen JDBC-Treiber mit Unterst\u00fctzung f\u00fcr DML und DDL von der Community, einschlie\u00dflich Transaktionen. <noindex><a rel=\"nofollow\" href=\"http:\/\/github.com\/olavloite\/spanner-jdbc\">github.com\/olavloite\/spanner-jdbc<\/a><\/noindex>. Obwohl dieser Treiber \u00e4u\u00dferst n\u00fctzlich ist, ist das Fehlen eines eigenen JDBC-Treibers von Google \u00fcberraschend. Gl\u00fccklicherweise bietet Google jedoch recht umfassende Unterst\u00fctzung f\u00fcr Client-Bibliotheken (basierend auf gRPC): C#, Go, Java, node.js, PHP, Python und Ruby.<\/p>\n<p>Die weitgehende Nutzung benutzerdefinierter APIs von Cloud Spanner (aufgrund des Fehlens von DDL und DML in JDBC) f\u00fchrt zu einigen Einschr\u00e4nkungen f\u00fcr verwandte Codebereiche, wie Connection Pools oder Datenbankbindungsframeworks (z. B. Spring MVC). In der Regel kann man bei der Verwendung von JDBC seinen bevorzugten Connection Pool (z. B. HikariCP, DBCP, C3PO usw.) frei w\u00e4hlen, der getestet und gut funktioniert. Bei benutzerdefinierten Spanner APIs m\u00fcssen wir uns auf die Frameworks\/Pools von Bindungen\/Sitzungen verlassen, die wir selbst erstellt haben.<\/p>\n<p>Die schl\u00fcsselbasierte Struktur erm\u00f6glicht es Cloud Spanner, sehr schnell auf Daten \u00fcber den Prim\u00e4rschl\u00fcssel (PK) zuzugreifen, sorgt jedoch auch f\u00fcr einige Probleme bei Abfragen.<\/p>\n<ul>\n<li>Sie k\u00f6nnen den Wert des Prim\u00e4rschl\u00fcssels nicht aktualisieren; Sie m\u00fcssen zuerst den Datensatz mit dem urspr\u00fcnglichen PK l\u00f6schen und ihn mit dem neuen Wert erneut einf\u00fcgen. (Dies \u00e4hnelt anderen PK-orientierten Datenbanken\/Speichermechanismen.)<\/li>\n<li>Alle UPDATE- und DELETE-Anweisungen m\u00fcssen den PK in der WHERE-Klausel angeben, daher kann es keine leeren DELETE ALL-Anweisungen geben \u2013 es muss immer eine Unterabfrage vorhanden sein, zum Beispiel: UPDATE xxx WHERE id IN (SELECT id FROM table1).<\/li>\n<li>Es gibt keine Auto-Inkrement-Option oder \u00c4hnliches, das eine Sequenz f\u00fcr das PK-Feld festlegt. Damit das funktioniert, muss der entsprechende Wert auf der Anwendungsebene erstellt werden.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Sekund\u00e4re Indizes?<\/h4>\n<p>\nGoogle Cloud Spanner unterst\u00fctzt von Haus aus sekund\u00e4re Indizes. Dies ist ein sehr angenehmes Feature, das nicht immer in anderen Technologien vorhanden ist. Apache Kudu unterst\u00fctzt derzeit \u00fcberhaupt keine sekund\u00e4ren Indizes, w\u00e4hrend Apache HBase Indizes nicht direkt unterst\u00fctzt, sie jedoch \u00fcber Apache Phoenix hinzuf\u00fcgen kann.<\/p>\n<p>Indizes in Kudu und HBase k\u00f6nnen als separate Tabellen mit unterschiedlichen Zusammensetzungen der Prim\u00e4rschl\u00fcssel modelliert werden, jedoch muss die Atomarit\u00e4t der Operationen, die mit der \u00fcbergeordneten Tabelle und den verwandten Indextabellen ausgef\u00fchrt werden, auf Anwendungsebene gew\u00e4hrleistet sein und ist in der richtigen Implementierung nicht trivial.<\/p>\n<p>Wie im \u00dcberblick \u00fcber Cloud Spanner erw\u00e4hnt, k\u00f6nnen seine Indizes von den Indizes von MySQL abweichen. Daher sollte besondere Vorsicht beim Erstellen von Abfragen und beim Profiling walten, um sicherzustellen, dass der ordnungsgem\u00e4\u00dfe Index dort verwendet wird, wo er ben\u00f6tigt wird.<\/p>\n<h4>Sichten?<\/h4>\n<p>\nEin sehr beliebtes und n\u00fctzliches Objekt in einer Datenbank sind Sichten. Sie k\u00f6nnen f\u00fcr eine Vielzahl von Anwendungsf\u00e4llen n\u00fctzlich sein; zwei meiner Favoriten sind die logische Abstraktionsebene und die Sicherheitsebene. Leider unterst\u00fctzt Cloud Spanner keine Sichten. Dies schr\u00e4nkt uns jedoch nur teilweise ein, da es keine Detailierungsstufen f\u00fcr Berechtigungen auf Spaltenebene gibt, bei denen Sichten eine akzeptable L\u00f6sung darstellen k\u00f6nnten.<\/p>\n<p>In der Cloud Spanner-Dokumentation im Abschnitt, der Quoten und Einschr\u00e4nkungen detailliert beschreibt (<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/quotas\">spanner\/quotas<\/a><\/noindex>), gibt es eine, die f\u00fcr einige Anwendungen problematisch sein kann: Cloud Spanner hat von Haus aus eine Beschr\u00e4nkung von maximal 100 Datenbanken pro Instanz. Offensichtlich kann dies ein erhebliches Hindernis f\u00fcr eine Datenbank darstellen, die f\u00fcr eine Skalierung auf mehr als 100 Datenbanken ausgelegt ist. Gl\u00fccklicherweise haben wir nach einem Gespr\u00e4ch mit unserem technischen Ansprechpartner bei Google herausgefunden, dass dieses Limit praktisch auf jeden Wert \u00fcber den Google-Support erh\u00f6ht werden kann.<\/p>\n<h4>Unterst\u00fctzung f\u00fcr die Entwicklung?<\/h4>\n<p>\nCloud Spanner bietet eine ziemlich gute Unterst\u00fctzung f\u00fcr Programmiersprachen zur Arbeit mit seiner API. Offiziell unterst\u00fctzte Bibliotheken sind in den Bereichen C#, Go, Java, node.js, PHP, Python und Ruby verf\u00fcgbar. Die Dokumentation ist recht detailliert, jedoch ist die Gemeinschaft, wie bei anderen fortschrittlichen Technologien, im Vergleich zu den popul\u00e4rsten Datenbanktechnologien recht klein, was die Zeit erh\u00f6hen kann, die ben\u00f6tigt wird, um weniger verbreitete Anwendungsf\u00e4lle oder Probleme zu l\u00f6sen.<\/p>\n<h4>Wie steht es also um die Unterst\u00fctzung f\u00fcr die lokale Entwicklung?<\/h4>\n<p>\nWir konnten keine M\u00f6glichkeit finden, eine Cloud Spanner-Instanz in einer lokalen Umgebung zu erstellen. Das N\u00e4chste, was wir erhalten haben, ist ein Docker-Image, <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/r\/cockroachdb\/cockroach\">CockroachDB<\/a><\/noindex>, das im Prinzip \u00e4hnlich ist, sich jedoch in der Praxis stark unterscheidet. Zum Beispiel kann CockroachDB PostgreSQL JDBC verwenden. Da die Entwicklungsumgebung so nah wie m\u00f6glich an der Produktionsumgebung sein sollte, ist Cloud Spanner nicht ideal, da man auf eine vollst\u00e4ndige Spanner-Instanz angewiesen sein muss. Um Kosten zu sparen, k\u00f6nnen Sie eine Instanz f\u00fcr eine Region ausw\u00e4hlen.<\/p>\n<h4>Unterst\u00fctzung f\u00fcr die Administration?<\/h4>\n<p>\nEine Cloud Spanner-Instanz zu erstellen ist sehr einfach. Sie m\u00fcssen lediglich zwischen der Erstellung einer Multi-Region- oder einer Single-Region-Instanz w\u00e4hlen, die Region(en) angeben und die Anzahl der Knoten festlegen. Weniger als eine Minute sp\u00e4ter wird die Instanz gestartet und betriebsbereit sein.<\/p>\n<p>Einige grundlegende Metriken sind direkt auf der Spanner-Seite in der Google-Konsole verf\u00fcgbar. Detailliertere Ansichten sind \u00fcber Stackdriver verf\u00fcgbar, wo Sie auch Schwellenwerte f\u00fcr Metriken und Benachrichtigungspolitiken festlegen k\u00f6nnen.<\/p>\n<h4>Zugriff auf Ressourcen?<\/h4>\n<p>\nMySQL bietet umfassende und sehr detaillierte Einstellungen f\u00fcr Benutzerberechtigungen und -rollen. Der Zugriff auf eine bestimmte Tabelle oder sogar auf eine Teilmenge ihrer Spalten l\u00e4sst sich einfach konfigurieren. Cloud Spanner hingegen verwendet das Google Identity &amp; Access Management (IAM) Werkzeug, das es erm\u00f6glicht, Richtlinien und Berechtigungen nur auf einer sehr hohen Ebene festzulegen. Die detaillierteste Option ist die Datenbankberechtigung, die jedoch in den meisten Produktionsszenarien nicht anwendbar ist. Diese Einschr\u00e4nkung zwingt dazu, zus\u00e4tzliche Sicherheitsma\u00dfnahmen in Ihren Code, Ihre Infrastruktur oder beides hinzuzuf\u00fcgen, um unbefugte Nutzung der Spanner-Ressourcen zu verhindern.<\/p>\n<h4>Backups?<\/h4>\n<p>\nEinfach ausgedr\u00fcckt, gibt es bei Cloud Spanner keine Backups. Obwohl die hohen Anforderungen des Google SLA garantieren k\u00f6nnen, dass Sie keine Daten durch Hardware- oder Datenbankausf\u00e4lle verlieren, sichern sie nicht gegen menschliche Fehler, Anwendungsfehler usw. Wir alle kennen die Regel: Hohe Verf\u00fcgbarkeit ersetzt nicht eine vern\u00fcnftige Backup-Strategie. Derzeit besteht die einzige M\u00f6glichkeit, Daten zu sichern, darin, sie programmgesteuert aus der Datenbank in eine separate Speicherumgebung zu streamen.<\/p>\n<h4>Anfrageleistung?<\/h4>\n<p>\nF\u00fcr das Laden von Daten und das Testen von Anfragen verwendeten wir das Yahoo! Cloud Serving Benchmark. In der folgenden Tabelle ist die B YCSB-Last mit einem Leseanteil von 95 % und einem Schreibanteil von 5 % dargestellt.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: gut, schlecht, h\u00e4sslich\" src=\"\/wp-content\/uploads\/2020\/02\/8fca14875af33c8ed3cd04b602c52b78.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>*Der Lasttest wurde auf dem Compute Engine (CE) n1-standard-32 (32 vCPUs, 120 GB RAM) durchgef\u00fchrt, und die Testinstanz war bei den Tests niemals der Engpass.<\/i><br \/>\n<i>**Die maximale Anzahl an Threads in einer YCSB-Instanz betr\u00e4gt 400. Insgesamt mussten sechs parallele YCSB-Testinstanzen gestartet werden, um insgesamt 2400 Threads zu erhalten.<\/i><\/p>\n<p>In Anbetracht der Testergebnisse, insbesondere der Kombination von CPU-Auslastung und TPS, wird deutlich, dass Cloud Spanner gut skalierbar ist. Die hohe Last, die durch eine gro\u00dfe Anzahl an Threads erzeugt wird, wird durch die Vielzahl der Knoten im Cloud Spanner-Cluster ausgeglichen. Obwohl die Latenz relativ hoch erscheint, insbesondere bei 2400 Threads, k\u00f6nnte es notwendig sein, die Tests mit 6 kleineren Instanzen des Compute Engines zu wiederholen, um genauere Werte zu erhalten. Jede Instanz w\u00fcrde einen YCSB-Test ausf\u00fchren, anstatt eine gro\u00dfe CE-Instanz mit 6 parallelen Tests zu verwenden. Auf diese Weise wird es einfacher, zwischen den Latenzen der Cloud Spanner-Anfragen und den durch die Netzwerkverbindung zur CE-Instanz eingef\u00fchrten Latenzen zu unterscheiden, auf der der Test durchgef\u00fchrt wird.<\/p>\n<h3>Wie schneidet Cloud Spanner als OLAP ab?<\/h3>\n<p><\/p>\n<h4>Partitionierung?<\/h4>\n<p>\nDie Aufteilung von Daten in physisch und\/oder logisch unabh\u00e4ngige Segmente, die als Partitionen bezeichnet werden, ist ein sehr popul\u00e4res Konzept, das in den meisten OLAP-Mechanismen vorkommt. Partitionen k\u00f6nnen die Abfrageleistung und die Wartbarkeit der Datenbank erheblich verbessern. Eine tiefere Auseinandersetzung mit Partitionen w\u00fcrde einen eigenen Artikel (Artikel) erfordern; daher sei nur auf die Wichtigkeit eines Partitionierungs- und Sub-Partitionierungsschemas hingewiesen. Die M\u00f6glichkeit, Daten in Partitionen und sogar in Subpartitionen zu unterteilen, ist entscheidend f\u00fcr die Leistung analytischer Abfragen.<\/p>\n<p>Cloud Spanner unterst\u00fctzt Partitionen nicht in dem Sinne. Es teilt die Daten intern in sogenannte <i>Splits<\/i>- basierend auf dem Bereich des Prim\u00e4rschl\u00fcssels. Die Aufteilung erfolgt automatisch zur Lastenverteilung im Cloud Spanner-Cluster. Eine sehr n\u00fctzliche Funktion von Cloud Spanner ist die Aufteilung der Basislast der \u00fcbergeordneten Tabelle (der Tabelle, die nicht mit einer anderen wechselt). Spanner erkennt automatisch, ob <i>Splits <\/i>Daten enthalten sind, die h\u00e4ufiger gelesen werden als Daten in anderen <i>Splits<\/i>-en und kann \u00fcber eine weitere Teilung entscheiden. Dadurch k\u00f6nnen mehr Knoten in der Anfrage eingebunden werden, was ebenfalls die Bandbreite effektiv erh\u00f6ht.<\/p>\n<h4>Daten hochladen?<\/h4>\n<p>\nDie Methode Cloud Spanner f\u00fcr gro\u00dfe Datenmengen ist die gleiche wie bei einem normalen Upload. Um eine maximale Leistung zu erzielen, sollten Sie einige Empfehlungen beachten, einschlie\u00dflich:<\/p>\n<ul>\n<li>Sortieren Sie Ihre Daten nach dem Prim\u00e4rschl\u00fcssel.<\/li>\n<li>Teilen Sie sie in 10*<i>Anzahl der Knoten<\/i> separater Abschnitte.<\/li>\n<li>Erstellen Sie einen Satz von Arbeitsauftr\u00e4gen, die Daten parallel hochladen.<\/li>\n<\/ul>\n<p>\nBei einem solchen Daten-Upload werden alle Knoten von Cloud Spanner verwendet.<\/p>\n<p>Wir haben die Arbeitslast A YCSB verwendet, um einen Datensatz mit 10 Millionen Zeilen zu generieren.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: gut, schlecht, h\u00e4sslich\" src=\"\/wp-content\/uploads\/2020\/02\/89b9c0353716be2d389b3e8da82781ad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Der Lasttest wurde auf der Rechenmaschine n1-standard-32 (32 vCPU, 120 GB RAM) durchgef\u00fchrt, und die Testinstanz war w\u00e4hrend der Tests niemals der Flaschenhals.<br \/>\n** Eine Konfiguration mit 1 Knoten wird f\u00fcr keine Produktionslast empfohlen.<\/i><\/p>\n<p>Wie bereits erw\u00e4hnt, verarbeitet Cloud Spanner automatisch Splits basierend auf ihrer Last, sodass die Ergebnisse nach mehreren aufeinanderfolgenden Testwiederholungen besser werden. Die hier pr\u00e4sentierten Ergebnisse sind die besten, die wir erzielt haben. Anhand der oben genannten Zahlen k\u00f6nnen wir erkennen, wie gut Cloud Spanner mit der Zunahme der Knoten im Cluster skaliert. Die hervorgehobenen Zahlen zeigen \u00e4u\u00dferst niedrige durchschnittliche Latenzen, die im Gegensatz zu den Ergebnissen gemischter Workloads (95 % Lese- und 5 % Schreiblast) stehen, wie im obigen Abschnitt beschrieben.<\/p>\n<h4>Skalierung?<\/h4>\n<p>\nDas Erh\u00f6hen und Verringern der Anzahl der Cloud Spanner-Knoten ist eine Aufgabe, die mit einem Klick erledigt werden kann. Wenn Sie Daten schnell laden m\u00f6chten, k\u00f6nnen Sie in Betracht ziehen, die Instanz auf das Maximum (in unserem Fall waren das 25 Knoten in der Region US-EAST) zu steigern und anschlie\u00dfend die Anzahl der Knoten entsprechend Ihrer regul\u00e4ren Last zu reduzieren, nachdem alle Daten in der Datenbank sind, wobei zu beachten ist, dass die Grenze bei 2 TB pro Knoten liegt.<\/p>\n<p>Wir wurden auch bei einer deutlich kleineren Datenbank an diese Grenze erinnert. Nach mehreren Durchl\u00e4ufen von Lasttests hatte unsere Datenbank eine Gr\u00f6\u00dfe von etwa 155 GB, und beim Herunterstufen auf eine Konfiguration mit 1 Knoten erhielten wir folgenden Fehler:<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: gut, schlecht, h\u00e4sslich\" src=\"\/wp-content\/uploads\/2020\/02\/4a46c97e7943b5105bf178316dc67433.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs gelang uns, die Skalierung von 25 auf 2 Instanzen zu reduzieren, aber wir steckten bei zwei Knoten fest.<\/p>\n<p>Die Erh\u00f6hung und Reduzierung der Anzahl von Knoten im Cloud Spanner Cluster kann automatisiert werden, indem das REST API verwendet wird. Dies kann besonders n\u00fctzlich sein, um die erh\u00f6hte Last w\u00e4hrend der Spitzenzeiten zu verringern.<\/p>\n<h4>Wie ist die Leistung von OLAP-Abfragen?<\/h4>\n<p>\nUrspr\u00fcnglich planten wir, unserer Bewertung von Spanner in diesem Bereich erheblich Zeit zu widmen. Nach mehreren SELECT COUNT erkannten wir sofort, dass das Testing kurz sein w\u00fcrde und dass Spanner NICHT als OLAP-Engine geeignet sein w\u00fcrde. Unabh\u00e4ngig von der Anzahl der Knoten im Cluster dauerte die einfache Abfrage der Anzahl der Zeilen in einer Tabelle mit 10 Millionen Zeilen zwischen 55 und 60 Sekunden. Dar\u00fcber hinaus endeten alle Abfragen, die mehr Speicher f\u00fcr die Speicherung von Zwischenergebnissen ben\u00f6tigten, mit einem OOM-Fehler.<\/p>\n<p><code>SELECT COUNT(DISTINCT(field0)) FROM usertable; \u2014 (10M distinct values) -&gt; SpoolingHashAggregateIterator ist w\u00e4hrend des Einf\u00fcgens neuer Zeilen an den Speichergrenzen gescheitert.<\/code><\/p>\n<p>Einige Zahlen f\u00fcr TPC-H-Abfragen finden Sie im Artikel von Todd Lipkon. <noindex><a rel=\"nofollow\" href=\"https:\/\/kudu.apache.org\/2017\/10\/23\/nosql-kudu-spanner-slides.html\">Nosql-kudu-spanner-slides.html<\/a><\/noindex>, Folien 42 und 43. Diese Zahlen stimmen leider mit unseren eigenen Ergebnissen \u00fcberein.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: gut, schlecht, h\u00e4sslich\" src=\"\/wp-content\/uploads\/2020\/02\/d070c839bbc62b1ba1bebbaf64127e93.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>4. Unsere Erkenntnisse<\/h4>\n<p>\nAngesichts des aktuellen Stands der Funktionen von Cloud Spanner ist es schwer vorstellbar, dass er eine einfache L\u00f6sung f\u00fcr bestehende OLTP-Anforderungen ersetzen kann, insbesondere wenn Ihre Bed\u00fcrfnisse \u00fcber seine M\u00f6glichkeiten hinauswachsen. Es w\u00e4re notwendig, viel Zeit zu investieren, um eine auf die Schw\u00e4chen von Cloud Spanner abgestimmte L\u00f6sung zu entwickeln.<\/p>\n<p>Als wir anfingen, Cloud Spanner zu bewerten, erwarteten wir, dass seine Verwaltungsfunktionen auf dem Niveau anderer Google SQL-L\u00f6sungen oder zumindest nicht viel darunter liegen w\u00fcrden. Aber wir waren \u00fcberrascht \u00fcber das v\u00f6llige Fehlen von Backups und die sehr eingeschr\u00e4nkte Zugriffskontrolle auf Ressourcen. Ganz zu schweigen von dem Fehlen von Ansichten, keiner lokalen Entwicklungsumgebung, nicht unterst\u00fctzten Sequenzen, JDBC ohne DML- und DDL-Unterst\u00fctzung und so weiter.<\/p>\n<p>Was ist also mit denen, die ihre transaktionale Datenbank skalieren m\u00fcssen? Derzeit scheint es auf dem Markt keine einheitliche L\u00f6sung zu geben, die f\u00fcr alle Anwendungsf\u00e4lle geeignet ist. Es gibt eine Vielzahl von L\u00f6sungen, sowohl mit offenem als auch mit geschlossenem Quellcode (von denen einige in diesem Artikel erw\u00e4hnt werden), jede mit ihren eigenen Vor- und Nachteilen. Aber keine bietet ein SaaS mit einer SLA von 99,999 % und einer hohen Konsistenz. Wenn eine hohe SLA Ihr Hauptziel ist und Sie nicht gewillt sind, eigene L\u00f6sungen f\u00fcr mehrere Cloud-Umgebungen zu entwickeln, k\u00f6nnte Cloud Spanner die Antwort sein, die Sie suchen. Dennoch sollten Sie sich bewusst sein, dass es auch Einschr\u00e4nkungen gibt.<\/p>\n<p>Um fair zu sein, sollte erw\u00e4hnt werden, dass Cloud Spanner erst im Fr\u00fchling 2017 f\u00fcr die \u00d6ffentlichkeit freigegeben wurde. Daher ist es vern\u00fcnftig zu erwarten, dass einige der aktuellen M\u00e4ngel letztendlich behoben werden (hoffentlich). Wenn das geschieht, k\u00f6nnte es die Situation grundlegend ver\u00e4ndern. Schlie\u00dflich ist Cloud Spanner kein blo\u00dfes Nebenprojekt bei Google. Google nutzt es als Basis f\u00fcr andere Produkte. Als Google k\u00fcrzlich Megastore in Google Cloud Storage durch Cloud Spanner ersetzt hat, erm\u00f6glichte dies, Google Cloud Storage streng konsistent f\u00fcr Objektlisten weltweit zu machen (was nach wie vor nicht der Fall ist f\u00fcr <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">Amazon\u2019s<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">S3<\/a><\/noindex>).<\/p>\n<p>Die Hoffnung bleibt also\u2026 unsere Hoffnung besteht weiterhin.<\/p>\n<p>Das ist alles. Wie der Autor des Artikels hoffen wir auch weiter. Was denken Sie dar\u00fcber? Hinterlassen Sie einen Kommentar.<\/p>\n<p><b>Wir laden alle Interessierten ein, an unserem <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">einem kostenlosen Webinar<\/a><\/noindex> teilzunehmen, in dem wir den Kurs detailliert vorstellen werden<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\"> \u201eAWS f\u00fcr Entwickler\u201c<\/a><\/noindex> von OTUS.<\/b><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/489012\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u044b \u043f\u0440\u0435\u0432\u0435\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043e Google Cloud Spanner, \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0432 \u0435\u0435 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abAWS \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u043b\u043e\u0433\u0435 Lightspeed HQ. \u041a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 POS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u0446\u0435\u0432, \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0434\u0430\u0432\u0446\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443, Lightspeed \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":69569,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-69568","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u044b \u043f\u0440\u0435\u0432\u0435\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043e Google Cloud Spanner, \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0432 \u0435\u0435 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abAWS \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u043b\u043e\u0433\u0435 Lightspeed HQ. \u041a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 POS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u0446\u0435\u0432, \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0434\u0430\u0432\u0446\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443, Lightspeed \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Google Cloud Spanner: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u044b \u043f\u0440\u0435\u0432\u0435\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043e Google Cloud Spanner, \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0432 \u0435\u0435 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abAWS \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u043b\u043e\u0433\u0435 Lightspeed HQ. \u041a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 POS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u0446\u0435\u0432, \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0434\u0430\u0432\u0446\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443, Lightspeed \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-20T12:24:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:50+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Google Cloud Spanner: gut, schlecht, h\u00e4sslich | ProHoster","description":"Hallo, liebe Habr-Besucher. Traditionell teilen wir weiterhin interessante Inhalte im Vorfeld des Starts neuer Kurse. Heute haben wir f\u00fcr Sie einen Artikel \u00fcber Google Cloud Spanner \u00fcbersetzt, anl\u00e4sslich des Starts des Kurses \u201eAWS f\u00fcr Entwickler\u201c. Urspr\u00fcnglich ver\u00f6ffentlicht im Blog von Lightspeed HQ. Als Unternehmen, das eine Vielzahl von Cloud-POS-L\u00f6sungen f\u00fcr Einzelh\u00e4ndler, Gastronomen und Online-Verk\u00e4ufer weltweit anbietet, nutzt Lightspeed","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Google Cloud Spanner: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u044b \u043f\u0440\u0435\u0432\u0435\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043e Google Cloud Spanner, \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0432 \u0435\u0435 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abAWS \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u043b\u043e\u0433\u0435 Lightspeed HQ. \u041a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 POS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u0446\u0435\u0432, \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0434\u0430\u0432\u0446\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443, Lightspeed \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-20T12:24:23+00:00","article:modified_time":"2020-03-03T13:14:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"69568","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:20:25","updated":"2022-09-30 15:10:07"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/69568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=69568"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/69568\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/69569"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=69568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=69568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=69568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}