izdanje distribuirane DBMS , razvijen pod utjecajem tehnologija Google i . TiDB pripada kategoriji hibridnih HTAP sustava (Hibridno Transakcijsko/Analitičko Procesiranje) koji su sposobni kako za izvršavanje transakcija u stvarnom vremenu (OLTP), tako i za analitička upitna obračunavanja. Projekt je napisan na jeziku Go i pod licencom Apache 2.0.
Značajke TiDB-a:
- Podrška za SQL i pružanje korisničkog sučelja kompatibilnog s MySQL protokolom, što olakšava prilagodbu postojećih aplikacija napisanim za MySQL za TiDB, kao i omogućuje korištenje popularnih klijentskih biblioteka. Osim MySQL protokola, za pristup DBMS-u može se koristiti API temeljen na JSON-u i konektor za Spark.
- Iz SQL mogućnosti podržavaju se indeksi, agregatne funkcije, izrazi GROUP BY, ORDER BY, DISTINCT, spojevi (LEFT JOIN / RIGHT JOIN / CROSS JOIN), prikazi, prozor funkcije i podupiti. Pružene mogućnosti su dovoljne za rad s TiDB u web-aplikacijama kao što su PhpMyAdmin, i WordPress;
- Mogućnost horizontalnog skaliranja i osiguranje otpornosti: kapacitet pohrane i računalnu snagu moguće je povećati jednostavnim dodavanjem novih čvorova. Podaci se distribuiraju po čvorovima s redundancijom koja omogućava nastavak rada u slučaju kvara pojedinih čvorova. Kvarovi se automatski obrađuju.
- Sustav jamči dosljednost i za klijentski softver izgleda kao jedna velika DBMS, iako se za izvršenje transakcija zapravo koriste podaci s više čvorova.
- Različiti backendovi mogu se koristiti za fizičko pohranjivanje podataka na čvorovima, poput lokalnih storage engine-a GoLevelDB i BoltDB ili vlastitog engine-a distribuiranog skladišta. .
- Mogućnost asinkrone promjene sheme pohrane, koja omogućava dodavanje stupaca i indeksa u hodu bez prekida obrade trenutnih operacija.
Glavne :
- Rad na povećanju performansi je završen. U testu Sysbench, verzija 3.0 nadmašuje granu 2.1 s 1,5 puta boljim rezultatima za select i update operacije, dok u TPC-C testu postiže 4,5 puta bolje rezultate. Optimizacije su obuhvatile razne vrste upita, uključujući podupite "IN", "DO" i "NOT EXISTS", operacije spajanja tablica (JOIN), korištenje indeksa i još mnogo toga.
- Dodana je nova TiFlash engine za skladištenje, koja omogućava postizanje viših performansi u analitičkim zadacima (OLAP) zahvaljujući skladištenju vezanom za stupce. TiFlash dopunjuje prethodno ponuđeno skladište TiKV, koje pohranjuje podatke po redovima u ključ/vrijednost formatu i optimalnije je za obradu transakcija (OLTP). TiFlash radi zajedno s TiKV, a podaci se i dalje repliciraju u TiKV koristeći Raft protokol za određivanje konsenzusa, ali za svaku grupu Raft replika stvara se dodatna replika koja se koristi u TiFlash-u. Takav pristup omogućava bolje razdvajanje resursa između OLTP i OLAP zadataka, kao i trenutnu dostupnost podataka transakcija za analitičke upite.
- Implementiran je distribuirani sakupljač smeća, koji značajno povećava brzinu sakupljanja smeća u velikim klasterima i poboljšava stabilnost rada.
- Dodana je eksperimentalna implementacija sustava za upravljanje pristupom na temelju uloga (RBAC). Također, omogućeno je postavljanje prava pristupa za operacije ANALYZE, USE, SET GLOBAL i SHOW PROCESSLIST.
- Dodana je mogućnost korištenja SQL izraza za selekciju iz loga sporih upita.
- Implementiran je mehanizam brzog vraćanja obrisanih tablica, koji omogućava povrat slučajno izbrisanih podataka.
- Standardiziran je format zapisivanja logova.
- Dodana je podrška za pesimistički način blokiranja, koji čini obradu transakcija bližom MySQL-u.
- Dodana je podrška za prozorske funkcije (window-funkcije ili analitičke funkcije) koje su kompatibilne s MySQL 8.0. Prozorske funkcije omogućuju izvođenje izračuna za svaki redak upita koristeći druge retke. Za razliku od agregatnih funkcija koje sažimaju grupirani skup redaka u jedan redak, prozorske funkcije obavljaju agregaciju na temelju sadržaja 'prozora', koji uključuje jedan ili više redaka iz rezultantnog skupa. Među implementiranim prozorskim funkcijama su:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK i ROW_NUMBER; - Dodana je eksperimentalna podrška za prikaze (VIEW);
- Poboljšan je sustav particioniranja, dodana je mogućnost raspodjele podataka po sekcijama na temelju raspona vrijednosti ili hešova;
- Dodana je struktura za razvoj dodataka, na primjer, već su pripremljeni dodaci za korištenje bijele liste IP-a ili vođenje audit loga;
- Osigurana je eksperimentalna podrška za funkciju 'EXPLAIN ANALYZE' za izradu plana izvršenja SQL upita (SQL Plan Management);
- Dodana je naredba next_row_id za dobivanje identifikatora sljedećeg retka;
- Dodane su nove ugrađene funkcije JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE i NAME_CONST.
Izvor: opennet.ru
