Na voljo izdaja porazdeljene DBMS TiDB 3.0razvil pod vplivom Googlovih tehnologij Spanner и F1. TiDB spada v kategorijo hibridnih sistemov HTAP (Hybrid Transactional/Analytical Processing), ki so zmožni zagotavljati transakcije v realnem času (OLTP) in obdelovati analitične poizvedbe. Projekt je napisan v Go and distributer licenciran pod Apache 2.0.
Lastnosti TiDB:
Podpora za SQL in zagotavljanje odjemalskega vmesnika, združljivega s protokolom MySQL, kar olajša prilagajanje obstoječih aplikacij, napisanih za MySQL, v TiDB, poleg tega pa vam omogoča uporabo običajnih odjemalskih knjižnic. Poleg protokola MySQL lahko za dostop do DBMS uporabite API, ki temelji na JSON, in konektor za Spark.
Od funkcij SQL so podprti indeksi, združevalne funkcije, GROUP BY, ORDER BY, DISTINCT izrazi, združevanja (LEFT JOIN / RIGHT JOIN / CROSS JOIN), pogledi, okenske funkcije in podpoizvedbe. Zagotovljene možnosti so dovolj za organizacijo dela s TiDB takih spletnih aplikacij, kot je PhpMyAdmin, Gogs in WordPress;
Prilagodljivost in odpornost: Moč shranjevanja in obdelave je mogoče povečati preprosto z dodajanjem novih vozlišč. Podatki so porazdeljeni po vozliščih z redundanco, da se omogoči nadaljevanje operacij, če posamezna vozlišča odpovejo. Napake se obravnavajo samodejno.
Sistem zagotavlja doslednost in je za odjemalsko programsko opremo videti kot en velik DBMS, kljub dejstvu, da so za dokončanje transakcije dejansko vključeni podatki iz številnih vozlišč.
Za fizično shranjevanje podatkov na vozliščih se lahko uporabljajo različna zaledja, na primer lokalna mehanizma za shranjevanje GoLevelDB in BoltDB ali naš lastni mehanizem za porazdeljeno shranjevanje. TiKV.
Možnost asinhronega spreminjanja sheme shranjevanja, kar vam omogoča sprotno dodajanje stolpcev in indeksov, ne da bi ustavili obdelavo tekočih operacij.
Opravljeno je bilo delo za povečanje produktivnosti. V testu Sysbench je različica 3.0 2.1-krat hitrejša od veje 1.5 pri izvajanju operacij izbire in posodobitve, v testu TPC-C pa 4.5-krat. Optimizacije so vplivale na različne vrste poizvedb, vključno s podpoizvedbami IN, DO in NOT EXISTS, operacijami združevanja tabel (JOIN), uporabo indeksov in še veliko več;
Dodan nov mehanizem za shranjevanje TiFlash, ki omogoča višjo zmogljivost pri reševanju analitičnih problemov (OLAP) zahvaljujoč stolpčnemu shranjevanju. TiFlash dopolnjuje predhodno ponujeno shrambo TiKV, ki shranjuje podatke po vrsticah v obliki ključ/vrednost in je bolj idealna za naloge obdelave transakcij (OLTP). TiFlash deluje vzporedno s TiKV in podatki se še naprej replicirajo v TiKV kot prej z uporabo protokola Raft za določanje soglasja, vendar se za vsako skupino replik Raft ustvari dodatna replika, ki se uporablja v TiFlash. Ta pristop omogoča boljšo skupno rabo virov med nalogami OLTP in OLAP, poleg tega pa omogoča takojšnjo dostopnost transakcijskih podatkov za analitične poizvedbe;
Implementiran je porazdeljeni zbiralnik smeti, ki lahko bistveno poveča hitrost zbiranja smeti v velikih gručih in izboljša stabilnost;
Dodana je bila eksperimentalna izvedba nadzora dostopa na podlagi vlog (RBAC). Možno je tudi nastaviti pravice dostopa za operacije ANALIZA, UPORABA, NASTAVITEV GLOBALNEGA in PRIKAŽI SEZNAM PROCESOV;
Dodana možnost uporabe izrazov SQL za pridobivanje počasnih poizvedb iz dnevnika;
Implementiran je mehanizem za hitro obnovitev izbrisanih tabel, ki vam omogoča obnovitev pomotoma izbrisanih podatkov;
Format zapisanih dnevnikov je poenoten;
Dodana podpora za pesimistični način zaklepanja, zaradi česar je obdelava transakcij bolj podobna MySQL;
Dodana podpora za okenske funkcije (okenske funkcije ali analitične funkcije), združljive z MySQL 8.0. Okenske funkcije vam omogočajo izvajanje izračunov za vsako vrstico poizvedbe z uporabo drugih vrstic. Za razliko od agregatnih funkcij, ki strnejo združen niz vrstic v eno vrstico, se okenske funkcije združijo na podlagi vsebine »okna«, ki vključuje eno ali več vrstic iz nabora rezultatov. Med implementiranimi funkcijami oken:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK in ROW_NUMBER;
Dodana eksperimentalna podpora za poglede (VIEW);
Sistem particioniranja je bil izboljšan, dodana je bila možnost porazdelitve podatkov v odseke na podlagi obsega vrednosti ali zgoščenj;
Dodano je bilo ogrodje za razvoj vtičnikov, na primer vtičniki so že pripravljeni za uporabo seznama dovoljenih IP ali vzdrževanje revizijskega dnevnika;
Zagotovljena je bila eksperimentalna podpora za funkcijo »EXPLAIN ANALYZE« za izdelavo izvedbenega načrta za poizvedbo SQL (SQL Plan Management);
Dodan ukaz next_row_id za pridobitev ID-ja naslednje vrstice;
Dodane nove vgrajene funkcije JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE in NAME_CONST.