Eskuragarri Banatutako DBMS baten askatzea TiDB 3.0, Google teknologien eraginez garatua Spanner ΠΈ F1. TiDB HTAP (Hybrid Transactional/Analytical Processing) sistema hibridoen kategoriakoa da, denbora errealeko transakzioak (OLTP) eta kontsulta analitikoak prozesatzeko gai direnak. Proiektua Go hizkuntzan idatzita dago eta arabera banatuta Apache 2.0 lizentziapean.
TiDBren ezaugarriak:
SQL laguntza eta MySQL protokoloarekin bateragarria den bezero-interfazea hornitzea, MySQLrako idatzitako aplikazioen TiDBra egokitzea errazten duena, eta bezeroen liburutegi arruntak erabiltzeko aukera ere ematen du. MySQL protokoloaz gain, JSONn oinarritutako API bat eta Spark-erako konektore bat erabil ditzakezu DBMSra sartzeko.
SQL-k onartzen ditu indizeak, funtzio agregatuak, GROUP BY, ORDER BY, DISTINCT esamoldeak, bateratzeak (LEFT JOIN / RIGHT JOIN / CROSS JOIN), ikuspegiak, leiho funtzioak eta azpikontsultak. Emandako gaitasunak nahikoak dira PhpMyAdmin bezalako web aplikazioetarako TiDBrekin lana antolatzeko, Gogak eta WordPress;
Eskalagarritasun horizontala eta akatsen tolerantzia: biltegiratze-tamaina eta prozesatzeko potentzia handitu daitezke nodo berriak konektatuz. Datuak nodoen artean banatzen dira erredundantziarekin, eta funtzionamendua jarraitzeko aukera ematen du, banakako nodoek huts egiten badute. Hutsegiteak automatikoki kudeatzen dira.
Sistemak koherentzia bermatzen du eta bezeroaren softwarearentzat DBMS handi bat dirudi, nahiz eta nodo askotako datuak erakartzen diren transakzioa burutzeko.
Nodoetan datuak fisikoki gordetzeko, backend desberdinak erabil daitezke, adibidez, tokiko biltegiratze-motorrak GoLevelDB eta BoltDB edo gure banatutako biltegiratze-motor propioa. TiKV.
Biltegiratze-eskema modu asinkronoan aldatzeko gaitasuna, zutabeak eta indizeak berehala gehitzeko aukera ematen dizu, etengabeko eragiketen prozesamendua gelditu gabe.
Produktibitatea areagotzeko lanak egin dira. Sysbench proban, 3.0 bertsioa 2.1 adarra baino 1.5 aldiz azkarragoa da hautaketa eta eguneratze eragiketak egiterakoan, eta TPC-C proban 4.5 aldiz. Optimizazioek hainbat kontsultei eragin diete, besteak beste, IN, DO eta NOT EXISTS azpikontsultei, taulak bateratzeko (JOIN) eragiketei, indizeen erabilerari eta askoz gehiago;
TiFlash biltegiratze-motor berri bat gehitu da, arazo analitikoak (OLAP) ebazteko errendimendu handiagoa ahalbidetzen duen zutabe biltegiratzeari esker. TiFlash-ek aurrez eskainitako TiKV biltegia osatzen du, errenkaden datuak gako/balio formatuan gordetzen dituena eta transakzioen prozesatzeko zereginetarako (OLTP) aproposagoa dena. TiFlash-ek TiKV-rekin batera lan egiten du eta datuak TiKV-ra errepikatzen jarraitzen du Raft protokoloa erabili aurretik adostasuna zehazteko, baina Raft-en erreplika talde bakoitzeko TiFlash-en erabiltzen den erreplika gehigarri bat sortzen da. Ikuspegi honek OLTP eta OLAP zereginen artean baliabideak hobeto partekatzeko aukera ematen du, eta transakzio-datuak berehala eskuragarri jartzen ditu kontsulta analitikoetarako;
Banatutako zabor-biltzaile bat ezarri da, eta horrek zabor bilketa-abiadura nabarmen handitu dezake multzo handietan eta egonkortasuna hobetu;
Role-Based Access Control (RBAC) inplementazio esperimentala gehitu da. Halaber, AZTERTU, ERABILI, EZAR GLOBAL eta ERAKUTSI PROZESU-LISTA eragiketetarako sarbide-eskubideak ezar daitezke;
Erregistrotik kontsulta motelak ateratzeko SQL adierazpenak erabiltzeko gaitasuna gehitu da;
Ezabatutako taulak azkar leheneratzeko mekanismo bat ezarri da, ustekabean ezabatutako datuak leheneratu ahal izateko;
Grabatutako erregistroen formatua bateratu egin da;
Blokeo modu ezkorrari euskarria gehitu zaio, transakzioen prozesamendua MySQLren antzekoagoa bihurtzen duena;
MySQL 8.0-rekin bateragarriak diren leiho-funtzioetarako (leiho-funtzioak edo funtzio analitikoak) euskarria gehitu da. Leiho-funtzioek kontsulta-errenda bakoitzerako kalkuluak egiteko aukera ematen dute beste errenkada batzuk erabiliz. Funtzio agregatuek ez bezala, multzokatutako errenkada multzo bat errenkada bakarrean tolesten dutenez, leiho-funtzioak agregatu egiten dira "leiho" baten edukian oinarrituta, emaitza multzoko errenkada bat edo gehiago barne hartzen dituena. Inplementatutako leiho funtzioen artean:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK eta ROW_NUMBER;
Ikuspegietarako laguntza esperimentala gehitu da (VIEW);
Partizio-sistema hobetu da, datuak ataletan banatzeko gaitasuna balio edo hash sorta batean oinarrituta gehitu da;
Pluginak garatzeko esparru bat gehitu da, adibidez, pluginak dagoeneko prestatuta daude IP zerrenda zuri bat erabiltzeko edo auditoretza erregistroa mantentzeko;
Laguntza esperimentala eman zaio βAZALDU ANALISIAβ funtzioari SQL kontsulta baten exekuzio-plana eraikitzeko (SQL Planaren Kudeaketa);
next_row_id komandoa gehitu da hurrengo errenkadaren IDa lortzeko;
JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE eta NAME_CONST integratutako funtzio berriak gehitu dira.