Nemrégiben bejelentették, hogy a Yandex kiadta az "YDB" nevű adatbázis-kezelő rendszerének forráskódját , amely támogatja az SQL dialektust és az ACID tranzakciókat.
Az adatbázis-kezelő rendszert (DBMS) a nulláról építették fel, és kezdeti fejlesztése során a hibatűrés , a hibák utáni automatikus helyreállítás és a skálázhatóság biztosítására törekedtek. Érdemes megjegyezni, hogy a Yandex működőképes YDB-klasztereket indított, amelyek több mint 10 000 csomópontot tartalmaztak, több száz petabájt adatot tároltak, és másodpercenként több millió elosztott tranzakciót kezeltek.
Az YDB fő újdonságai
Az YDB egyik legfontosabb jellemzője a relációs adatmodell használata táblázatokkal. Az YQL ( YDB Query Language) nyelvet használják az adatséma lekérdezésére és definiálására; ez az SQL egy dialektusa, amelyet nagy, elosztott adatbázisokkal való munkához adaptáltak . Tárolási séma létrehozásakor a táblázatok faszerű csoportosítása támogatott, hasonlóan a fájlrendszer könyvtáraihoz. Egy API áll rendelkezésre a JSON formátumú adatokkal való munkához.
Figyelemre méltó továbbá a hibatűrő konfigurációk létrehozásának képessége , amelyek továbbra is működnek, ha lemezek, csomópontok, rackek vagy akár az egyes adatközpontok meghibásodnak. Az YDB támogatja a szinkron telepítést és replikációt három rendelkezésre állási zónában, miközben megőrzi a klaszter állapotát zónahiba esetén.
Kompatibilitás az adathozzáféréssel szkennelési lekérdezéseken keresztül, amelynek célja az adatbázis ad-hoc analitikai lekérdezéseinek végrehajtása, csak olvasható módban végrehajtva és egy grpc folyamatot visszaadva.
Továbbá kiemelkedik azzal is, hogy a natív PDisk komponens és a VDisk réteg segítségével közvetlenül blokkeszközökön tárolja az adatokat . A VDisk mellett a DSProxy is fut, amely elemzi a lemezek elérhetőségét és teljesítményét, hogy problémák esetén kizárja azokat.
Egyéb figyelemre méltó jellemzők a következők:
- Rugalmas architektúra, amely lehetővé teszi különféle szolgáltatások építését az YDB tetejére, egészen a virtuális blokkeszközökig és az állandó várólistákig. Alkalmasság különböző típusú munkaterhelésekhez: OLTP és OLAP (analitikai lekérdezések).
- Többfelhasználós (több bérlős) és kiszolgáló nélküli konfigurációk támogatása.
- Lehetőség az ügyfelek hitelesítésére. A felhasználók létrehozhatják saját virtuális klasztereiket és adatbázisaikat egy közös megosztott infrastruktúrán, figyelembe véve az erőforrás-felhasználást a kérések számában és az adatméretben, vagy bérelhetnek/lefoglalhatnak bizonyos számítási erőforrásokat és tárhelyet.
- Lehetőség a rekordok hasznos élettartamának beállítására az elavult adatok automatikus törléséhez.
- A DBMS-sel való interakció és a kérések benyújtása a parancssori felületen, az integrált webes felületen vagy az YDB SDK segítségével történik, amely könyvtárakat biztosít a C++, C# (.NET), Go, Java, Node.js, PHP és Python számára.
- Automatikus helyreállítás a hibákból minimális késleltetéssel az alkalmazások számára, és automatikusan fenntartja a megadott redundanciát az adatok tárolása során.
- Indexek automatikus létrehozása az elsődleges kulcson és másodlagos indexek meghatározásának lehetősége az tetszőleges oszlopelérés hatékonyságának javítása érdekében.
- Vízszintes skálázhatóság. A tárolt adatok terhelésének és méretének növekedésével a fürt egyszerűen bővíthető új csomópontok csatlakoztatásával. A számítási és tárolási szintek különállóak, lehetővé téve a számítási és tárolási rétegek külön méretezését. A DBMS maga figyeli az adatok és a terhelés egyenletes eloszlását, figyelembe véve a rendelkezésre álló hardver erőforrásokat. Lehetőség van földrajzilag elosztott konfigurációk megvalósítására, amelyek több adatközpontot fednek le a világ különböző részein.
- Erős konzisztencia-modell és ACID-tranzakciók támogatása több csomópontra és táblára kiterjedő lekérdezések feldolgozásakor. A teljesítmény javítása érdekében szelektíven letilthatja a konzisztencia-ellenőrzést.
- Automatikus adatreplikáció, automatikus particionálás (particionálás, felosztás) a méret vagy a terhelés növekedése esetén, valamint a csomópontok közötti automatikus terhelés- és adatkiegyenlítés.
Végül érdemes megjegyezni, hogy az YDB-t Yandex projektekben használják, a kód C/C++ nyelven íródott, és az Apache 2.0 licenc alatt kerül terjesztésre. A forráskódot, valamint további részleteket a következő linken találhatja.