Yandex hat den Code des verteilten DBMS YDB geöffnet, das SQL unterstützt

Yandex hat die Quelltexte des verteilten YDB-DBMS veröffentlicht, das die Unterstützung für den SQL-Dialekt und ACID-Transaktionen implementiert. Das DBMS wurde von Grund auf neu erstellt und zunächst mit Blick auf die Gewährleistung von Fehlertoleranz, automatischer Wiederherstellung bei Ausfällen und Skalierbarkeit entwickelt. Es wird darauf hingewiesen, dass Yandex funktionierende YDB-Cluster gestartet hat, die mehr als 10 Knoten umfassen, Hunderte von Petabytes an Daten speichern und Millionen verteilter Transaktionen pro Sekunde verarbeiten. YDB wird in Yandex-Projekten wie Market, Cloud, Smart Home, Alice, Metrika und Auto.ru verwendet. Der Code ist in C/C++ geschrieben und wird unter der Apache 2.0-Lizenz vertrieben. Zur Einarbeitung und zum schnellen Start können Sie einen vorgefertigten Docker-Container verwenden.

Merkmale des Projekts:

  • Verwendung des relationalen Datenmodells mit Tabellen. YQL (YDB Query Language) wird zum Abfragen und Definieren des Datenschemas verwendet. Hierbei handelt es sich um einen SQL-Dialekt, der für die Arbeit mit großen verteilten Datenbanken geeignet ist. Beim Erstellen eines Speicherschemas wird eine baumartige Gruppierung von Tabellen unterstützt, die Verzeichnissen in einem Dateisystem ähnelt. Für die Arbeit mit Daten im JSON-Format wird eine API bereitgestellt.
    Yandex hat den Code des verteilten DBMS YDB geöffnet, das SQL unterstützt
  • Unterstützung für den Zugriff auf Daten mithilfe von Scan-Abfragen, die für die Durchführung analytischer Ad-hoc-Abfragen in der Datenbank konzipiert sind, im schreibgeschützten Modus ausgeführt werden und einen GRPC-Stream zurückgeben.
  • Die Interaktion mit dem DBMS und das Senden von Anfragen erfolgt über die Befehlszeilenschnittstelle, die integrierte Webschnittstelle oder das YDB SDK, das Bibliotheken für C++, C# (.NET), Go, Java, Node.js, bereitstellt. PHP und Python.
  • Die Möglichkeit, fehlertolerante Konfigurationen zu erstellen, die auch dann weiter funktionieren, wenn einzelne Festplatten, Knoten, Racks und sogar Rechenzentren ausfallen. YDB unterstützt die Bereitstellung und synchrone Replikation über drei Verfügbarkeitszonen hinweg und erhält gleichzeitig den Zustand des Clusters im Falle eines Ausfalls einer der Zonen aufrecht.
  • Automatische Wiederherstellung nach Ausfällen mit minimalen Verzögerungen für Anwendungen und automatische Aufrechterhaltung der angegebenen Redundanz beim Speichern von Daten.
  • Automatische Erstellung von Indizes für den Primärschlüssel und die Möglichkeit, Sekundärindizes zu definieren, um die Effizienz des Zugriffs auf beliebige Spalten zu verbessern.
  • Horizontale Skalierbarkeit. Wenn die Last und die Größe der gespeicherten Daten wachsen, kann der Cluster durch einfaches Anschließen neuer Knoten erweitert werden. Die Rechen- und Speicherebenen sind getrennt, sodass Rechen- und Speicherskalierung getrennt erfolgen können. Das DBMS selbst überwacht die gleichmäßige Daten- und Lastverteilung unter Berücksichtigung der verfügbaren Hardwareressourcen. Es ist möglich, geografisch verteilte Konfigurationen bereitzustellen, die mehrere Rechenzentren in verschiedenen Teilen der Welt abdecken.
  • Unterstützung für ein starkes Konsistenzmodell und ACID-Transaktionen bei der Verarbeitung von Abfragen, die sich über mehrere Knoten und Tabellen erstrecken. Um die Leistung zu verbessern, können Sie die Konsistenzkontrolle selektiv deaktivieren.
  • Automatische Datenreplikation, automatische Partitionierung (Partitionierung, Sharding) bei steigender Größe oder Last sowie automatischer Last- und Datenausgleich zwischen Knoten.
  • Speichern von Daten direkt auf Blockgeräten mithilfe der nativen PDisk-Komponente und der VDisk-Schicht. Auf VDisk läuft DSProxy, das die Verfügbarkeit und Leistung von Festplatten analysiert, um diese bei erkannten Problemen auszuschließen.
  • Eine flexible Architektur, mit der Sie auf YDB aufbauend verschiedene Dienste erstellen können, bis hin zu virtuellen Blockgeräten und persistenten Warteschlangen (Persistent Queue). Anwendungseignung für verschiedene Arten von Workloads, OLTP und OLAP (analytische Abfragen).
  • Unterstützung für Mehrbenutzer- (Multitenant-) und serverlose Konfigurationen. Möglichkeit zur Authentifizierung von Clients. Benutzer können ihre eigenen virtuellen Cluster und Datenbanken in einer gemeinsamen gemeinsamen Infrastruktur erstellen und dabei den Ressourcenverbrauch auf der Ebene der Anzahl der Anfragen und der Datengröße berücksichtigen oder bestimmte Rechenressourcen und Speicherplatz mieten/reservieren.
  • Möglichkeit, die Lebensdauer von Datensätzen anzupassen, um veraltete Daten automatisch zu löschen.

Source: opennet.ru

Kommentar hinzufügen