az elosztott adatbázis-kezelő rendszer kiadása , amelyet a Google és technológiái inspiráltak. A TiDB hibrid HTAP (Hybrid Transactional/Analytical Processing) rendszerek közé tartozik, amelyek képesek valós idejű tranzakciók (OLTP) végrehajtására, valamint analitikai lekérdezések feldolgozására. A projekt Go nyelven készült, és Apache 2.0 licenc alatt.
A TiDB jellemzői:
- SQL támogatás és MySQL protokoll kompatibilis kliens interfész biztosítása, ami megkönnyíti a meglévő MySQL alkalmazások TiDB-re való átállítását, valamint lehetővé teszi a népszerű kliens könyvtárak használatát. A MySQL protokoll mellett JSON alapú API és Spark csatlakozó is használható az adatbázishoz való hozzáféréshez.
- SQL lehetőségek közé tartozik az indexek, aggregáló függvények, GROUP BY, ORDER BY, DISTINCT, egyesítések (LEFT JOIN / RIGHT JOIN / CROSS JOIN), nézetek, ablakos függvények és beágyazott lekérdezések támogatása. Az elérhető funkciók elegendőek olyan webalkalmazások, mint a PhpMyAdmin, és WordPress megfelelő működéséhez;
- A vízszintes skálázás és a hibamentesség lehetősége: a tárolási kapacitás és a számítási teljesítmény új csomópontok egyszerű csatlakoztatásával növelhető. Az adatok redundanciával oszlanak el a csomópontok között, lehetővé téve a működés folytatását az egyes csomópontok meghibásodása esetén. A meghibásodások automatikusan kezelhetők.
- A rendszer garantálja a konzisztenciát, és az ügyfélszoftver számára úgy tűnik, mint egy nagy adatbázis, annak ellenére, hogy valójában a tranzakciók végrehajtásához több csomópont adatait vonják be.
- A fizikailag tárolt adatokhoz különböző háttértárak használhatók a csomópontokban, például a GoLevelDB és a BoltDB helyi tárolómotorok, vagy saját elosztott tárolási motorunk. .
- Az adattárolási séma aszinkron módosításának lehetősége, amely lehetővé teszi oszlopok és indexek élő hozzáadását a jelenlegi műveletek leállítása nélkül.
Fő :
- Teljesítménynövelési munkálatokat végeztünk. A Sysbench 3.0 tesztben az 2.1-es ágat 1.5-ször megelőzi a select és update műveletek végrehajtásakor, míg a TPC-C tesztben 4.5-ször. Az optimalizálások különböző lekérdezéstípusokra vonatkoztak, beleértve az IN, DO és NOT EXISTS al-lekérdezéseket, táblák egyesítési műveleteit (JOIN), indexek használatát és még sok mást.
- Új tárolómotor került bevezetésre, a TiFlash, amely a magasabb teljesítményt célozza meg analitikai feladatok (OLAP) megoldásához az oszlophoz kötött tárolás révén. A TiFlash kiegészíti az előzőleg kínált TiKV tárolót, amely kulcs/érték formátumban sorokban tárolja az adatokat, és optimálisabb a tranzakciós feldolgozási feladatokhoz (OLTP). A TiFlash a TiKV mellett működik, és az adatok a korábbiak szerint továbbra is replikálódnak a TiKV-ben a konszenzus kialakításához használt Raft protokoll segítségével, de minden Raft replikacsoporthoz egy további replikát hoznak létre, amelyet a TiFlash-ban használnak. Ez a megközelítés lehetővé teszi az erőforrások jobb elosztását az OLTP és OLAP feladatok között, valamint az azonnali hozzáférést biztosít a tranzakciós adatokhoz analitikai lekérdezésekhez.
- Kialakították a párhuzamos szemétgyűjtő rendszert, amely jelentősen megnöveli a szemétgyűjtés sebességét nagy klaszterekben és növeli a stabilitást.
- Kísérleti jelleggel bevezetésre került a szerepkör alapú hozzáférés-vezérlő rendszer (RBAC). A hozzáférési jogok megadásának lehetősége is biztosítva van az ANALYZE, USE, SET GLOBAL és SHOW PROCESSLIST műveletekhez.
- Lehetőség nyílik SQL kifejezések használatára a lassú lekérdezések naplójából való kiválasztáshoz.
- Kialakította a törölt táblák gyors helyreállításának mechanizmusát, amely lehetővé teszi a véletlenül törölt adatok helyreállítását.
- Egységesítve lett a naplózott események formátuma.
- Bevezetésre került a pesszimista zárolási mód támogatása, amely a tranzakciók kezelését a MySQL-hez közelebb hozza.
- Hozzáadva az ablakos funkciók (window-funkciók vagy analitikai funkciók) támogatása, amely kompatibilis a MySQL 8.0-val. Az ablakos funkciók lehetővé teszik, hogy minden lekérdezési sor esetében más sorokat használva számításokat végezzünk. Ezzel szemben az aggregáló funkciók, amelyek egy csoportosított sorhalmazt összesűrítenek egyetlen sorba, az ablak tartalma alapján aggregálják az egy vagy több soros eredményhalmazt. Az implementált ablakos funkciók közé tartoznak:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK és ROW_NUMBER; - Hozzáadva az experimentális nézetek (VIEW) támogatása;
- Javítva a particionálási rendszer, lehetőség létrehozva az adatok szekvenciókhoz való elosztására értéktartomány vagy hash-alapján;
- Hozzáadva a plugin fejlesztési keretrendszer, például már elkészült pluginek az IP fehérlistához vagy az audit naplózásához;
- Biztosítva az experimentális támogatás az 'EXPLAIN ANALYZE' funkcióhoz az SQL-lekérdezés végrehajtási tervének felépítéséhez (SQL Tervkezelés);
- Hozzáadva a next_row_id parancs a következő sor azonosítójának megszerzéséhez;
- Új beépített funkciók hozzáadva: JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE és NAME_CONST.
Forrás: opennet.ru
