jaotatud andmebaasi väljaanne , mille arendamisel on saanud inspiratsiooni Google'i tehnoloogiatest ja . TiDB kuulub hübriidsüsteemide HTAP (Hübriidne Tehingu/Analüütiline Töötlemine) kategooriasse, mis suudavad nii tagada reaalaja tehingute täitmist (OLTP) kui ka analüütiliste päringute töötlemist. Projekt on kirjutatud Go keeles ja lisensiga Apache 2.0.
TiDB omadused:
- SQL-i tugi ja kliendiliidese pakkumine, mis on ühilduv MySQL protokolliga, mis lihtsustab TiDB-s olemasolevate MySQL-ile kirjutatud rakenduste kohandamist ning võimaldab kasutada levinud klienditeeke. Lisaks MySQL protokollile saab andmebaasi juurde pääseda ka JSON-põhise API ja Spark konnektori abil.
- SQL võimalustest on toetatud indeksid, agregaadifunktsioonid, GROUP BY, ORDER BY, DISTINCT, liidud (LEFT JOIN / RIGHT JOIN / CROSS JOIN), vaated, aknafunktsioonid ja alamküsitlused. Pakutavad võimalused on piisavad TiDB kasutamiseks veebirakendustes nagu PhpMyAdmin, ja WordPress;
- Horisontaalse skaleeritavuse ja tõrkevaba töökindluse võimalus: salvestusruumi ja arvutusvõimet saab suurendada lihtsalt uute sõlmede lisamisega. Andmed jaotatakse sõlmede vahel üleliigsuse põhimõttel, mis võimaldab süsteemil jätkata tööd üksikute sõlmede rikke korral. Rikete käsitlemine toimub automaatselt.
- Süsteem garanteerib järjepidevuse ning klienditarkvara jaoks näeb see välja nagu üks suur andmebaas, hoolimata sellest, et tehingu tegemiseks kaasatakse andmed paljusid sõlmi.
- Füüsiliste andmete salvestamiseks sõlmedes võivad kasutada erinevaid taustsüsteeme, näiteks GoLevelDB ja BoltDB lokaalsed salvestusmootorid või omaenda hajutatud salvestusmootor. .
- Schema salvestamise asünkroonse muutmise võimalus, mis võimaldab lisada veerge ja indekseid reaalajas ilma praeguste toimingute täitmist peatamata.
Peamised :
- On tehtud tööd jõudluse suurendamiseks. Testis Sysbench versioon 3.0 ületab haru 2.1 1,5 korda select ja update operatsioonide täitmisel, ning testis TPC-C koguni 4,5 korda. Optimeerimised puudutasid erinevaid päringute tüüpe, sealhulgas alampäringud "IN", "DO" ja "NOT EXISTS", tabelite ühendamise (JOIN) operatsioonid, indekseerimise kasutamine ja palju muud.
- Uus salvestusmootor TiFlash võimaldab saavutada kõrgemat jõudlust analüütiliste ülesannete (OLAP) täitmisel, salvestades andmeid veergude järgi. TiFlash täiendab varasemalt pakutud salvestust TiKV, mis salvestab andmeid ridade lõikes võtme/väärtuse formaadis ja on optimaalsem tehingute töötlemise (OLTP) ülesannete jaoks. TiFlash töötab koos TiKV-ga ning andmed jätkavad senist replikatsiooni TiKV-s, kasutades Rafti protokolli konsensuse määramiseks, kuid iga Rafti replikatsioonigruppi luuakse täiendav replikatsioon, mida kasutatakse TiFlashis. Selline lähenemine võimaldab paremat ressursside jagamist OLTP ja OLAP ülesannete vahel ning muudab tehinguandmed koheselt kergesti kättesaadavaks analüütilistele päringutele.
- Rakendatud on hajutatud prügikoristussüsteem, mis võimaldab oluliselt kiirendada prügikoristust suurtes klastrites ja tõsta töö stabiilsust.
- Lisatud on eksperimentaalne rakendus rollipõhise juurdepääsu haldamise süsteemist (RBAC). Samuti on tagatud võimalus seadistada juurdepääsuõigusi ANALYZE, USE, SET GLOBAL ja SHOW PROCESSLIST operatsioonide jaoks.
- Lisatud on võimalus kasutada SQL-i väljendeid aeglaste päringute logidest valimiseks.
- Rakendatud on kiire eemaldatud tabelite taastamise mehhanism, mis võimaldab taastada juhuslikult eemaldatud andmeid.
- Logide salvestamise formaat on unifitseeritud.
- Lisatud on pessimistliku lukustamisrežiimi tugi, mis muudab tehingute töötlemise rohkem MySQL-i lähedaseks.
- Lisatud on kõnede funktsioonide tugi (akna funktsioonid või analüütilised funktsioonid), mis on ühilduvad MySQL 8.0-ga. Akna funktsioonid võimaldavad igale päringu reale teha arvutusi, kasutades teisi reale. Erinevalt agregaatfunktsioonidest, mis kuvavad rühmitatud ridade kogumi ühe reana, teevad akna funktsioonid agregatsiooni, tuginedes "akna" sisule, mis sisaldab ühte või enamat rida tulemuste kogumist. Rakendatud akna funktsioonide hulka kuuluvad:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK ja ROW_NUMBER; - Lisatud on eksperimentaalse toe toega vaadete (VIEW) rakendamine;
- Parandatud on sektsioonide (partitsioneerimise) süsteemi, lisatud võimalus andmete jaotamiseks sektsioonidesse vastavalt väärtuste vahemikule või hash'idele;
- Lisatud on pluginate arendamise raamistik, näiteks on juba valmis pluginaid IP valge nimekirja kasutamiseks või auditi logimise pidamiseks;
- Tagatud on eksperimentaalne toe tugi funktsioonile "EXPLAIN ANALYZE" SQL-päringu täitmisplaani koostamiseks (SQL Plan Management);
- Lisatud on käsk next_row_id järgmise rea identifikaatori saamiseks;
- Lisatud on uued sisseehitatud funktsioonid JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE ja NAME_CONST.
Allikas: opennet.ru
