Yandex frigav kildekoden til sin DBMS «YDB»

Det blev for nylig annonceret, at Yandex har udgivet kildekoden til sit databasesystem, "YDB" , som implementerer understøttelse af SQL-dialekten og ACID-transaktioner.

DBMS'et blev bygget fra bunden og oprindeligt udviklet med det mål at sikre fejltolerance , automatisk gendannelse fra fejl og skalerbarhed. Det er værd at bemærke, at Yandex lancerede operationelle YDB-klynger, herunder mere end 10 noder, der lagrer hundredvis af petabyte data og håndterer millioner af distribuerede transaktioner pr. sekund.

De vigtigste nyheder i YDB

En af YDBs nøglefunktioner er dens brug af en relationel datamodel med tabeller. YQL ( YDB Query Language) bruges til at forespørge og definere dataskemaet; det er en dialekt af SQL, der er tilpasset til at arbejde med store, distribuerede databaser . Når man opretter et lagringsskema, understøttes en trælignende gruppering af tabeller, der ligner mapperne i et filsystem. Der stilles en API til rådighed til at arbejde med data i JSON-format.

Det er også værd at bemærke dens evne til at oprette fejltolerante konfigurationer , der fortsætter med at fungere, når diske, noder, racks og endda individuelle datacentre fejler. YDB understøtter synkron implementering og replikering på tværs af tre tilgængelighedszoner, samtidig med at klyngetilstanden opretholdes i tilfælde af en zonefejl.

Kompatibilitet med dataadgang via scanningsforespørgsler, designet til at udføre ad-hoc analytiske forespørgsler på databasen, udført i skrivebeskyttet tilstand og returneret et grpc-flow.

Derudover skiller den sig også ud ved at lagre data direkte på blokenheder ved hjælp af den native PDisk-komponent og VDisk-laget. Ud over VDisk kører DSProxy, som analyserer disktilgængelighed og ydeevne for at udelukke dem, hvis der opdages problemer.

Andre bemærkelsesværdige funktioner inkluderer:

  • En fleksibel arkitektur, der giver dig mulighed for at bygge forskellige tjenester oven på YDB, helt ned til virtuelle blokenheder og vedvarende køer. Egnethed til forskellige typer arbejdsbelastning: OLTP og OLAP (analytiske forespørgsler).
  • Understøttelse af multi-user (multi-tenant) og serverløse konfigurationer.
  • Evne til at autentificere kunder. Brugere kan oprette deres egne virtuelle klynger og databaser på en fælles delt infrastruktur under hensyntagen til ressourceforbrug i form af antal anmodninger og datastørrelse, eller ved at leje/reservere visse computerressourcer og lagerplads.
  • Mulighed for at justere journalernes brugstid for automatisk sletning af forældede data.
  • Interaktion med DBMS og indsendelse af anmodninger sker ved hjælp af kommandolinjegrænsefladen, den integrerede webgrænseflade eller YDB SDK, som leverer biblioteker til C++, C# (.NET), Go, Java, Node.js, PHP og Python.
  • Gendan automatisk fra fejl med minimal forsinkelse til applikationer og bibehold automatisk specificeret redundans ved lagring af data.
  • Automatisk oprettelse af indekser på den primære nøgle og evnen til at definere sekundære indekser for at forbedre effektiviteten af ​​vilkårlig kolonneadgang.
  • Horisontal skalerbarhed. Efterhånden som belastningen og størrelsen af ​​lagrede data vokser, kan klyngen udvides ved blot at forbinde nye noder. Beregnings- og lagringsniveauer er adskilte, hvilket giver dig mulighed for at skalere beregning og lagring separat. DBMS'et overvåger selv den jævne fordeling af data og belastning under hensyntagen til de tilgængelige hardwareressourcer. Det er muligt at implementere geografisk distribuerede konfigurationer, der dækker flere datacentre i forskellige dele af verden.
  • Understøttelse af en stærk konsistensmodel og ACID-transaktioner ved behandling af forespørgsler, der spænder over flere noder og tabeller. For at forbedre ydeevnen kan du selektivt deaktivere konsistenskontrol.
  • Automatisk datareplikering, automatisk partitionering (partitionering, sharding), når størrelsen eller belastningen øges, og automatisk belastning og databalancering mellem noder.

Endelig er det værd at bemærke, at YDB bruges i Yandex-projekter, koden er skrevet i C/C++ og distribueres under Apache 2.0-licensen. Du kan finde kildekoden, samt flere detaljer om den, på følgende link.


Tilføj som foretrukken kilde i Google