Yandex ga ut kildekoden til DBMS «YDB»

Det ble nylig annonsert at Yandex har gitt ut kildekoden for sitt DBMS, «YDB» , som implementerer støtte for SQL-dialekten og ACID-transaksjoner.

DBMS-et ble bygget fra grunnen av og opprinnelig utviklet med mål om å sikre feiltoleranse , automatisk gjenoppretting fra feil og skalerbarhet. Det er verdt å merke seg at Yandex lanserte operative YDB-klynger, inkludert mer enn 10 000 noder, som lagrer hundrevis av petabyte med data og håndterer millioner av distribuerte transaksjoner per sekund.

Hovednyhetene til YDB

En av YDBs viktigste funksjoner er bruken av en relasjonell datamodell med tabeller. YQL ( YDB Query Language) brukes til å spørre og definere dataskjemaet; det er en dialekt av SQL tilpasset for arbeid med store, distribuerte databaser . Når du oppretter et lagringsskjema, støttes en trelignende gruppering av tabeller, lik katalogene i et filsystem. Et API er tilgjengelig for arbeid med data i JSON-format.

Det er også verdt å merke seg dens evne til å lage feiltolerante konfigurasjoner som fortsetter å fungere selv om disker, noder, rack og til og med individuelle datasentre svikter. YDB støtter synkron distribusjon og replikering på tvers av tre tilgjengelighetssoner, samtidig som den opprettholder klyngetilstanden i tilfelle sonefeil.

Kompatibilitet med datatilgang via skannespørringer, designet for å utføre ad-hoc analytiske spørringer på databasen, utført i skrivebeskyttet modus og returnerer en grpc-flyt.

Videre skiller den seg også ut ved å lagre data direkte på blokkenheter ved hjelp av den innebygde PDisk-komponenten og VDisk-laget. I tillegg til VDisk kjører DSProxy, som analyserer disktilgjengelighet og ytelse for å ekskludere dem hvis det oppdages problemer.

Andre bemerkelsesverdige funksjoner inkluderer:

  • En fleksibel arkitektur som lar deg bygge ulike tjenester på toppen av YDB, helt ned til virtuelle blokkenheter og vedvarende køer. Egnethet for ulike typer arbeidsbelastning: OLTP og OLAP (analytiske spørringer).
  • Støtte for flerbruker (multi-tenant) og serverløse konfigurasjoner.
  • Evne til å autentisere klienter. Brukere kan lage sine egne virtuelle klynger og databaser på en felles delt infrastruktur, med tanke på ressursforbruk i form av antall forespørsler og datastørrelse, eller ved å leie/reservere visse dataressurser og lagringsplass.
  • Mulighet for å justere levetiden til postene for automatisk sletting av foreldede data.
  • Interaksjon med DBMS og innsending av forespørsler gjøres ved å bruke kommandolinjegrensesnittet, det integrerte webgrensesnittet eller YDB SDK, som gir biblioteker for C++, C# (.NET), Go, Java, Node.js, PHP og Python.
  • Gjenopprett automatisk fra feil med minimal forsinkelse til applikasjoner og oppretthold automatisk spesifisert redundans ved lagring av data.
  • Automatisk opprettelse av indekser på primærnøkkelen og muligheten til å definere sekundære indekser for å forbedre effektiviteten til vilkårlig kolonnetilgang.
  • Horisontal skalerbarhet. Etter hvert som belastningen og størrelsen på lagrede data vokser, kan klyngen utvides ganske enkelt ved å koble til nye noder. Beregnings- og lagringsnivåer er separate, slik at du kan skalere beregning og lagring separat. DBMS selv overvåker jevn fordeling av data og belastning, tar hensyn til tilgjengelige maskinvareressurser. Det er mulig å implementere geografisk distribuerte konfigurasjoner som dekker flere datasentre i ulike deler av verden.
  • Støtte for en sterk konsistensmodell og ACID-transaksjoner ved behandling av spørringer som spenner over flere noder og tabeller. For å forbedre ytelsen kan du selektivt deaktivere konsistenskontroll.
  • Automatisk datareplikering, automatisk partisjonering (partisjonering, sharding) når størrelsen eller belastningen øker, og automatisk belastning og databalansering mellom noder.

Til slutt er det verdt å merke seg at YDB brukes i Yandex-prosjekter, koden er skrevet i C/C++ og distribueres under Apache 2.0-lisensen. Du finner kildekoden, samt flere detaljer om den, på følgende lenke.


Legg til som foretrukket kilde i Google