To nedávno prelomili správy Yandex zverejnil zdrojový kód svojho DBMS, «YDB», ktorý implementuje podporu pre SQL dialekt a ACID transakcie.
DBMS bol postavený od základov a bol pôvodne vyvinutý s ohľadom na zabezpečenie odolnosti voči chybámautomatické prepnutie pri zlyhaní a škálovateľnosť. Je potrebné poznamenať, že Yandex spustil fungujúce klastre YDB, vrátane viac ako 10 XNUMX uzlov, ktoré uchovávajú stovky petabajtov údajov a obsluhujú milióny distribuovaných transakcií za sekundu.
Hlavné novinky YDB
Z funkcií, ktoré vyčnievajú z YDB, je použitie relačného dátového modelu s tabuľkami YQL (YDB Query Language) sa používa na dopytovanie a definovanie dátovej schémy, ktorá je dialekt SQL prispôsobený na prácu s veľkými distribuovanými databázami. Pri vytváraní schémy úložiska je podporované stromové zoskupenie tabuliek, ktoré pripomína adresáre súborového systému. Na prácu s údajmi vo formáte JSON je k dispozícii rozhranie API.
The schopnosť vytvárať konfigurácie odolné voči chybám ktoré naďalej fungujú, keď zlyhajú disky, uzly, stojany a dokonca aj jednotlivé dátové centrá. YDB podporuje synchrónne nasadenie a replikáciu cez tri zóny dostupnosti pri zachovaní stavu klastra v prípade zlyhania jednej zo zón.
Podpora prístupu k údajom pomocou skenovacích dotazov, navrhnutých na vykonávanie ad-hoc analytických dotazov na databázu, vykonávaných v režime len na čítanie a vracajúcich prúd grpc.
Okrem toho aj vyniká ukladanie dát priamo na blokové zariadenia pomocou komponentu PDisk natívnu a vrstvu VDisk. Okrem VDisk beží aj DSProxy, ktorý analyzuje dostupnosť a výkon diskov, aby ich v prípade zistenia problémov vylúčil.
Z ďalšie funkcie ktoré vynikajú:
- Flexibilná architektúra, ktorá vám umožňuje vybudovať rôzne služby na vrchole YDB, až po virtuálne blokové zariadenia a trvalé fronty. Vhodnosť pre rôzne typy pracovného zaťaženia: OLTP a OLAP (analytické dotazy).
- Podpora konfigurácií pre viacerých používateľov (viac nájomníkov) a bez serverov.
- Schopnosť autentifikovať klientov. Používatelia môžu vytvárať svoje vlastné virtuálne klastre a databázy na spoločnej zdieľanej infraštruktúre, berúc do úvahy spotrebu zdrojov z hľadiska počtu požiadaviek a veľkosti dát, alebo prenájmom/rezerváciou určitých výpočtových zdrojov a úložného priestoru.
- Možnosť nastavenia doby životnosti záznamov pre automatické mazanie neaktuálnych údajov.
- Interakcia s DBMS a odosielanie požiadaviek sa vykonáva pomocou rozhrania príkazového riadka, integrovaného webového rozhrania alebo súpravy YDB SDK, ktorá poskytuje knižnice pre C++, C# (.NET), Go, Java, Node.js, PHP a Python.
- Automaticky sa obnovujte po zlyhaniach s minimálnym oneskorením aplikácií a automaticky udržiavajte špecifikovanú redundanciu pri ukladaní údajov.
- Automatické vytváranie indexov na primárnom kľúči a schopnosť definovať sekundárne indexy na zlepšenie efektívnosti prístupu k ľubovoľným stĺpcom.
- Horizontálna škálovateľnosť. S rastúcim zaťažením a veľkosťou uložených údajov je možné klaster rozšíriť jednoduchým pripojením nových uzlov. Výpočtové a úložné vrstvy sú oddelené, čo vám umožňuje škálovať výpočtové a úložné priestory oddelene. Samotný DBMS monitoruje rovnomerné rozloženie dát a záťaže s prihliadnutím na dostupné hardvérové zdroje. Je možné implementovať geograficky distribuované konfigurácie, ktoré pokrývajú viacero dátových centier v rôznych častiach sveta.
- Podpora modelu silnej konzistencie a ACID transakcií pri spracovaní dotazov, ktoré zahŕňajú viacero uzlov a tabuliek. Ak chcete zlepšiť výkon, môžete selektívne vypnúť kontrolu konzistencie.
- Automatická replikácia údajov, automatické rozdelenie na oddiely (rozdelenie, sharding) pri zvýšení veľkosti alebo zaťaženia a automatické zaťaženie a vyvažovanie údajov medzi uzlami.
konečne, treba poznamenať, že YDB sa používa v projektoch Yandex, kód je napísaný v C/C++ a je distribuovaný pod licenciou Apache 2.0, môžete vidieť zdrojový kód, ako aj ďalšie podrobnosti o ňom Na nasledujúcom odkaze.