YDB

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 25. juni 2022; checks kræver 2 redigeringer .
YDB
Type DBMS
Udvikler Yandex
Licens Apache 2.0
Internet side YDB-projektets officielle hjemmeside

YDB er et open source  , distribueret, fejltolerant relationsdatabasestyringssystem ( DBMS ) udviklet af Yandex .

Funktionalitet

YDB er en teknologi, der giver dig mulighed for at skabe store tjenester , der kan modstå en stor operationel belastning (op til niveauet af millioner af anmodninger pr. sekund). Standardforespørgselssproget er YQL [1] (YDB Query Language), en stærkt indtastet dialekt af SQL [2] .

Det er en af ​​de DBMS, der giver ACID transaktionsgarantier [3] .

De nærmeste analoger blandt databasesystemer, også tilgængelig som open source-software, er YugabyteDB og CockroachDB.

YDB indebærer selvudrulning til klynger af fysiske værter eller virtuelle maskiner ved hjælp af Kubernetes-værktøjer eller som en administreret tjeneste i Yandex Cloud. For en administreret implementering vælges den serverløse computertilstand eller den dedikerede tilstand.

Implementeringsfunktioner

YDB understøtter ikke UUID som en selvstændig datatype [4] .

Der er ingen indbygget funktion til auto-inkrementering af en feltværdi ved tilføjelse af data til en tabel [4] .

Arkitektur

YDB kører på klynger med en "shared nothing"-arkitektur og bruger standard hardware (commodity hardware). Systemet er bygget på basis af logiske komponenter - tablets. Tabletten implementerer en protokol til løsning af konsensusproblemet i et netværk af upålidelige computere. Denne protokol svarer i funktionalitet til Paxos- og Raft -protokollerne .

Brugertabeller har en obligatorisk primærnøgle, tabeller er delt efter primærnøgleområder. Data shard styres af en tablet, størrelsen af ​​et shard kan være op til enheder af gigabyte. Sådanne tablets kaldes DataShard. En DataShard-tablet kan automatisk opdeles i flere tablets, når tærsklen for datalagring eller shard-belastning overskrides. Så systemet skalerer transparent med stigende brugerbelastning.

Der er mange forskellige typer tablets udover DataShard: SchemeShard-tablets til lagring af metadata om brugertabeller, Hive til balancering og kørsel af tablets, Koordinator og Mediator til planlægning af distribuerede transaktioner og mange andre.

Pilledata gemmes i laget Distributed Storage, som er et nøgleværdilager med en specialiseret protokol til at understøtte pilleprotokollen. Distribueret lagring giver datareplikering, tabletdata gemmes som BLOB [3] .

YDB implementerer distribuerede transaktioner mellem data i en eller flere tabeller. Den distribuerede transaktionsmekanisme er baseret på Calvin-algoritmen [5] . Men i modsætning til Calvin understøtter YDB interaktive og ikke-deterministiske transaktioner. Til dette bruges optimistiske låse .

Ved udvikling af YDB-koden anvendes aktørmodellen . Aktører er enkelttrådede tilstandsmaskiner, der udveksler beskeder med hinanden og ligger på forskellige servere i klyngen. Til at udveksle meddelelser over netværket bruges det sammenkoblingsbibliotek, der er udviklet som en del af projektet. Forskellige tjenester er udviklet oven på YDB. For eksempel virtuelle blokeringsenheder og vedvarende køer.

Brugerinteraktion med YDB sker via gRPC [3] protokollen . For YDB er der en række klient - SDK'er , der implementerer mekanismer til nodeopdagelse (opdagelse), klientbalancering mv.

Historie

I 2010 begyndte Yandex at udvikle sit eget NoSQL DBMS KiWi [1] . Det begyndte at blive brugt i 2011. Men KiWi leverede " ultimativ konsistens " og havde andre ulemper ved NoSQL-modellen [3] .

I 2012 begyndte den interne udvikling af KiKiMR-projektet, og kun til Yandex behov. Uden for virksomheden hed projektet YDB [1] . I 2016 begyndte DBMS at blive brugt i Yandex-tjenester.

I 2018 blev Yandex Cloud- skyplatformen lanceret , hvor datalagring var baseret på YDB [6] . Samtidig meddelte virksomheden [7] , at den i fremtiden vil gøre YDB tilgængelig i Yandex Cloud som en administreret tjeneste. Senere begyndte en sådan adgang virkelig at blive leveret sammen med andre administrerede tjenester - for PostgreSQL, MongoDB og andre. Denne skyversion blev kaldt Yandex Database (senere Managed service for YDB).

I april 2022 blev YDB DBMS udgivet på GitHub som gratis software under Apache 2.0 -licensen [1] .

Noter

  1. 1 2 3 4 Yandex indsendte YDB i open source . Habr . Hentet: 12. juni 2022.
  2. Hvordan skriver man mindre kode til MR, eller hvorfor har verden brug for et andet forespørgselssprog? Historien om Yandex Query Language . Habr . Hentet: 14. juni 2022.
  3. ↑ 1 2 3 4 Serverløst alternativ til traditionelle databaser  (russisk)  ? . osp.ru. _ Dato for adgang: 23. juni 2022.
  4. ↑ 1 2 Nikolay Matrosov. Automatisk stigning i Yandex-database  (eng.) . Medium (14. februar 2022). Dato for adgang: 24. april 2022.
  5. ↑ Calvin  : Hurtigt distribuerede transaktioner for opdelte databasesystemer  ? . cs.yale.edu . Hentet: 19. juni 2022.
  6. 001. Yandex Cloud: platformsoversigt - Jan Leshchinsky  (russisk)  ? . Youtube . Hentet: 12. juni 2022.
  7. about:cloud, november 2018 | Broadcast-optagelse  (russisk)  ? . Youtube . Hentet: 12. juni 2022.