Nedavno je objavljeno da je Yandex objavio izvorni kod za svoj DBMS, "YDB" , koji implementira podršku za SQL dijalekt i ACID transakcije.
DBMS je izgrađen od temelja i u početku razvijen s ciljem osiguranja tolerancije na pogreške , automatskog oporavka od kvarova i skalabilnosti. Vrijedi napomenuti da je Yandex pokrenuo operativne YDB klastere, uključujući više od 10 000 čvorova, pohranjujući stotine petabajta podataka i obrađujući milijune distribuiranih transakcija u sekundi.
Glavne novosti YDB-a
Jedna od ključnih značajki YDB-a je korištenje relacijskog modela podataka s tablicama. YQL ( YDB Query Language) koristi se za upite i definiranje sheme podataka; to je dijalekt SQL-a prilagođen za rad s velikim, distribuiranim bazama podataka . Prilikom izrade sheme pohrane podržano je grupiranje tablica u obliku stabla, slično direktorijima u datotečnom sustavu. Osiguran je API za rad s podacima u JSON formatu.
Također je vrijedna pažnje njegova sposobnost stvaranja konfiguracija otpornih na greške koje nastavljaju funkcionirati kada diskovi, čvorovi, stalci, pa čak i pojedinačni podatkovni centri zakažu. YDB podržava sinkrono postavljanje i replikaciju u tri zone dostupnosti, a istovremeno održava zdravlje klastera u slučaju kvara zone.
Kompatibilnost s pristupom podacima putem upita za skeniranje, dizajniranih za izvođenje ad-hoc analitičkih upita na bazi podataka, izvršavanih u načinu rada samo za čitanje i vraćajući grpc tok.
Nadalje, ističe se i po izravnom pohranjivanju podataka na blok uređaje pomoću izvorne PDisk komponente i VDisk sloja. Uz VDisk, pokreće se i DSProxy koji analizira dostupnost i performanse diska kako bi ih isključio ako se otkriju problemi.
Druge značajne značajke uključuju:
- Fleksibilna arhitektura koja vam omogućuje izgradnju raznih usluga na vrhu YDB-a, sve do virtualnih blok uređaja i trajnih redova čekanja. Pogodnost za različite vrste opterećenja: OLTP i OLAP (analitički upiti).
- Podrška za konfiguracije s više korisnika (više stanara) i bez poslužitelja.
- Sposobnost provjere autentičnosti klijenata. Korisnici mogu kreirati vlastite virtualne 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/rezerviranjem određenih računalnih resursa i prostora za pohranu.
- Mogućnost podešavanja vijeka trajanja zapisa za automatsko brisanje zastarjelih podataka.
- Interakcija s DBMS-om i podnošenje zahtjeva vrši se pomoću sučelja naredbenog retka, integriranog web sučelja ili YDB SDK-a, koji pruža biblioteke za C++, C# (.NET), Go, Java, Node.js, PHP i Python.
- Automatski se oporaviti od kvarova s minimalnim kašnjenjem aplikacija i automatski održavati određenu redundantnost prilikom pohranjivanja podataka.
- Automatsko kreiranje indeksa na primarnom ključu i mogućnost definiranja sekundarnih indeksa za poboljšanje učinkovitosti 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 računanja i pohrane odvojeni su, što vam omogućuje da zasebno skalirate računanje i pohranu. Sam DBMS prati ravnomjernu raspodjelu podataka i opterećenja, uzimajući u obzir raspoložive hardverske resurse. Moguće je implementirati zemljopisno raspoređene konfiguracije koje pokrivaju više podatkovnih centara u različitim dijelovima svijeta.
- Podrška za model snažne konzistentnosti i ACID transakcije pri obradi upita koji obuhvaćaju više čvorova i tablica. Da biste poboljšali performanse, možete selektivno onemogućiti provjeru dosljednosti.
- Automatska replikacija podataka, automatsko particioniranje (particioniranje, dijeljenje) kada se veličina ili opterećenje povećava, te automatsko balansiranje opterećenja i podataka između čvorova.
Konačno, vrijedi napomenuti da se YDB koristi u Yandex projektima, kod je napisan u C/C++ i distribuira se pod Apache 2.0 licencom. Izvorni kod, kao i više detalja o njemu, možete pronaći na sljedećoj poveznici.