Yandex otworzył kod rozproszonego systemu DBMS YDB obsługującego SQL

Yandex opublikował kod źródłowy rozproszonego systemu DBMS YDB, który implementuje obsługę dialektu SQL i transakcji ACID. DBMS został stworzony od podstaw i początkowo rozwijany z myślą o zapewnieniu odporności na awarie, automatycznym odtwarzaniu po awariach i skalowalności. Należy zauważyć, że Yandex uruchomił działające klastry YDB, obejmujące ponad 10 tysięcy węzłów, przechowujące setki petabajtów danych i obsługujące miliony rozproszonych transakcji na sekundę. YDB jest używany w takich projektach Yandex, jak Market, Cloud, Smart Home, Alice, Metrica i Auto.ru. Kod napisany jest w języku C/C++ i rozpowszechniany na licencji Apache 2.0. Do zapoznania się i szybkiego uruchomienia można wykorzystać gotowy kontener Docker.

Cechy projektu:

  • Korzystanie z relacyjnego modelu danych z tabelami. Do zapytań i definiowania schematu danych wykorzystywany jest język YQL (YDB Query Language), będący dialektem języka SQL przystosowanym do pracy z dużymi rozproszonymi bazami danych. Podczas tworzenia schematu przechowywania obsługiwane jest drzewiaste grupowanie tabel, przypominające katalogi w systemie plików. Dostępny jest interfejs API do pracy z danymi w formacie JSON.
    Yandex otworzył kod rozproszonego systemu DBMS YDB obsługującego SQL
  • Obsługa dostępu do danych za pomocą zapytań skanujących przeznaczonych do wykonywania analitycznych zapytań ad hoc w bazie danych, wykonywanych w trybie tylko do odczytu i zwracających strumień grpc.
  • Interakcja z systemem DBMS i wysyłanie żądań odbywa się za pomocą interfejsu wiersza poleceń, wbudowanego interfejsu WWW lub YDB SDK, który udostępnia biblioteki dla języków C++, C# (.NET), Go, Java, Node.js, PHP i Python.
  • Możliwość tworzenia konfiguracji odpornych na awarie, które będą działać nawet w przypadku awarii poszczególnych dysków, węzłów, szaf, a nawet centrów danych. YDB wspiera wdrożenia i replikację synchroniczną w trzech strefach dostępności, zachowując funkcjonalność klastra w przypadku awarii jednej ze stref.
  • Automatycznie odzyskuj dane po awariach przy minimalnych opóźnieniach dla aplikacji i automatycznie utrzymuj określoną nadmiarowość danych.
  • Automatyczne tworzenie indeksów w oparciu o klucz podstawowy oraz możliwość definiowania indeksów wtórnych w celu poprawy efektywności dostępu do dowolnych kolumn.
  • Skalowalność pozioma. W miarę wzrostu obciążenia i rozmiaru przechowywanych danych klaster można rozbudowywać, łącząc po prostu nowe węzły. Warstwy obliczeniowe i pamięć masowa są oddzielone, co pozwala na oddzielne zwiększanie mocy obliczeniowej i rozmiaru pamięci masowej. Sam DBMS monitoruje równomierny rozkład danych i obciążenia, biorąc pod uwagę dostępne zasoby sprzętowe. Możliwe jest wdrażanie konfiguracji rozproszonych geograficznie obejmujących kilka centrów danych w różnych częściach świata.
  • Obsługuje model silnej spójności i transakcje ACID podczas przetwarzania zapytań obejmujących wiele węzłów i tabel. Aby poprawić wydajność, możesz selektywnie wyłączyć sprawdzanie spójności.
  • Automatyczna replikacja danych, automatyczne partycjonowanie (partycjonowanie, sharding) w przypadku wzrostu rozmiaru lub obciążenia oraz automatyczne równoważenie obciążenia i danych pomiędzy węzłami.
  • Przechowywanie danych bezpośrednio na urządzeniach blokowych przy użyciu natywnego komponentu PDisk i warstwy VDisk. DSProxy działa na bazie VDisk, który analizuje dostępność i charakterystykę wydajności dysków, aby je wyeliminować w przypadku wykrycia problemów.
  • Elastyczna architektura umożliwiająca tworzenie różnych usług na bazie YDB, w tym wirtualnych urządzeń blokowych i trwałych kolejek. Przydatność dla różnych typów obciążeń, OLTP i OLAP (zapytania analityczne).
  • Obsługa konfiguracji wielodostępnych i bezserwerowych. Możliwość uwierzytelnienia klienta. Użytkownicy mogą tworzyć swoje wirtualne klastry i bazy danych we wspólnej współdzielonej infrastrukturze, uwzględniając zużycie zasobów na poziomie liczby żądań i wielkości danych lub wynajmując/rezerwując określone zasoby obliczeniowe i przestrzeń dyskową.
  • Możliwość skonfigurowania czasu życia rekordów w celu automatycznego usuwania nieaktualnych danych.

Źródło: opennet.ru

Dodaj komentarz