YDB (baza danych)

YDB (Yet another DataBase) to rozproszony system zarządzania bazą danych SQL (DBMS) opracowany przez Yandex , dostępny jako technologia open source .

Funkcjonalność

YDB to technologia pozwalająca na tworzenie dużych serwisów internetowych, które są w stanie obsłużyć duże obciążenia operacyjne dochodzące do milionów żądań na sekundę. Używa silnie typowanego dialektu SQL — YDB Query Language (YQL) jako domyślnego języka zapytań i obsługuje transakcje ACID .

Najbliższymi analogami tego DBMS dostępnymi jako oprogramowanie open source są YugabyteDB i CockroachDB .

YDB można samodzielnie wdrażać w klastrach komputerów na hostach fizycznych lub na maszynach wirtualnych za pośrednictwem Kubernetes lub jako usługę zarządzaną w chmurze Yandex. Tryb przetwarzania bezserwerowego lub tryb dedykowany są dostępne dla opcji usługi zarządzanej.

Architektura

YDB działa na klastrach o architekturze „nic nie współużytkowanego” i wykorzystuje standardowy sprzęt . System oparty jest na tabletach, które implementują protokół komunikacyjny do rozwiązywania konsensusu w sieci zawodnych procesorów. Funkcjonalnie ten protokół jest podobny do Paxos i Raft .

Tablety użytkownika w YDB mają obowiązkowy klucz podstawowy i są dzielone według jego zakresów. Odłamki z danymi użytkownika są kontrolowane przez tablety, zwane DataShards. Rozmiar DataShard może sięgać kilku gigabajtów. Może automatycznie podzielić się na wiele tabletów, gdy przekroczony zostanie próg przechowywania danych lub próg obciążenia fragmentu. W ten sposób system skaluje się w przejrzysty sposób w zależności od obciążenia użytkowników.

Oprócz DataShard, inne typy tabletów to m.in.:

  • SchemeShard, który przechowuje metadane dotyczące tabel użytkowników;
  • Hive, który równoważy i uruchamia tablety;
  • Koordynator i Mediator, którzy planują transakcje rozproszone.

Dane z tabletów są przechowywane w warstwie Distributed Storage, która jest pamięcią typu klucz-wartość z wyspecjalizowanym protokołem obsługującym protokół tabletu. Distributed Storage zapewnia replikację danych, podczas gdy dane z tabletów są przechowywane jako obiekty BLOB .

YDB wykonuje transakcje rozproszone między danymi z jednej lub więcej tabel przy użyciu struktury transakcji rozproszonych opartej na algorytmie Calvina. W przeciwieństwie do Calvina, YDB obsługuje transakcje interaktywne i niedeterministyczne za pomocą blokowania rekordów .

YDB opiera się na modelu aktorskim . Aktorzy to jednowątkowe automaty zaplecza, które wymieniają między sobą komunikaty, przebywając na różnych serwerach klastra. Wymiana komunikatów w sieci odbywa się za pomocą opracowanej w ramach projektu biblioteki interkonektów.

Szereg usług cyfrowych, takich jak wirtualne urządzenia blokowe lub trwałe kolejki, zostało opracowanych jako warstwa nad YDB.

YDB obsługuje interakcję użytkownika za pośrednictwem protokołu gRPC z kilkoma zestawami SDK klienta implementującymi procedury wykrywania węzłów, równoważenia klienta itp.

YDB nie obsługuje UUID jako samodzielnego typu danych. Nie ma wbudowanej funkcji automatycznego zwiększania wartości pola podczas dodawania danych do tabeli.

Historia

W 2010 roku Yandex rozpoczął pracę nad własnym NoSQL DBMS KiWi i wdrożył go do użytku wewnętrznego w 2011 roku. Jednak KiWi miał ostateczną spójność , a także inne wady modelu NoSQL.

W 2012 roku, aby zaspokoić swoje potrzeby w zakresie DBMS, Yandex rozpoczyna projekt KiKiMR, który później staje się znany jako YDB.

W 2016 roku YDB został wdrożony w usługach Yandex.

W 2018 roku uruchomiono platformę Yandex Cloud z przechowywaniem danych w oparciu o YDB. Jednocześnie firma zapowiedziała, że ​​w przyszłości udostępni YDB jako usługę zarządzaną w Yandex Cloud, a później zapewni klientom dostęp do tej usługi, a także innych usług zarządzanych, takich jak PostgreSQL, MongoDB i inne. Ta wersja chmurowa nosiła nazwę Yandex Database (usługa zarządzana dla YDB, później).

W kwietniu 2022 roku YDB DBMS został opublikowany na GitHub jako darmowe oprogramowanie na licencji Apache 2.0 .

Linki zewnętrzne