Yandex släppte källkoden för sin DBMS «YDB»

Det tillkännagavs nyligen att Yandex släppte källkoden för sitt DBMS, "YDB" , som implementerar stöd för SQL-dialekten och ACID-transaktioner.

DBMS byggdes från grunden och utvecklades initialt med målet att säkerställa feltolerans , automatisk återställning från fel och skalbarhet. Det är värt att notera att Yandex lanserade operativa YDB-kluster, inklusive mer än 10 000 noder, som lagrar hundratals petabyte data och hanterar miljontals distribuerade transaktioner per sekund.

Huvudnyheterna i YDB

En av YDBs viktigaste funktioner är dess användning av en relationell datamodell med tabeller. YQL ( YDB Query Language) används för att fråga och definiera dataschemat; det är en dialekt av SQL anpassad för att arbeta med stora, distribuerade databaser . När man skapar ett lagringsschema stöds en trädliknande gruppering av tabeller, liknande katalogerna i ett filsystem. Ett API tillhandahålls för att arbeta med data i JSON-format.

Det är också anmärkningsvärt att det kan skapa feltoleranta konfigurationer som fortsätter att fungera även när diskar, noder, rack och till och med enskilda datacenter går sönder. YDB stöder synkron distribution och replikering över tre tillgänglighetszoner samtidigt som klusterhälsan bibehålls i händelse av ett zonfel.

Kompatibilitet med dataåtkomst via skanningsfrågor, utformade för att utföra ad hoc-analytiska frågor på databasen, exekverade i skrivskyddat läge och returnerar ett grpc-flöde.

Dessutom utmärker den sig genom att lagra data direkt på blockenheter med hjälp av den inbyggda PDisk-komponenten och VDisk-lagret. Förutom VDisk körs DSProxy, som analyserar disktillgänglighet och prestanda för att utesluta dem om problem upptäcks.

Andra anmärkningsvärda funktioner inkluderar:

  • En flexibel arkitektur som låter dig bygga olika tjänster ovanpå YDB, ända ner till virtuella blockenheter och beständiga köer. Lämplighet för olika typer av arbetsbelastning: OLTP och OLAP (analytiska frågor).
  • Stöd för konfigurationer för flera användare (multi-tenant) och serverlösa.
  • Förmåga att autentisera kunder. Användare kan skapa sina egna virtuella kluster och databaser på en gemensam delad infrastruktur, med hänsyn till resursförbrukning i termer av antal förfrågningar och datastorlek, eller genom att hyra/reservera vissa datorresurser och lagringsutrymme.
  • Möjlighet att justera användningstiden för posterna för automatisk radering av föråldrade data.
  • Interagera med DBMS och skicka förfrågningar görs med hjälp av kommandoradsgränssnittet, det integrerade webbgränssnittet eller YDB SDK, som tillhandahåller bibliotek för C++, C# (.NET), Go, Java, Node.js, PHP och Python.
  • Återställ automatiskt från fel med minimal fördröjning till applikationer och bibehåll automatiskt specificerad redundans vid lagring av data.
  • Automatiskt skapande av index på primärnyckeln och möjligheten att definiera sekundära index för att förbättra effektiviteten av godtycklig kolumnåtkomst.
  • Horisontell skalbarhet. När belastningen och storleken på lagrad data växer, kan klustret utökas helt enkelt genom att ansluta nya noder. Beräknings- och lagringsnivåer är separata, vilket gör att du kan skala beräkning och lagring separat. DBMS själv övervakar den jämna fördelningen av data och belastning, med hänsyn till tillgängliga hårdvaruresurser. Det är möjligt att implementera geografiskt fördelade konfigurationer som täcker flera datacenter i olika delar av världen.
  • Stöd för en stark konsistensmodell och ACID-transaktioner vid bearbetning av frågor som spänner över flera noder och tabeller. För att förbättra prestandan kan du selektivt inaktivera konsistenskontrollen.
  • Automatisk datareplikering, automatisk partitionering (partitionering, skärning) när storleken eller belastningen ökar, och automatisk belastning och databalansering mellan noder.

Slutligen är det värt att notera att YDB används i Yandex-projekt, koden är skriven i C/C++ och distribueras under Apache 2.0-licensen. Du hittar källkoden, samt mer information om den, på följande länk.


Lägg till som prioriterad källa i Google