Nedavno je vijest razbila to Yandex je objavio izvorni kod svog DBMS-a, «YDB», koji implementira podršku za SQL dijalekt i ACID transakcije.
DBMS je izgrađen od temelja i prvobitno je razvijen s ciljem da se osigura tolerancija grešaka, automatski prelazak na grešku i skalabilnost. Treba napomenuti da je Yandex pokrenuo radne YDB klastere, uključujući više od 10 hiljada čvorova, koji pohranjuju stotine petabajta podataka i opslužuju milione distribuiranih transakcija u sekundi.
Glavne novine YDB-a
Od karakteristika koje se izdvajaju od YDB-a je upotreba relacionog modela podataka sa YQL tabelama (YDB Query Language) se koristi za upite i definiranje šeme podataka, tj dijalekt SQL-a prilagođen za rad s velikim distribuiranim bazama podataka. Prilikom kreiranja šeme skladištenja, podržano je grupisanje tabela nalik stablu, koje liči na direktorijume sistema datoteka. Omogućen je API za rad sa podacima u JSON formatu.
The sposobnost kreiranja konfiguracija otpornih na greške koji nastavljaju da funkcionišu kada diskovi, čvorovi, stalci, pa čak i pojedinačni centri podataka pokvare. YDB podržava sinhronu implementaciju i replikaciju u tri zone dostupnosti dok održava stanje klastera u slučaju kvara jedne od zona.
Podrška za pristup podacima koristeći skenirane upite, dizajnirane za izvođenje ad-hoc analitičkih upita na bazi podataka, koji se izvršavaju u načinu samo za čitanje i vraćaju grpc tok.
Osim toga, također se ističe pohranjivanje podataka direktno na blok uređaje koristeći PDisk komponentu izvorni i VDisk sloj. Pored VDisk-a, pokreće se DSProxy, koji analizira dostupnost i performanse diskova kako bi ih isključio ako se otkriju problemi.
Od ostale karakteristike koji se ističu:
- Fleksibilna arhitektura koja vam omogućava da izgradite različite usluge na vrhu YDB-a, sve do virtuelnih blok uređaja i upornih redova. Pogodnost za različite vrste opterećenja: OLTP i OLAP (analitički upiti).
- Podrška za konfiguracije sa više korisnika (više zakupaca) i bez servera.
- Mogućnost autentifikacije klijenata. Korisnici mogu kreirati vlastite virtuelne klastere i baze podataka na zajedničkoj dijeljenoj infrastrukturi, uzimajući u obzir potrošnju resursa u smislu broja zahtjeva i veličine podataka, ili iznajmljivanjem/rezervacijom određenih računarskih resursa i prostora za skladištenje.
- Mogućnost podešavanja vijeka trajanja zapisa za automatsko brisanje zastarjelih podataka.
- Interakcija sa DBMS-om i podnošenje zahteva se vrši korišćenjem interfejsa komandne linije, integrisanog veb interfejsa ili YDB SDK, koji obezbeđuje biblioteke za C++, C# (.NET), Go, Java, Node.js, PHP i Python.
- Automatski se oporavlja od kvarova sa minimalnim kašnjenjem aplikacija i automatski održava određenu redundantnost prilikom pohranjivanja podataka.
- Automatsko kreiranje indeksa na primarnom ključu i mogućnost definiranja sekundarnih indeksa radi poboljšanja efikasnosti proizvoljnog pristupa stupcima.
- Horizontalna skalabilnost. Kako raste opterećenje i veličina pohranjenih podataka, klaster se može proširiti jednostavnim povezivanjem novih čvorova. Slojevi za računanje i skladištenje su odvojeni, što vam omogućava da zasebno skalirate računanje i pohranu. Sam DBMS prati ravnomjernu distribuciju podataka i opterećenja, uzimajući u obzir raspoložive hardverske resurse. Moguće je implementirati geografski raspoređene konfiguracije koje pokrivaju više centara podataka u različitim dijelovima svijeta.
- Podrška za model snažne konzistentnosti i ACID transakcije prilikom obrade upita koji obuhvataju više čvorova i tabela. Da biste poboljšali performanse, možete selektivno onemogućiti provjeru konzistentnosti.
- Automatska replikacija podataka, automatsko particioniranje (particioniranje, dijeljenje) kada se veličina ili opterećenje povećava, i automatsko balansiranje opterećenja i podataka između čvorova.
Na kraju, treba napomenuti da se YDB koristi u Yandex projektima, kod je napisan u C/C++ i distribuira se pod Apache 2.0 licencom, možete vidjeti izvorni kod, kao i više detalja o njemu Na sledećem linku.