Nedávno to zprávy prolomily Yandex zveřejnil zdrojový kód svého DBMS, «YDB», který implementuje podporu pro SQL dialekt a ACID transakce.
DBMS byl postaven od základů a byl původně vyvinut s ohledem na zajištění odolnosti proti chybám, automatické převzetí služeb při selhání a škálovatelnost. Je třeba poznamenat, že Yandex spustil fungující clustery YDB, včetně více než 10 tisíc uzlů, které ukládají stovky petabajtů dat a obsluhují miliony distribuovaných transakcí za sekundu.
Hlavní novinky YDB
Mezi funkce, které vyčnívají z YDB, je použití relačního datového modelu s tabulkami YQL (YDB Query Language) se používá k dotazování a definování datového schématu, což je dialekt SQL přizpůsobený pro práci s velkými distribuovanými databázemi. Při vytváření schématu úložiště je podporováno stromové seskupení tabulek, které připomíná adresáře souborového systému. Pro práci s daty ve formátu JSON je k dispozici API.
The schopnost vytvářet konfigurace odolné proti chybám které nadále fungují, když selžou disky, uzly, stojany a dokonce i jednotlivá datová centra. YDB podporuje synchronní nasazení a replikaci napříč třemi zónami dostupnosti při zachování stavu clusteru v případě selhání jedné ze zón.
Podpora přístupu k datům pomocí skenovacích dotazů, navržených k provádění ad-hoc analytických dotazů na databázi, spouštěných v režimu pouze pro čtení a vracejících proud grpc.
Kromě toho také vyniká ukládání dat přímo na bloková zařízení pomocí komponenty PDisk nativní a vrstva VDisk. Kromě VDisk běží DSProxy, který analyzuje dostupnost a výkon disků, aby je v případě zjištění problémů vyloučil.
Z další funkce které vynikají:
- Flexibilní architektura, která vám umožňuje stavět různé služby nad YDB, až po virtuální bloková zařízení a trvalé fronty. Vhodnost pro různé typy zátěže: OLTP a OLAP (analytické dotazy).
- Podpora konfigurací pro více uživatelů (více nájemců) a bez serverů.
- Schopnost autentizovat klienty. Uživatelé mohou vytvářet své vlastní virtuální clustery a databáze na společné sdílené infrastruktuře s ohledem na spotřebu zdrojů z hlediska počtu požadavků a velikosti dat nebo pronájmem/rezervací určitých výpočetních zdrojů a úložného prostoru.
- Možnost upravit životnost záznamů pro automatické mazání zastaralých dat.
- Interakce s DBMS a odesílání požadavků se provádí pomocí rozhraní příkazového řádku, integrovaného webového rozhraní nebo sady YDB SDK, která poskytuje knihovny pro C++, C# (.NET), Go, Java, Node.js, PHP a Python.
- Automaticky se zotavujte po selhání s minimálním zpožděním pro aplikace a automaticky udržujte specifikovanou redundanci při ukládání dat.
- Automatické vytváření indexů na primárním klíči a schopnost definovat sekundární indexy pro zlepšení efektivity přístupu k libovolnému sloupci.
- Horizontální škálovatelnost. S rostoucí zátěží a velikostí uložených dat lze cluster jednoduše rozšířit připojením nových uzlů. Výpočetní a úložné vrstvy jsou oddělené, což vám umožňuje škálovat výpočetní a úložný prostor samostatně. Samotný DBMS sleduje rovnoměrné rozložení dat a zátěže s přihlédnutím k dostupným hardwarovým zdrojům. Je možné implementovat geograficky distribuované konfigurace, které pokrývají více datových center v různých částech světa.
- Podpora modelu silné konzistence a ACID transakcí při zpracování dotazů, které zahrnují více uzlů a tabulek. Chcete-li zlepšit výkon, můžete selektivně zakázat kontrolu konzistence.
- Automatická replikace dat, automatické dělení (rozdělování, sharding) při zvýšení velikosti nebo zatížení a automatické vyvažování zatížení a dat mezi uzly.
Konečně, je třeba poznamenat, že YDB se používá v projektech Yandex, kód je napsán v C/C++ a je distribuován pod licencí Apache 2.0, můžete vidět zdrojový kód a další podrobnosti o něm Na následujícím odkazu.