lëshimi i databazës së shpërndarë , e zhvilluar nën ndikimin e teknologjive të Google dhe . TiDB i përket kategorisë së sistemeve hibride HTAP (Hybrid Transactional/Analytical Processing), të afta të realizojnë transaksione në kohë reale (OLTP) dhe të kryejnë përpunimin e kërkesave analitike. Projekti është shkruar në gjuhën Go dhe nën licencën Apache 2.0.
Karakteristikat e TiDB:
- Mbështetje për SQL dhe ofrimi i një ndërlidhësi klienti, i cili është kompatibil me protokollin MySQL, duke e bërë më të lehtë adaptimin për TiDB të aplikacioneve ekzistuese të shkruara për MySQL, si dhe duke lejuar përdorimin e bibliotekave të zakonshme të klientëve. Përveç protokollit MySQL, është e mundur të përdoret API bazuar në JSON dhe konektori për Spark për qasjen në databazë.
- Nga mundësitë e SQL mbështeten indekset, funksionet agregate, shprehjet GROUP BY, ORDER BY, DISTINCT, bashkimeve (LEFT JOIN / RIGHT JOIN / CROSS JOIN), pamjeve, funksionet e dritareve dhe nënkërkesat. Mundësitë e ofruara janë të mjaftueshme për të organizuar punën me TiDB në aplikacione web si PhpMyAdmin, dhe WordPress;
- Mundësia për shkallëzim horizontal dhe sigurimin e qëndrueshmërisë: madhësia e magazinës dhe kapaciteti llogaritës mund të zmadhohen me thjesht lidhjen e node-ve të reja. Të dhënat shpërndahen midis node-ve me tepërsi, duke lejuar vazhdimin e punës në rastin e dështimit të node-ve të veçanta. Dështimet përpunohen automatikisht.
- Sistemi garanton besueshmërinë dhe për softuerin e klientit duket si një databazë e madhe, megjithëse në të vërtetë për realizimin e transaksioneve të dhënat tërheqin nga shumë node.
- Për ruajtjen fizike të të dhënave në node mund të përdoren backend të ndryshëm, si motorët lokalë të ruajtjes GoLevelDB dhe BoltDB ose motorin e tij të ruajtjes së shpërndarë .
- Mundësia për ndryshimin asinkron të skemës së ruajtjes, duke lejuar shtimin e kolonave dhe indekseve në fluks pa ndaluar përpunimin e operacioneve aktuale.
Main :
- ĂshtĂ« realizuar njĂ« punĂ« pĂ«r rritjen e performancĂ«s. NĂ« testin Sysbench versioni 3.0 tejkalon degen 2.1 me 1.5 herĂ« kur kryhen operacionet select dhe update, ndĂ«rsa nĂ« testin TPC-C me 4.5 herĂ«. Optimizimet kanĂ« prekur lloje tĂ« ndryshme tĂ« kĂ«rkesave, pĂ«rfshirĂ« nĂ«nkĂ«rkesat "IN", "DO" dhe "NOT EXISTS", operacionet e bashkimeve tĂ« tabelave (JOIN), pĂ«rdorimin e indekseve dhe shumĂ« tĂ« tjera.
- Shtohet një motor i ri ruajtjeje TiFlash, i cili lejon arritjen e një performancë më të lartë në zgjidhjen e detyrave analitike (OLAP) përmes ruajtjes në lidhje me kolonat. TiFlash plotëson ruajtjen e mëparshme TiKV, e cila ruan të dhënat në formatin rresht/çelës vlerë dhe është më optimale për detyrat e përpunimit të transaksioneve (OLTP). TiFlash punon ngjitur me TiKV dhe të dhënat vazhdojnë të replikohen në TiKV si më parë duke përdorur protokollin Raft për të përcaktuar konsensusin, por për çdo grup replikash Raft krijohet një replikë shtesë, e cila përdoret në TiFlash. Ky qasje lejon arritjen e një ndarjeje më të mirë të burimeve midis detyrave OLTP dhe OLAP dhe gjithashtu bën të dhënat e transaksioneve menjëherë të aksesueshme për kërkesat analitike;
- Implementohet një mbledhës i shpërndarë i mbetjeve, i cili lejon rritjen e ndjeshme të shpejtësisë së mbledhjes së mbetjeve në klasterët e mëdhenj dhe rrit stabilitetin e funksionimit;
- Shtohet një implementim eksperimental i sistemit të ndarjes së aksesit bazuar në role (RBAC). Gjithashtu sigurohet mundësia për të caktuar të drejtat e qasjes për operacionet ANALYZE, USE, SET GLOBAL dhe SHOW PROCESSLIST;
- Shtohet mundësia e përdorimit të shprehjeve SQL për përzgjedhjen nga logu i pyetjeve të ngadalta;
- Implementohet një mekanizëm i shpejtë për rikuperimin e tabelave të fshira, i cili lejon rikuperimin e të dhënave të fshira rastësisht;
- Formati i regjistrimeve të shkruara është unifikuar;
- Shtohet mbështetje për modalitetin pesimistik të bllokimit, i cili e bën përpunimin e transaksioneve më të afërt me MySQL;
- Shtohet mbështetje për funksionet e dritareve (funksionet e dritareve ose funksionet analitike) të përputhshme me MySQL 8.0. Funksionet e dritareve lejojnë që për çdo rresht të pyetjes të kryhen llogaritje duke përdorur rreshta të tjerë. Ndryshe nga funksionet agregate, të cilat përmbledhin një grup të rreshtave të grupuar në një rresht, funksionet e dritareve kryejnë agregimin në bazë të përmbajtjes së "dritares", e cila përfshin një ose më shumë rreshta nga grupi rezultues. Mes funksioneve të implementuara të dritareve janë:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK dhe ROW_NUMBER; - Shtohet mbështetje eksperimentale për pamjet (VIEW);
- Përmirësohet sistemi i seksionimit (particionimit), e shtuar mundësia për shpërndarjen e të dhënave në seksione në bazë të një diapazoni vlerash ose hash-eve;
- Shtuar një framework për zhvillimin e shtesave, për shembull, janë përgatitur tashmë shtesa për përdorimin e listave të bardha IP ose për të mbajtur një regjistrim auditi;
- Siguruar mbĂ«shtetje eksperimentale pĂ«r funksionin âEXPLAIN ANALYZEâ pĂ«r ndĂ«rtimin e planit tĂ« ekzekutimit tĂ« pyetjeve SQL (Menaxhimi i Planit SQL);
- Shtuar komanda next_row_id për të marrë identifikuesin e rreshtit të ardhshëm;
- Shtuar funksione të reja të ndërtuara si JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE dhe NAME_CONST.
Burimi: opennet.ru
