Hiljuti teatati, et Yandex avaldas oma andmebaasisüsteemi "YDB" lähtekoodi , mis toetab SQL-dialekti ja ACID-tehinguid.
Andmebaasi juhtimissüsteem loodi algusest peale ja algselt arendati seda eesmärgiga tagada rikketaluvus , automaatne tõrgetest taastumine ja skaleeritavus. Tasub märkida, et Yandex käivitas toimivad YDB klastrid, mis hõlmavad enam kui 10 000 sõlme, salvestades sadu petabaite andmeid ja käsitledes miljoneid hajutatud tehinguid sekundis.
YDB peamised uuendused
Üks YDB põhifunktsioone on tabelitega relatsioonilise andmemudeli kasutamine. YQL-i ( YDB Query Language) kasutatakse andmeskeemi päringute tegemiseks ja määratlemiseks; see on SQL-i dialekt, mis on kohandatud töötamiseks suurte ja hajutatud andmebaasidega . Salvestusskeemi loomisel toetatakse tabelite puulaadset rühmitamist, mis sarnaneb failisüsteemi kataloogidega. JSON-vormingus andmetega töötamiseks on olemas API.
Samuti väärib märkimist selle võime luua rikketaluvaid konfiguratsioone , mis jätkavad toimimist ka siis, kui kettad, sõlmed, riiulid ja isegi üksikud andmekeskused rikki lähevad. YDB toetab sünkroonset juurutamist ja replikatsiooni kolmes kättesaadavustsoonis, säilitades samal ajal klastri tervise tsooni rikke korral.
Ühilduvus andmetele juurdepääsuga skannimispäringute kaudu, mis on loodud andmebaasis ad-hoc analüütiliste päringute tegemiseks, teostatakse kirjutuskaitstud režiimis ja tagastatakse grpc-voog.
Lisaks paistab see silma andmete otse plokk-seadmetesse salvestamise poolest, kasutades natiivset PDisk komponenti ja VDisk kihti. Lisaks VDisk komponendile töötab ka DSProxy, mis analüüsib ketta saadavust ja jõudlust, et need probleemide tuvastamise korral välistada.
Muud märkimisväärsed omadused on järgmised:
- Paindlik arhitektuur, mis võimaldab teil YDB peale ehitada erinevaid teenuseid, kuni virtuaalse plokkseadmete ja püsivate järjekordadeni välja. Sobivus erinevat tüüpi töökoormuse jaoks: OLTP ja OLAP (analüütilised päringud).
- Mitme kasutaja (mitme rentniku) ja serverita konfiguratsioonide tugi.
- Võimalus kliente autentida. Kasutajad saavad ühisele jagatud infrastruktuurile luua oma virtuaalseid klastreid ja andmebaase, võttes arvesse ressursitarbimist päringute arvu ja andmemahu osas või rentides/reserveerides teatud arvutusressursse ja salvestusruumi.
- Võimalus korrigeerida kirjete kasutusiga vananenud andmete automaatseks kustutamiseks.
- DBMS-iga suhtlemine ja päringute esitamine toimub käsurea liidese, integreeritud veebiliidese või YDB SDK abil, mis pakub teeke C++, C# (.NET), Go, Java, Node.js, PHP ja Python jaoks.
- Taastage tõrgetest automaatselt minimaalse viivitusega rakendustele ja säilitage andmete salvestamisel automaatselt määratud liiasus.
- Indekside automaatne loomine primaarvõtmel ja võimalus määratleda sekundaarseid indekseid, et parandada suvalise veeru juurdepääsu tõhusust.
- Horisontaalne skaleeritavus. Kui salvestatud andmete koormus ja suurus kasvab, saab klastrit laiendada lihtsalt uute sõlmede ühendamisega. Arvutus- ja salvestustasandid on eraldi, võimaldades teil arvutusi ja salvestamist eraldi skaleerida. DBMS ise jälgib andmete ja koormuse ühtlast jaotust, võttes arvesse olemasolevaid riistvararessursse. Võimalik on rakendada geograafiliselt hajutatud konfiguratsioone, mis katavad mitut andmekeskust erinevates maailma paikades.
- Tugeva järjepidevuse mudeli ja ACID-tehingute tugi mitut sõlme ja tabelit hõlmavate päringute töötlemisel. Toimivuse parandamiseks saate järjepidevuse kontrolli valikuliselt keelata.
- Automaatne andmete replikatsioon, automaatne jaotus (partitsioneerimine, killustamine) suuruse või koormuse suurenemisel ning automaatne koormuse ja andmete tasakaalustamine sõlmede vahel.
Lõpuks väärib märkimist, et Yandexi projektides kasutatakse YDB-d, kood on kirjutatud C/C++ keeles ja levitatakse Apache 2.0 litsentsi alusel. Lähtekoodi ja lisateavet leiate järgmiselt lingilt.