Nedávno bylo oznámeno, že Yandex zveřejnil zdrojový kód pro svůj systém pro správu databází „YDB“ , který implementuje podporu pro dialekt SQL a transakce ACID.
Systém DBMS byl vybudován od základů a původně vyvíjen s cílem zajistit odolnost proti chybám , automatické zotavení po selhání a škálovatelnost. Za zmínku stojí, že Yandex spustil funkční clustery YDB, které obsahovaly více než 10 000 uzlů, uchovávaly stovky petabajtů dat a zpracovávaly miliony distribuovaných transakcí za sekundu.
Hlavní novinky YDB
Jednou z klíčových vlastností 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; je to dialekt SQL přizpůsobený pro práci s rozsáhlými distribuovanými databázemi . Při vytváření schématu úložiště je podporováno stromové seskupení tabulek, podobně jako adresáře v souborovém systému. Pro práci s daty ve formátu JSON je k dispozici API.
Za zmínku stojí také jeho schopnost vytvářet konfigurace odolné vůči chybám , které nadále fungují i při selhání disků, uzlů, racků a dokonce i jednotlivých datových center. YDB podporuje synchronní nasazení a replikaci napříč třemi zónami dostupnosti a zároveň zachovává stav clusteru v případě selhání zóny.
Kompatibilita s přístupem k datům prostřednictvím skenovacích dotazů, určených k provádění ad-hoc analytických dotazů v databázi, spouštěných v režimu pouze pro čtení a vracejících tok grpc.
Dále vyniká také ukládáním dat přímo na bloková zařízení pomocí nativní komponenty PDisk a vrstvy VDisk. Kromě VDisk běží DSProxy, který analyzuje dostupnost a výkon disků a v případě zjištění problémů je vylučuje.
Mezi další pozoruhodné vlastnosti patří:
- 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.
Závěrem stojí za zmínku, že YDB se používá v projektech Yandexu, kód je napsán v jazyce C/C++ a je distribuován pod licencí Apache 2.0. Zdrojový kód, stejně jako další podrobnosti o něm, naleznete na následujícím odkazu.