lëshimi i DB të shpërndarë , i zhvilluar nën ndikimin e teknologjive Google dhe . TiDB i përket kategorisë së sistemeve hibride HTAP (Hybrid Transactional/Analytical Processing), të cilat janë në gjendje të sigurojnë realizimin e transaksioneve në kohë reale (OLTP) dhe të realizojnë përpunimin e pyetjeve 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ërfaqeje klienti, përputhshëm me protokollin MySQL, çka e bën adaptimin për TiDB të aplikacioneve ekzistuese që janë shkruar për MySQL më të lehtë, si dhe lejon përdorimin e bibliotekave të njohura të klientëve. Përveç protokollit MySQL, mund të përdoret API me bazë JSON dhe një lidhës për Spark për të aksesuar DB.
- Nga mundësitë e SQL mbështeten indekset, funksionet agregate, shprehjet GROUP BY, ORDER BY, DISTINCT, bashkëtitë (LEFT JOIN / RIGHT JOIN / CROSS JOIN), pamjet, funksionet e dritarave dhe nënpyetjet. Mundësitë e ofruara janë të mjaftueshme për të organizuar punën me TiDB të aplikacioneve web si PhpMyAdmin, dhe WordPress;
- Mundësia për skalim horizontal dhe sigurimin e qëndrueshmërisë: madhësia e magazinës dhe fuqia llogaritëse mund të zgjaten thjesht duke lidhur nyje të reja. Të dhënat shpërndahen nëpër nyje me tepërsi, duke lejuar vazhdimin e punës në rastin e dështimeve të nyjeve të veçanta. Dështimet trajtohen automatikisht.
- Sistemi garanton konsistencën dhe për softuerin e klientit duket si një bazë e dhënash e madhe, ndonëse në të vërtetë për ekzekutimin e transaksioneve përfshihen të dhëna nga shumë nyje.
- Për ruajtjen fizike të të dhënave në nyje mund të përdoren backend të ndryshme, për shembull, motorët lokalë të ruajtjes GoLevelDB dhe BoltDB ose motorin e vet të ruajtjes së shpërndarë. .
- Mundësia për ndryshime asinkrone në skemën e ruajtjes, duke lejuar shtimin e kolonave dhe indekseve në fluks pa ndaluar përpunimin e operacioneve aktuale.
Ndryshimet kryesore :
- Ecurar puna për rritjen e performancës. Në provimin Sysbench versioni 3.0 e tejkalon degën 2.1 me 1.5 herë në ekzekutimin e operacioneve select dhe update, ndërsa në provimin TPC-C me 4.5 herë. Optimizimet përfshinë lloje të ndryshme të kërkesave, duke përfshirë nënkërkesat «IN», «DO» dhe «NOT EXISTS», operacionet e bashkimit të tabelave (JOIN), përdorimin e indekseve dhe shumë të tjera;
- Shtuar një motor të ri ruajtjeje TiFlash, i cili mundëson një performancë më të lartë në zgjidhjen e detyrave analitike (OLAP), falë ruajtjes në lidhje me kolonat. TiFlash plotëson ruajtjen e mëparshme TiKV, e cila ruan të dhënat në formën e rreshtave sipas formatit çelës/vlerë dhe është më e optimizuar për detyrat e përpunimit të transaksioneve (OLTP). TiFlash funksionon ngjitur me TiKV dhe të dhënat vazhdojnë si më parë të replikohen në TiKV me përdorimin e protokollit Raft për të vendosur konsensusin, por për çdo grup replikash Raft krijohet një replikë shtesë, e cila përdoret në TiFlash. Ky qasje lejon një ndarje më të mirë të burimeve midis detyrave OLTP dhe OLAP, si dhe bën të dhënat e transaksioneve menjëherë të disponueshme për kërkesat analitike;
- Një mbledhës i shpërndarë i plehrave është realizuar, i cili lejon një rritje të konsiderueshme të shpejtësisë së mbledhjes së plehrave në klasterët e mëdhenj dhe rrit stabilitetin e funksionimit;
- Implementimi eksperimental i sistemit të ndarjes së aksesit në bazë të roleve (RBAC) është shtuar. Gjithashtu, është siguruar mundësia e caktimit të të drejtave të aksesit për operacionet ANALYZE, USE, SET GLOBAL dhe SHOW PROCESSLIST;
- është shtuar mundësia e përdorimit të shprehjeve SQL për të tërhequr nga logu i pyetjeve të ngadalta;
- Mekanizmi i rikuperimit të shpejtë të tabelave të fshira është realizuar, duke mundësuar rikuperimin e të dhënave të fshira rastësisht;
- Formati i regjistrimit të logjeve është unifikuar;
- Përkrahja për modin e bllokimit pesimist është shtuar, i cili bën që përpunimi i transaksioneve të jetë më afër MySQL;
- Shtesa e mbështetjes për funksionet e dritareve (funksionet e dritareve ose funksionet analitike), të përshtatshme me MySQL 8.0. Funksionet e dritareve lejojnë që për secilën rresht të kërkimit të kryhen llogaritje duke përdorur rreshta të tjerë. Në dallim nga funksionet agregate, të cilat përmbledhin një grup rreshtash në një rresht, funksionet e dritareve realizojnë agregimin në bazë të përmbajtjes së "dritares", që përfshin një ose më shumë rreshta nga grupi rezultues. Ndër funksionet e dritares të realizuara janë:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK dhe ROW_NUMBER; - Shtesa e mbështetjes eksperimentale për pamjet (VIEW);
- Përmirësimi i sistemit të ndarjeve (particionimit), shtesa e mundësisë për shpërndarjen e të dhënave në seksione në bazë të intervaleve të vlerave ose hash-eve;
- Shtimi i një framerok për zhvillimin e plugineve, për shembull, janë përgatitur tashmë plugina për përdorimin e një liste të bardhë IP ose për mbajtjen e një regjistri auditimi;
- Sigurimi i mbështetjes eksperimentale për funksionin "EXPLAIN ANALYZE" për ndërtimin e planit të ekzekutimit të pyetjeve SQL (Menaxhimi i Planeve SQL);
- Shtimi i komandës next_row_id për marrjen e identifikuesit të rreshtit të ardhshëm;
- Shto janë shtuar funksione të reja të integruara JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE dhe NAME_CONST.
Burimi: opennet.ru
