Dostupno izdanje distribuiranog DBMS-a TiDB 3.0, razvijen pod utjecajem Googleovih tehnologija ključ za matice и F1. TiDB pripada kategoriji hibridnih HTAP (Hybrid Transactional/Analytical Processing) sustava, sposobnih i za pružanje transakcija u stvarnom vremenu (OLTP) i za obradu analitičkih upita. Projekt je napisan u Go and distribuira licenciran pod Apache 2.0.
Značajke TiDB-a:
SQL podrška i pružanje klijentskog sučelja kompatibilnog s MySQL protokolom, što pojednostavljuje prilagodbu postojećih aplikacija napisanih za MySQL u TiDB, a također omogućuje korištenje uobičajenih klijentskih biblioteka. Uz MySQL protokol, možete koristiti API temeljen na JSON-u i konektor za Spark za pristup DBMS-u.
Značajke SQL-a podržavaju indekse, agregatne funkcije, GROUP BY, ORDER BY, DISTINCT izraze, spajanja (LEFT JOIN / RIGHT JOIN / CROSS JOIN), poglede, funkcije prozora i podupiti. Pružene mogućnosti dovoljne su za organizaciju rada s TiDB-om za takve web aplikacije kao što su PhpMyAdmin, GOGS i WordPress;
Horizontalna skalabilnost i otpornost na pogreške: veličina pohrane i procesorska snaga mogu se povećati jednostavnim povezivanjem novih čvorova. Podaci se distribuiraju preko čvorova s redundancijom, što omogućuje nastavak rada ako pojedinačni čvorovi zakažu. Kvarovi se rješavaju automatski.
Sustav jamči konzistentnost i za klijentski softver izgleda kao jedan veliki DBMS, unatoč činjenici da se zapravo podaci iz mnogih čvorova privlače za dovršetak transakcije.
Za fizičko pohranjivanje podataka na čvorovima mogu se koristiti različiti backendovi, na primjer, lokalni pogoni za pohranu GoLevelDB i BoltDB ili naš vlastiti distribuirani mehanizam za pohranu TiKV.
Sposobnost asinkrone promjene sheme pohrane, što vam omogućuje dodavanje stupaca i indeksa u hodu bez zaustavljanja obrade tekućih operacija.
Radilo se na povećanju produktivnosti. U testu Sysbench, izdanje 3.0 je 2.1 puta brže od grane 1.5 pri izvođenju operacija odabira i ažuriranja, a u testu TPC-C 4.5 puta. Optimizacije su utjecale na razne vrste upita, uključujući IN, DO i NOT EXISTS podupiti, operacije spajanja tablica (JOIN), korištenje indeksa i još mnogo toga;
Dodan je novi mehanizam za pohranu TiFlash koji omogućuje veću izvedbu u rješavanju analitičkih problema (OLAP) zahvaljujući pohrani u stupcima. TiFlash nadopunjuje prethodno ponuđenu TiKV pohranu, koja pohranjuje podatke redom u formatu ključ/vrijednost i idealnija je za zadatke obrade transakcija (OLTP). TiFlash radi rame uz rame s TiKV-om i podaci se nastavljaju replicirati u TiKV kao i prije pomoću Raft protokola za određivanje konsenzusa, ali za svaku grupu Raft replika stvara se dodatna replika koja se koristi u TiFlashu. Ovaj pristup omogućuje bolje dijeljenje resursa između OLTP i OLAP zadataka, a također čini transakcijske podatke trenutačno dostupnima za analitičke upite;
Implementiran je distribuirani skupljač smeća, koji može značajno povećati brzinu skupljanja smeća u velikim klasterima i poboljšati stabilnost;
Dodana je eksperimentalna implementacija kontrole pristupa temeljene na ulogama (RBAC). Također je moguće postaviti prava pristupa za operacije ANALIZIRAJ, KORISTI, POSTAVI GLOBALNO i PRIKAŽI POPIS PROCESA;
Dodana mogućnost korištenja SQL izraza za izdvajanje sporih upita iz dnevnika;
Implementiran je mehanizam za brzo vraćanje izbrisanih tablica, što vam omogućuje vraćanje slučajno izbrisanih podataka;
Unificiran je format snimljenih dnevnika;
Dodana podrška za pesimistički način zaključavanja, što obradu transakcije čini sličnijom MySQL-u;
Dodana podrška za prozorske funkcije (prozorske funkcije ili analitičke funkcije) kompatibilne s MySQL 8.0. Funkcije prozora omogućuju izračune za svaki redak upita pomoću drugih redaka. Za razliku od agregatnih funkcija, koje sažimaju grupirani skup redaka u jedan red, prozorske funkcije agregiraju na temelju sadržaja "prozora", koji uključuje jedan ili više redaka iz skupa rezultata. Među implementiranim funkcijama prozora:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK i ROW_NUMBER;
Dodana eksperimentalna podrška za poglede (VIEW);
Sustav particioniranja je poboljšan, dodana je mogućnost distribucije podataka u odjeljke na temelju raspona vrijednosti ili hashova;
Dodan je okvir za razvoj dodataka, na primjer, dodaci su već pripremljeni za korištenje popisa dopuštenih IP adresa ili održavanje revizijskog dnevnika;
Pružena je eksperimentalna podrška za funkciju “EXPLAIN ANALYZE” za izradu plana izvršenja za SQL upit (SQL Plan Management);
Dodana naredba next_row_id za dobivanje ID-a sljedećeg retka;
Dodane su nove ugrađene funkcije JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE i NAME_CONST.