{"id":91635,"date":"2020-08-15T19:42:23","date_gmt":"2020-08-15T17:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem"},"modified":"2020-08-15T19:42:23","modified_gmt":"2020-08-15T17:42:23","slug":"na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","title":{"rendered":"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo zusammen! Mein Name ist Nikolai Golov. Fr\u00fcher habe ich bei Avito gearbeitet und sechs Jahre die Data Platform geleitet, das hei\u00dft, ich war f\u00fcr alle Datenbanken zust\u00e4ndig: analytische (Vertica, ClickHouse), Streaming- und OLTP-Datenbanken (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). In dieser Zeit habe ich mich mit einer Vielzahl von Datenbanken auseinandergesetzt \u2013 von den unterschiedlichsten und ungew\u00f6hnlichsten bis hin zu speziellen Anwendungsf\u00e4llen.<\/p>\n<p>Derzeit arbeite ich bei ManyChat. Im Grunde genommen ist das ein Startup \u2013 neu, ambitioniert und schnell wachsend. Als ich gerade in die Firma kam, stellte sich die klassische Frage: \u201eWas sollte sich ein junges Startup momentan auf dem Markt f\u00fcr DBMS und Datenbanken zulegen?\u201c <\/p>\n<p>In diesem Artikel, der auf meinem Vortrag basiert <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2020\/\">auf dem Online-Festival RIT++2020<\/a><\/noindex>, werde ich diese Frage beantworten. Die Videoaufnahme des Vortrags ist verf\u00fcgbar unter <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/H23f_z13ro4\">YouTube<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/6a5df9b75ad435ebe88adf920ab9ea8b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Allseits bekannte Datenbanken des Jahres 2020<\/h2>\n<p>\nEs ist 2020, ich schaue mich um und sehe drei Arten von Datenbanken. <\/p>\n<p>Die erste Art \u2013 <b>klassische OLTP-Datenbanken<\/b>: PostgreSQL, SQL Server, Oracle, MySQL. Sie wurden vor vielen Jahren entwickelt, sind aber nach wie vor relevant, weil sie der Entwickler-Community gut bekannt sind.<\/p>\n<p>Die zweite Art \u2013 <b>Datenbanken aus den \"Nuller-Jahren\"<\/b>. Sie versuchten, sich von klassischen Mustern zu l\u00f6sen, indem sie auf SQL, traditionelle Strukturen und ACID verzichteten und stattdessen eingebautes Sharding und andere attraktive Funktionen hinzuf\u00fcgten. Beispiele hierf\u00fcr sind Cassandra, MongoDB, Redis oder Tarantool. Alle diese L\u00f6sungen wollten dem Markt etwas grundlegend Neues bieten und fanden ihre Nische, da sie sich in bestimmten Aufgaben als \u00e4u\u00dferst praktisch erwiesen. Diese Datenbanken bezeichne ich mit dem \u00dcberbegriff NOSQL.<\/p>\n<p>Die \"Nuller\" sind vorbei, die NOSQL-Datenbanken sind etabliert, und die Welt hat, meiner Meinung nach, den n\u00e4chsten Schritt gemacht \u2014 hin zu <b>Managed-Datenbanken<\/b>. Diese Datenbanken haben den gleichen Kern wie klassische OLTP-Datenbanken oder neue NoSQL-L\u00f6sungen. Aber sie ben\u00f6tigen keinen DBA oder DevOps und laufen auf verwalteter Hardware in der Cloud. F\u00fcr den Entwickler ist dies \"einfach eine Datenbank\", die irgendwo funktioniert, wobei es niemanden interessiert, wie sie auf dem Server installiert wurde, wer den Server eingerichtet hat und wer ihn aktualisiert.<\/p>\n<p>Beispiele f\u00fcr solche Datenbanken:<\/p>\n<ul>\n<li>AWS RDS \u2014 eine Managed-Schicht \u00fcber PostgreSQL\/MySQL.<\/li>\n<li>DynamoDB \u2014 das AWS-Pendant zu dokumentenbasierten Datenbanken, \u00e4hnlich wie Redis und MongoDB.<\/li>\n<li>Amazon Redshift \u2014 eine managed analytische Datenbank.<\/li>\n<\/ul>\n<p>\nIm Grunde sind das alte Datenbanken, die jedoch in einer verwalteten Umgebung bereitgestellt werden, ohne dass eine Arbeit mit der Hardware erforderlich ist. <\/p>\n<p><i>Hinweis. Die Beispiele stammen aus der AWS-Umgebung, jedoch existieren auch entsprechende Alternativen in Microsoft Azure, Google Cloud oder Yandex.Cloud.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/06e50904f795b3b5dc62ca45622b2dd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWas ist daran neu? Im Jahr 2020 gab es nichts davon.<\/p>\n<h2>Das Konzept Serverless<\/h2>\n<p>\nEcht neu auf dem Markt im Jahr 2020 sind serverless oder serverlose L\u00f6sungen.<\/p>\n<p>Ich werde versuchen zu erkl\u00e4ren, was das bedeutet, anhand eines typischen Dienstes oder Backend-Anwendung.<br \/>\nUm eine gew\u00f6hnliche Backend-Anwendung bereitzustellen, kaufen oder mieten wir einen Server, kopieren den Code darauf, ver\u00f6ffentlichen einen Endpunkt nach au\u00dfen und zahlen regelm\u00e4\u00dfig f\u00fcr Miete, Strom und Rechenzentrumsdienste. Das ist das Standardverfahren.<\/p>\n<p>Gibt es einen anderen Weg? Mit serverlosen Diensten schon.<\/p>\n<p>Worin liegt der Kern dieses Ansatzes: kein Server, nicht einmal die Miete eines virtuellen Instances in der Cloud. Zum Bereitstellen eines Dienstes kopieren wir den Code (Funktionen) in ein Repository und ver\u00f6ffentlichen einen Endpunkt. Danach zahlen wir einfach f\u00fcr jeden Aufruf dieser Funktion, wobei wir die Hardware, auf der sie ausgef\u00fchrt wird, vollst\u00e4ndig ignorieren.<\/p>\n<p>Ich werde versuchen, diesen Ansatz mit Bildern zu veranschaulichen.<br \/>\n<img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/705cf89c51b8166da772b1d877262b44.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Klassisches Deployment<\/b>. Wir bieten einen Dienst mit bestimmter Last an. Wir starten zwei Instanzen: physische Server oder Instanzen in AWS. Auf diese Instanzen werden externe Anfragen geleitet, die dort verarbeitet werden. <\/p>\n<p>Wie auf dem Bild zu sehen ist, sind die Server unterschiedlich ausgelastet. Einer ist zu 100 % ausgelastet, dort gibt es zwei Anfragen, w\u00e4hrend der andere nur zu 50 % ausgelastet ist \u2014 er steht teilweise still. Wenn nicht drei Anfragen, sondern 30 eingehen, kann das gesamte System die Last nicht bew\u00e4ltigen und beginnt zu verlangsamen.<\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/005b1f91ced2f2b29363cf975ed085e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Serverless Deployment<\/b>. In einer serverlosen Umgebung gibt es f\u00fcr einen solchen Dienst keine Instanzen und Server. Es gibt einen Pool von vorgeheizten Ressourcen \u2013 kleinen vorbereiteten Docker-Containern mit dem implementierten Funktionscode. Das System erh\u00e4lt externe Anfragen, und f\u00fcr jede dieser Anfragen startet das serverlose Framework einen kleinen Container mit Code: es verarbeitet genau diese Anfrage und beendet den Container.<\/p>\n<p>Eine Anfrage entspricht einem Container, 1000 Anfragen sind 1000 Container. Die Bereitstellung auf physischen Servern hingegen obliegt dem Cloud-Anbieter und wird vollst\u00e4ndig durch das serverlose Framework abstrahiert. In diesem Modell zahlen wir f\u00fcr jeden Aufruf. Erhalten wir einen Aufruf pro Tag, zahlen wir f\u00fcr einen Aufruf; erhalten wir eine Million pro Minute, zahlen wir f\u00fcr eine Million. Oder pro Sekunde, das kann auch vorkommen.<\/p>\n<p>Das Konzept der Ver\u00f6ffentlichung einer serverlosen Funktion eignet sich f\u00fcr stateless Dienste. Wenn jedoch ein statefull Dienst ben\u00f6tigt wird, f\u00fcgen wir eine Datenbank hinzu. In diesem Fall schreiben und lesen jede statefull Funktion einfach aus der Datenbank, und zwar aus einer der drei Typen, die zu Beginn des Artikels beschrieben wurden.<\/p>\n<p>Was sind die allgemeinen Einschr\u00e4nkungen aller dieser Datenbanken? Es sind die Kosten f\u00fcr einen st\u00e4ndig genutzten Cloud- oder physikalischen Server (oder mehrere Server). Egal, ob wir eine klassische Datenbank oder eine Managed-L\u00f6sung verwenden, ob es DevOps und Administratoren gibt oder nicht \u2013 wir zahlen rund um die Uhr f\u00fcr die Hardware, den Strom und die Miete des Rechenzentrums. Bei einer klassischen Datenbank zahlen wir f\u00fcr Master und Slave. Bei einer hochbelasteten, shardierten Datenbank zahlen wir f\u00fcr 10, 20 oder 30 Server und das kontinuierlich.<\/p>\n<p>Die Pr\u00e4senz von dauerhaft reservierten Servern in der Kostenstruktur wurde fr\u00fcher als notwendiges \u00dcbel angesehen. Auch herk\u00f6mmliche Datenbanken haben weitere Herausforderungen, wie Verbindungsgrenzen, Skalierungseinschr\u00e4nkungen, georedundanten Konsens \u2013 einige dieser Probleme k\u00f6nnen in bestimmten Datenbanken gel\u00f6st werden, aber nicht alle gleichzeitig und nicht perfekt.<\/p>\n<h2>Serverlose Datenbank \u2013 Theorie<\/h2>\n<p>\nFrage des Jahres 2020: Kann man eine Datenbank auch serverlos gestalten? Jeder hat von serverlosem Backend geh\u00f6rt\u2026 warum sollten wir nicht auch versuchen, eine Datenbank serverlos zu gestalten?<\/p>\n<p>Das klingt seltsam, denn eine Datenbank ist ein stateful Dienst, der nicht besonders gut f\u00fcr serverless Infrastruktur geeignet ist. Zudem ist der State einer Datenbank sehr gro\u00df: Gigabytes, Terabytes und in analytischen Datenbanken sogar Petabytes. Es ist nicht einfach, dies in leichten Docker-Containern zu betreiben.<\/p>\n<p>Auf der anderen Seite besteht die Mehrheit der modernen Datenbanken aus einer gro\u00dfen Menge an Logik und Komponenten: Transaktionen, Integrit\u00e4tspr\u00fcfungen, Prozeduren, relationale Abh\u00e4ngigkeiten und viel Logik. Ein erheblicher Teil der Logik einer Datenbank ben\u00f6tigt nur einen kleinen State. Gigabytes und Terabytes werden nur von einem kleinen Teil der Datenbanklogik verwendet, der direkt mit der Ausf\u00fchrung von Abfragen zusammenh\u00e4ngt.<\/p>\n<p>Daher die Idee: Wenn ein Teil der Logik stateless ausgef\u00fchrt werden kann, warum sollte man die Datenbank nicht in stateful und stateless Teile unterteilen?<\/p>\n<h2>Serverless f\u00fcr OLAP-L\u00f6sungen<\/h2>\n<p>\nLassen Sie uns ansehen, wie eine Aufteilung der Datenbank in stateful und stateless Komponenten anhand praktischer Beispiele aussehen k\u00f6nnte.<\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/51793a5649e68dafc9e7ce395da9e065.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Nehmen wir an, wir haben eine analytische Datenbank.<\/b>: externe Daten (roter Zylinder links), ETL-Prozess, der die Daten in die Datenbank l\u00e4dt, und ein Analyst, der SQL-Abfragen an die Datenbank sendet. Dies ist das klassische Schema f\u00fcr die Arbeit eines Data Warehouses. <\/p>\n<p>In diesem Schema wird der ETL-Prozess hypothetisch einmalig ausgef\u00fchrt. Danach muss kontinuierlich f\u00fcr die Server gezahlt werden, auf denen die mit ETL geladenen Daten gespeichert sind, damit Anfragen bearbeitet werden k\u00f6nnen. <\/p>\n<p>Betrachten wir einen alternativen Ansatz, der in AWS Athena Serverless umgesetzt ist. Hier gibt es keine permanent zugewiesene Hardware, auf der die geladenen Daten gespeichert werden. Stattdessen:<\/p>\n<ul>\n<li>Der Benutzer sendet eine SQL-Abfrage an Athena. Der Optimierer von Athena analysiert die SQL-Abfrage und sucht im Metadaten-Speicher nach den spezifischen Daten, die f\u00fcr die Ausf\u00fchrung der Anfrage erforderlich sind.<\/li>\n<li>Der Optimierer l\u00e4dt basierend auf den gesammelten Daten die ben\u00f6tigten Daten aus externen Quellen in einen tempor\u00e4ren Speicher (tempor\u00e4re Datenbank) herunter.<\/li>\n<li>Im tempor\u00e4ren Speicher wird die SQL-Abfrage des Benutzers ausgef\u00fchrt, das Ergebnis wird an den Benutzer zur\u00fcckgegeben. <\/li>\n<li>Der tempor\u00e4re Speicher wird geleert, und die Ressourcen werden freigegeben.<\/li>\n<\/ul>\n<p>In dieser Architektur zahlen wir nur f\u00fcr den Prozess der Ausf\u00fchrung der Anfrage. Keine Anfragen \u2014 keine Kosten.<\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/0e21282b66e3120524c2324811cb04a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieser Ansatz ist praktikabel und wird nicht nur in Athena Serverless, sondern auch in Redshift Spectrum (in AWS) umgesetzt.<\/p>\n<p>Beispielsweise zeigt sich bei Athena, dass die Serverless-Datenbank mit realen Abfragen von Dutzenden und Hunderten von Terabyte Daten funktioniert. F\u00fcr Hunderte von Terabyte sind Hunderte von Servern erforderlich, aber wir m\u00fcssen nicht f\u00fcr diese bezahlen \u2014 wir zahlen nur f\u00fcr die Abfragen. Die Geschwindigkeit jeder Abfrage ist (sehr) niedrig im Vergleich zu spezialisierten Analyse-Datenbanken wie Vertica, aber wir zahlen auch nicht f\u00fcr Ausfallzeiten.<\/p>\n<p>Eine solche Datenbank ist f\u00fcr sporadische analytische Ad-hoc-Abfragen geeignet. Beispielsweise, wenn wir spontan eine Hypothese mit einem riesigen Datenvolumen \u00fcberpr\u00fcfen m\u00f6chten. F\u00fcr diese F\u00e4lle ist Athena ideal. F\u00fcr regelm\u00e4\u00dfige Abfragen ist ein solches System kostspielig. In diesem Fall sollten Sie die Daten in einer spezialisierten L\u00f6sung zwischenspeichern. <\/p>\n<h2>Serverless f\u00fcr OLTP-L\u00f6sungen<\/h2>\n<p>\nIm vorherigen Beispiel wurden OLAP-Aufgaben (analytische) behandelt. Jetzt betrachten wir OLTP-Aufgaben.<\/p>\n<p>Stellen Sie sich eine skalierbare PostgreSQL- oder MySQL-Datenbank vor. Lassen Sie uns einen typischen verwalteten PostgreSQL- oder MySQL-Instance mit minimalen Ressourcen einrichten. Wenn die Last auf die Instance steigt, f\u00fcgen wir zus\u00e4tzliche Replikate hinzu, um einen Teil der Leseanfragen darauf zu verteilen. Wenn es keine Anfragen oder Last gibt, schalten wir die Replikate ab. Die erste Instance ist der Master, die anderen sind die Replikate.<\/p>\n<p>Diese Idee wird in einer Datenbank namens Aurora Serverless AWS umgesetzt. Das Prinzip ist einfach: Eine Proxy-Flotte empf\u00e4ngt Anfragen von externen Anwendungen. Bei steigender Last weist sie Rechenressourcen aus bereits vorgew\u00e4rmten minimalen Instances zu \u2013 die Verbindung erfolgt sehr schnell. Das Abschalten von Instances erfolgt auf die gleiche Weise.<\/p>\n<p>Innerhalb von Aurora gibt es das Konzept der Aurora Capacity Unit, ACU. Das ist (vereinfacht gesagt) eine Instance (Server). Jeder spezifische ACU kann Master oder Slave sein. Jede Capacity Unit verf\u00fcgt \u00fcber eigenen Arbeitsspeicher, Prozessor und minimalen Speicherplatz. Dementsprechend gibt es einen Master und die anderen sind nur f\u00fcr Lesevorg\u00e4nge gedacht.<\/p>\n<p>Die Anzahl dieser aktiven Aurora Capacity Units ist ein konfigurierbarer Parameter. Die Mindestanzahl kann eins oder null sein (in diesem Fall funktioniert die Datenbank nicht, wenn keine Anfragen vorliegen).<\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/ab034e66fbd8874f062a656afa7044c5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn die Datenbank Anfragen erh\u00e4lt, hebt die Proxy-Flotte die Aurora Capacity Units an und erh\u00f6ht die Leistungsressourcen des Systems. Die M\u00f6glichkeit, Ressourcen zu erh\u00f6hen und zu verringern, erm\u00f6glicht dem System, Ressourcen 'zu jonglieren': sie ziehen einzelne ACUs automatisch heraus (und ersetzen sie durch neue) und wenden alle aktuellen Updates auf die herausgezogenen Ressourcen an.<\/p>\n<p>Die Aurora Serverless-Datenbank kann die Leseanforderungen skalieren. Dies wird jedoch nicht direkt in der Dokumentation erw\u00e4hnt. Es k\u00f6nnte der Eindruck entstehen, dass sie ein Multi-Master-System aktivieren k\u00f6nnen. Doch es gibt kein magisches Geheimnis. <\/p>\n<p>Diese Datenbank eignet sich hervorragend, um keine hohen Ausgaben f\u00fcr Systeme mit unvorhersehbarem Zugriff zu haben. Zum Beispiel erwarten wir bei der Erstellung eines MVP oder von Marketing-Visitenkarten-Websites normalerweise keine stabile Last. Entsprechend zahlen wir nicht f\u00fcr Instanzen, wenn kein Zugriff besteht. Wenn jedoch pl\u00f6tzlich eine Belastung auftritt, etwa nach einer Konferenz oder einer Werbekampagne, str\u00f6men viele Menschen auf die Website und die Last steigt stark an. Aurora Serverless bew\u00e4ltigt diese Last automatisch und f\u00fcgt schnell die fehlenden Ressourcen (ACU) hinzu. Nach der Konferenz vergessen alle den Prototyp, die Server (ACU) gehen offline und die Ausgaben sinken auf null \u2014 sehr praktisch.<\/p>\n<p>Diese L\u00f6sung ist nicht f\u00fcr eine stabile hohe Last geeignet, da sie nicht in der Lage ist, die schreibende Last zu skalieren. All diese Verbindungen und Trennungen von Ressourcen erfolgen im sogenannten \u201eScale Point\u201c \u2014 dem Zeitpunkt, wenn die Datenbank nicht von einer Transaktion gehalten wird, keine tempor\u00e4ren Tabellen gehalten werden. Beispielsweise kann es in der Woche vorkommen, dass kein Scale Point eintritt, wodurch die Datenbank mit denselben Ressourcen arbeitet und sich einfach weder ausdehnen noch zusammenziehen kann. <\/p>\n<p>Magie gibt es nicht \u2013 es ist ganz normales PostgreSQL. Aber der Prozess zum Hinzuf\u00fcgen und Trennen von Maschinen ist teilweise automatisiert.<\/p>\n<h2>Serverless by design<\/h2>\n<p>\nAurora Serverless ist eine alte Datenbank, die f\u00fcr die Cloud neu geschrieben wurde, um die spezifischen Vorteile von Serverless zu nutzen. Jetzt m\u00f6chte ich Ihnen von einer Datenbank erz\u00e4hlen, die von Anfang an f\u00fcr die Cloud und den Serverless-Ansatz entwickelt wurde \u2013 Serverless-by-design. Sie wurde von Anfang an ohne die Annahme entwickelt, dass sie auf physischen Servern l\u00e4uft.<\/p>\n<p>Diese Datenbank hei\u00dft Snowflake. Sie besteht aus drei Schl\u00fcsselmolek\u00fclen.<\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/15f9f07ed0281686e509ca6ced387db3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer erste ist der Metadatenblock. Es handelt sich um einen schnellen In-Memory-Service, der Fragen zur Sicherheit, zu Metadaten, Transaktionen und zur Optimierung von Anfragen l\u00f6st (auf der linken Illustration).<\/p>\n<p>Der zweite Block besteht aus vielen virtuellen Rechenclustern f\u00fcr Berechnungen (in der Abbildung \u2013 eine Gruppe blauer Kreise).<\/p>\n<p>Der dritte Block ist ein Datenspeichersystem auf Basis von S3. S3 ist ein unbegrenzter Objektspeicher in AWS, sozusagen ein unbegrenzter Dropbox-Dienst f\u00fcr Unternehmen.<\/p>\n<p>Schauen wir uns an, wie Snowflake funktioniert, unter der Annahme eines kalten Starts. Das hei\u00dft, die Datenbank existiert, die Daten sind geladen, aber es gibt keine aktiven Abfragen. Wenn also keine Abfragen an die Datenbank gestellt werden, l\u00e4uft unser schneller in-memory Metadatenservice (das erste Modul). Und wir haben einen S3-Speicher, in dem die Tabellendaten in so genannten Mikropartitionen abgelegt sind. Zur Vereinfachung: Wenn in der Tabelle Deals gespeichert sind, sind Mikropartitionen die Tage der Deals. Jeder Tag ist eine eigene Mikropartition, eine eigene Datei. Und wenn die Datenbank in diesem Modus arbeitet, zahlen Sie nur f\u00fcr den Speicherplatz, der von den Daten belegt wird. Der Preis f\u00fcr den Speicherplatz ist sehr niedrig (insbesondere unter Ber\u00fccksichtigung der erheblichen Kompression). Der Metadatenservice l\u00e4uft ebenfalls st\u00e4ndig, ben\u00f6tigt jedoch f\u00fcr die Optimierung der Abfragen nicht viele Ressourcen, sodass man den Service als quasi kostenlos betrachten kann. <\/p>\n<p>Stellen wir uns nun vor, ein Benutzer hat eine Abfrage an unsere Datenbank gesendet. Die SQL-Abfrage wird sofort zur Verarbeitung an den Metadatenservice gesendet. Der Service analysiert die Anfrage, die verf\u00fcgbaren Daten und die Berechtigungen des Benutzers und erstellt, sofern alles in Ordnung ist, einen Plan zur Verarbeitung der Abfrage.<\/p>\n<p>Anschlie\u00dfend initiiert der Dienst den Start des Rechenclusters. Ein Rechencluster besteht aus Servern, die Berechnungen durchf\u00fchren. Das bedeutet, es kann aus einem, zwei, vier, acht, sechzehn, oder sogar dreiunddrei\u00dfig Servern bestehen \u2013 je nachdem, wie viele Sie ben\u00f6tigen. Sie geben eine Anfrage ein, und sofort beginnt der Start dieses Clusters. Das dauert tats\u00e4chlich nur Sekunden.<\/p>\n<p><img decoding=\"async\" alt=\"Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum\" src=\"\/wp-content\/uploads\/2020\/08\/51b11aee0b0868681c4978f5becd1f1d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNachdem der Cluster gestartet wurde, werden die f\u00fcr die Verarbeitung Ihrer Anfrage ben\u00f6tigten Mikropartitionen aus S3 in den Cluster kopiert. Stellen Sie sich vor, dass f\u00fcr die Ausf\u00fchrung einer SQL-Abfrage zwei Partitionen aus einer Tabelle und eine aus einer anderen n\u00f6tig sind. In diesem Fall werden nur diese drei ben\u00f6tigten Partitionen in den Cluster kopiert, und nicht die gesamten Tabellen. Da sich alles innerhalb eines Rechenzentrums befindet und durch sehr schnelle Verbindungen verbunden ist, geschieht der gesamte Daten\u00fcbertragungsprozess \u00e4u\u00dferst schnell: innerhalb von Sekunden, in seltenen F\u00e4llen \u2014 in Minuten, es sei denn, es handelt sich um \u00e4u\u00dferst komplexe Abfragen. Die Mikropartitionen werden daher in den Rechencluster kopiert, und nach Abschluss wird die SQL-Abfrage auf diesem Rechencluster ausgef\u00fchrt. Das Ergebnis dieser Abfrage kann eine Zeile, mehrere Zeilen oder eine Tabelle sein \u2014 diese werden an den Benutzer gesendet, damit er sie herunterladen, in seinem BI-Tool anzeigen oder auf andere Weise verwenden kann.<\/p>\n<p>Jede SQL-Abfrage kann nicht nur Aggregatdaten aus zuvor geladenen Informationen abrufen, sondern auch neue Daten in der Datenbank laden oder erstellen. Das bedeutet, dass eine Abfrage beispielsweise neue Eintr\u00e4ge in eine andere Tabelle einf\u00fcgen kann, was zur Entstehung einer neuen Partition im Rechencluster f\u00fchrt, die wiederum automatisch im zentralen S3-Speicher gespeichert wird.<\/p>\n<p>Das oben beschriebene Szenario, vom Eintritt des Nutzers bis zum Start des Clusters, Ladevorg\u00e4ngen, der Ausf\u00fchrung von Anfragen und dem Erhalt der Ergebnisse, wird nach Minuten abgerechnet, die der virtuelle Rechencluster und das virtuelle Warehouse genutzt werden. Die Tarife variieren je nach AWS-Region und Clustergr\u00f6\u00dfe, im Durchschnitt liegen sie jedoch bei einigen Dollar pro Stunde. Ein Cluster mit vier Maschinen kostet doppelt so viel wie eines mit zwei Maschinen, und eines mit acht Maschinen kostet nochmals doppelt so viel. Optionen mit 16 und 32 Maschinen sind verf\u00fcgbar, abh\u00e4ngig von der Komplexit\u00e4t der Anfragen. Sie zahlen jedoch nur f\u00fcr die Minuten, in denen der Cluster tats\u00e4chlich aktiv ist, da er, wenn keine Anfragen vorliegen, nach 5 bis 10 Minuten Wartezeit (ein anpassbarer Parameter) automatisch heruntergefahren wird, Ressourcen freigibt und kostenlos wird.<\/p>\n<p>Ein v\u00f6llig realistisches Szenario ist, dass Sie eine Anfrage senden, der Cluster sich innerhalb einer Minute aufbaut, eine weitere Minute f\u00fcr die Berechnung ben\u00f6tigt wird, und dann f\u00fcnf Minuten f\u00fcr das Abschalten, sodass Sie letztendlich nur f\u00fcr sieben Minuten Betriebszeit dieses Clusters bezahlen und nicht f\u00fcr Monate oder Jahre.<\/p>\n<p>Das erste Szenario beschrieb die Verwendung von Snowflake in einer Einbenutzerumgebung. Lassen Sie uns nun annehmen, dass es viele Nutzer gibt, was n\u00e4her an einem realistischen Szenario liegt.<\/p>\n<p>Stellen wir uns vor, wir haben viele Analysten und Tableau-Berichte, die unsere Datenbank st\u00e4ndig mit einer Vielzahl einfacher analytischer SQL-Abfragen bombardieren.<\/p>\n<p>Dar\u00fcber hinaus nehmen wir an, dass wir einfallsreiche Data Scientists haben, die mit den Daten Unglaubliches vollbringen wollen, indem sie mit Dutzenden Terabytes arbeiten und Milliarden sowie Billionen von Datenzeilen analysieren. <\/p>\n<p>F\u00fcr die oben beschriebenen beiden Lasttypen erm\u00f6glicht es Snowflake, mehrere unabh\u00e4ngige Rechencluster unterschiedlicher Leistung hochzufahren. Diese Rechencluster arbeiten unabh\u00e4ngig, aber mit konsistenten gemeinsamen Daten.<\/p>\n<p>F\u00fcr eine gro\u00dfe Anzahl leichter Abfragen k\u00f6nnen Sie 2-3 kleine Cluster mit jeweils etwa 2 Maschinen bereitstellen. Dieses Verhalten kann unter anderem durch automatische Konfigurationen realisiert werden. Das bedeutet, Sie sagen: \u201eSnowflake, starte ein kleines Cluster. Wenn die Last \u00fcber einen bestimmten Wert steigt, starte ein \u00e4hnliches zweites oder drittes. Wenn die Last sinkt, schalte die \u00fcbersch\u00fcssigen ab.\u201c Damit stehen Ihnen unabh\u00e4ngig von der Anzahl der Analysten, die Berichte einsehen, gen\u00fcgend Ressourcen zur Verf\u00fcgung.<\/p>\n<p>Wenn die Analysten schlafen und niemand die Berichte einsehen, k\u00f6nnen die Cluster vollst\u00e4ndig abgeschaltet werden, und Sie h\u00f6ren auf, daf\u00fcr zu zahlen.<\/p>\n<p>F\u00fcr schwere Abfragen (von Data Scientists) k\u00f6nnen Sie jedoch ein sehr gro\u00dfes Cluster mit rund 32 Maschinen bereitstellen. Dieses Cluster wird ebenfalls nur f\u00fcr die Minuten und Stunden berechnet, in denen Ihr gro\u00dfer Auftrag l\u00e4uft.<\/p>\n<p>Die oben beschriebene M\u00f6glichkeit erlaubt es, nicht nur 2, sondern auch mehrere Arten von Lasten (ETL, Monitoring, Materialisierung von Berichten, ...) nach Clustern zu trennen.<\/p>\n<p>Zusammenfassend l\u00e4sst sich sagen, dass Snowflake eine ansprechende Idee mit einer funktionalen Umsetzung kombiniert. Bei ManyChat nutzen wir Snowflake zur Analyse aller verf\u00fcgbaren Daten. Wir haben nicht drei Cluster wie in der Beispielbeschreibung, sondern zwischen 5 und 9, in verschiedenen Gr\u00f6\u00dfen. Es gibt bei uns Cluster mit 16 Maschinen, 2 Maschinen und auch super kleine 1-Maschinen-Cluster f\u00fcr bestimmte Aufgaben. Diese verteilen die Last erfolgreich und erm\u00f6glichen uns signifikante Einsparungen.<\/p>\n<p>Die Datenbank skaliert erfolgreich sowohl die Lese- als auch die Schreiblast. Das stellt einen enormen Unterschied und einen gro\u00dfen Fortschritt im Vergleich zu \u201eAurora\u201c dar, die nur die Lese-Last bew\u00e4ltigen konnte. Snowflake erm\u00f6glicht es, mit diesen Rechenclustern auch die Schreiblast zu skalieren. Wie bereits erw\u00e4hnt, verwenden wir bei ManyChat mehrere Cluster; kleinere und super kleine Cluster werden haupts\u00e4chlich f\u00fcr ETL, also das Laden von Daten, verwendet. Die Analysten arbeiten bereits auf den mittleren Clustern, die von der ETL-Last absolut unber\u00fchrt bleiben, und daher sehr schnell arbeiten. <\/p>\n<p>Daher eignet sich die Datenbank gut f\u00fcr OLAP-Anwendungen. Leider ist sie jedoch noch nicht f\u00fcr OLTP-Lasten bereit. Erstens handelt es sich um eine spaltenorientierte Datenbank, mit allen sich daraus ergebenden Konsequenzen. Zweitens ist der Ansatz, bei dem Sie bei jeder Anfrage nach Bedarf einen Rechencluster hochfahren und mit Daten speisen, leider f\u00fcr OLTP-Lasten noch nicht schnell genug. Sekundenwartezeiten sind f\u00fcr OLAP-Anwendungen in Ordnung, aber f\u00fcr OLTP-Anwendungen sind sie inakzeptabel \u2013 ideal w\u00e4ren 100 ms, noch besser 10 ms.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>\nEine serverlose Datenbank ist m\u00f6glich durch die Trennung der Datenbank in stateless und stateful Teile. Sie haben sicherlich bemerkt, dass im gesamten Beispiel der stateful Teil \u2013 vereinfacht gesagt \u2013 die Speicherung von Mikropartitionen in S3 ist, w\u00e4hrend stateless der Optimierer ist, der mit Metadaten arbeitet und Sicherheitsfragen behandelt, die als unabh\u00e4ngige, leichtgewichtige stateless Dienste hochgefahren werden k\u00f6nnen.<\/p>\n<p>Die Ausf\u00fchrung von SQL-Anfragen kann auch als Dienste mit leichtem Zustand betrachtet werden, die im serverlosen Modus auftauchen k\u00f6nnen, wie f\u00fcr Rechencluster von Snowflake, nur die ben\u00f6tigten Daten herunterladen, die Abfrage ausf\u00fchren und dann \"schlummern\".<\/p>\n<p>Serverless-Datenbanken auf Produktionsniveau sind jetzt verf\u00fcgbar und funktionsf\u00e4hig. Diese serverlosen Datenbanken sind bereits darauf vorbereitet, OLAP-Aufgaben zu bew\u00e4ltigen. Leider haben sie f\u00fcr OLTP-Aufgaben\u2026 einige Einschr\u00e4nkungen, was ein Nachteil ist. Auf der anderen Seite ist es jedoch auch eine Chance. Vielleicht findet einer der Leser einen Weg, wie man eine OLTP-Datenbank vollst\u00e4ndig serverlos und ohne Einschr\u00e4nkungen nutzen kann, \u00e4hnlich wie bei Aurora.<\/p>\n<p>Ich hoffe, Sie fanden es interessant. Auf in die serverlose Zukunft \ud83d\ude42<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/514298\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439. \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0410\u0432\u0438\u0442\u043e \u0438 \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u043b Data Platform, \u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438: \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 (Vertica, ClickHouse), \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0438 OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0445, \u0438 \u0441 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91636,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91635","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=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439. \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0410\u0432\u0438\u0442\u043e \u0438 \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u043b Data Platform, \u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438: \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 (Vertica, ClickHouse), \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0438 OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0445, \u0438 \u0441 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441\" \/>\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\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem\" \/>\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\udd47\u041d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439. \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0410\u0432\u0438\u0442\u043e \u0438 \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u043b Data Platform, \u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438: \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 (Vertica, ClickHouse), \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0438 OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0445, \u0438 \u0441 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem\" \/>\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-08-15T17:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-15T17:42:23+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\udd47Auf dem Weg zu serverlosen Datenbanken \u2013 wie und warum | ProHoster","description":"Hallo zusammen! Mein Name ist Nikolai Golov. Fr\u00fcher habe ich bei Avito gearbeitet und sechs Jahre lang die Data Platform geleitet, also mich um alle Datenbanken gek\u00fcmmert: analytische (Vertica, ClickHouse), Streaming und OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). In dieser Zeit habe ich ein gro\u00dfes Spektrum an Datenbanken \u2013 die unterschiedlichsten und ungew\u00f6hnlichsten \u2013 sowie deren nicht-standardm\u00e4\u00dfige Anwendungsf\u00e4lle kennengelernt. Jetzt","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","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\udd47\u041d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439. \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0410\u0432\u0438\u0442\u043e \u0438 \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u043b Data Platform, \u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438: \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 (Vertica, ClickHouse), \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0438 OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0445, \u0438 \u0441 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","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-08-15T17:42:23+00:00","article:modified_time":"2020-08-15T17:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91635","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 12:23:25","updated":"2022-09-27 17:18:10"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/91635","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=91635"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/91635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/91636"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=91635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=91635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=91635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}