Yandex je objavio izvorni kod distribuiranog DBMS YDB, koji implementira podršku za SQL dijalekt i ACID transakcije. DBMS je stvoren od nule i inicijalno je razvijen s ciljem da se osigura tolerancija na greške, automatski oporavak od kvarova i skalabilnost. Napominje se da je Yandex pokrenuo radne YDB klastere, uključujući više od 10 tisuća čvorova, koji pohranjuju stotine petabajta podataka i opslužuju milijune distribuiranih transakcija u sekundi. YDB se koristi u Yandex projektima kao što su Market, Cloud, Smart Home, Alice, Metrica i Auto.ru. Kod je napisan u C/C++ i distribuiran pod licencom Apache 2.0. Za upoznavanje i brzo pokretanje možete koristiti gotov Docker spremnik.
Značajke projekta:
- Korištenje relacijskog podatkovnog modela s tablicama. Za upite i definiranje sheme podataka koristi se YQL jezik (YDB Query Language) koji 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, koje podsjeća na direktorije u sustavu datoteka. Za rad s podacima u JSON formatu postoji API.
- Podrška za pristup podacima pomoću upita za skeniranje dizajniranih za izvođenje analitičkih ad-hoc upita u bazi podataka, koji se izvršavaju u načinu rada samo za čitanje i vraćaju grpc tok.
- Interakcija s DBMS-om i slanje zahtjeva odvija se pomoću sučelja naredbenog retka, ugrađenog web sučelja ili YDB SDK-a koji nudi biblioteke za C++, C# (.NET), Go, Java, Node.js, PHP i Python.
- Sposobnost stvaranja konfiguracija otpornih na greške koje nastavljaju raditi kada pojedinačni diskovi, čvorovi, police, pa čak i podatkovni centri zakažu. YDB podržava implementaciju i sinkronu replikaciju u tri zone dostupnosti, održavajući funkcionalnost klastera u slučaju kvara jedne od zona.
- Automatski se oporavi od kvarova uz minimalnu latenciju za aplikacije i automatski održava zalihost navedenih podataka.
- Automatsko kreiranje indeksa na temelju primarnog ključa i mogućnost definiranja sekundarnih indeksa za poboljšanje učinkovitosti pristupa proizvoljnim stupcima.
- Horizontalna skalabilnost. Kako raste opterećenje i veličina pohranjenih podataka, klaster se može proširiti jednostavnim povezivanjem novih čvorova. Razine računanja i pohrane su odvojene, što vam omogućuje da zasebno proširite svoju računalnu snagu i veličinu pohrane. DBMS sam prati ravnomjernu raspodjelu podataka i opterećenja, uzimajući u obzir raspoložive hardverske resurse. Moguće je implementirati geografski raspodijeljene konfiguracije koje pokrivaju nekoliko podatkovnih centara u različitim dijelovima svijeta.
- Podržava jak model dosljednosti i ACID transakcije pri obradi upita koji obuhvaćaju više čvorova i tablica. Da biste poboljšali izvedbu, možete selektivno onemogućiti provjeru dosljednosti.
- Automatska replikacija podataka, automatsko particioniranje (particioniranje, dijeljenje) kada se veličina ili opterećenje poveća, te automatsko balansiranje opterećenja i podataka između čvorova.
- Pohranjivanje podataka izravno na blok uređaje pomoću izvorne PDisk komponente i VDisk sloja. DSProxy radi povrh VDisk-a, koji analizira dostupnost i karakteristike performansi diskova kako bi ih eliminirao ako se otkriju problemi.
- Fleksibilna arhitektura koja vam omogućuje stvaranje različitih usluga na vrhu YDB-a, uključujući virtualne blok uređaje i trajne redove čekanja. Prikladnost za različite vrste radnih opterećenja, OLTP i OLAP (analitički upiti).
- Podrška za multitenant i konfiguracije bez poslužitelja. Mogućnost autentifikacije klijenta. Korisnici mogu kreirati svoje virtualne klastere i baze podataka u zajedničkoj zajedničkoj infrastrukturi, vodeći računa o potrošnji resursa na razini broja zahtjeva i veličine podataka ili iznajmljivanjem/rezervacijom određenih računalnih resursa i skladišnog prostora.
- Mogućnost konfiguriranja životnog vijeka zapisa za automatsko uklanjanje zastarjelih podataka.
Izvor: opennet.ru