Nedavno je bilo objavljeno, da je Yandex izdal izvorno kodo za svoj sistem za upravljanje podatkovnih baz (DBMS) z imenom "YDB" , ki podpira dialekt SQL in transakcije ACID.
Sistem za upravljanje podatkovnih zbirk (DBMS) je bil zgrajen od temeljev in prvotno razvit s ciljem zagotavljanja tolerance napak , samodejnega okrevanja po napakah in skalabilnosti. Omeniti velja, da je Yandex zagnal delujoče grozde YDB, ki vključujejo več kot 10 vozlišč, shranjujejo na stotine petabajtov podatkov in obdelujejo milijone porazdeljenih transakcij na sekundo.
Glavne novosti YDB
Ena ključnih značilnosti YDB je uporaba relacijskega podatkovnega modela s tabelami. YQL ( YDB Query Language) se uporablja za poizvedovanje in definiranje podatkovne sheme; to je narečje SQL, prilagojeno za delo z velikimi, porazdeljenimi bazami podatkov . Pri ustvarjanju sheme shranjevanja je podprto drevesno združevanje tabel, podobno imenikom v datotečnem sistemu. Za delo s podatki v formatu JSON je na voljo API.
Omeniti velja tudi njegovo sposobnost ustvarjanja konfiguracij, odpornih na napake , ki še naprej delujejo, ko diski, vozlišča, omare in celo posamezni podatkovni centri odpovejo. YDB podpira sinhrono uvajanje in replikacijo v treh conah razpoložljivosti, hkrati pa ohranja zdravje gruče v primeru okvare cone.
Združljivost z dostopom do podatkov prek poizvedb za skeniranje, zasnovanih za izvajanje ad-hoc analitičnih poizvedb v bazi podatkov, ki se izvajajo v načinu samo za branje in vrnejo tok grpc.
Poleg tega izstopa tudi po shranjevanju podatkov neposredno na blokovnih napravah z uporabo izvorne komponente PDisk in plasti VDisk. Poleg VDisk se izvaja tudi DSProxy, ki analizira razpoložljivost in delovanje diskov ter jih izključi, če se odkrijejo težave.
Druge pomembne lastnosti vključujejo:
- Prilagodljiva arhitektura, ki vam omogoča gradnjo različnih storitev na YDB, vse do navideznih blokovnih naprav in trajnih čakalnih vrst. Primernost za različne vrste obremenitve: OLTP in OLAP (analitične poizvedbe).
- Podpora za konfiguracije za več uporabnikov (več najemnikov) in brez strežnika.
- Sposobnost avtentikacije strank. Uporabniki lahko ustvarijo svoje virtualne gruče in baze podatkov na skupni skupni infrastrukturi, pri čemer upoštevajo porabo virov glede na število zahtev in velikost podatkov ali z najemom/rezerviranjem določenih računalniških virov in prostora za shranjevanje.
- Možnost prilagajanja življenjske dobe zapisov za avtomatsko brisanje zastarelih podatkov.
- Interakcija s DBMS in oddaja zahtev se izvaja z vmesnikom ukazne vrstice, integriranim spletnim vmesnikom ali YDB SDK, ki zagotavlja knjižnice za C++, C# (.NET), Go, Java, Node.js, PHP in Python.
- Samodejno obnovite aplikacije po napakah z minimalno zamudo in samodejno vzdržujte določeno redundanco pri shranjevanju podatkov.
- Samodejno ustvarjanje indeksov na primarnem ključu in zmožnost definiranja sekundarnih indeksov za izboljšanje učinkovitosti poljubnega dostopa do stolpcev.
- Horizontalna razširljivost. Ker obremenitev in velikost shranjenih podatkov rasteta, je mogoče gručo razširiti preprosto s povezovanjem novih vozlišč. Raven računanja in shranjevanja sta ločeni, kar vam omogoča ločeno prilagajanje izračunavanja in shranjevanja. DBMS sam spremlja enakomerno porazdelitev podatkov in obremenitve, pri čemer upošteva razpoložljive strojne vire. Možno je izvajati geografsko porazdeljene konfiguracije, ki pokrivajo več podatkovnih centrov v različnih delih sveta.
- Podpora za model močne doslednosti in transakcije ACID pri obdelavi poizvedb, ki zajemajo več vozlišč in tabel. Če želite izboljšati zmogljivost, lahko selektivno onemogočite preverjanje skladnosti.
- Samodejno podvajanje podatkov, samodejno particioniranje (particioniranje, razdeljevanje), ko se velikost ali obremenitev poveča, in samodejno uravnavanje obremenitve in podatkov med vozlišči.
Na koncu velja omeniti, da se YDB uporablja v projektih Yandex, koda je napisana v jeziku C/C++ in se distribuira pod licenco Apache 2.0. Izvorno kodo in več podrobnosti o njej najdete na naslednji povezavi.