даступны рэліз размеркаванай СКБД TiDB 3.0, якая развіваецца пад уражаннем ад тэхналогій Google гаечны ключ и F1. TiDB адносіцца да катэгорыі гібрыдных сістэм HTAP (Hybrid Transactional / Analytical Processing), здольных як забяспечваць выкананне транзакцый у рэальным часе (OLTP), так і выконваць апрацоўку аналітычных запытаў. Праект напісаны на мове Go і распаўсюджваецца пад ліцэнзіяй Apache 2.0.
Асаблівасці TiDB:
Падтрымка SQL і падаванне кліенцкага інтэрфейсу, сумяшчальнага з пратаколам MySQL, што спрашчае адаптацыю для TiDB існых прыкладанняў, напісаных для MySQL, а таксама дазваляе задзейнічаць распаўсюджаныя кліенцкія бібліятэкі. Акрамя пратаколу MySQL для звароту да СКБД можна выкарыстоўваць API на базе JSON і канектар для Spark.
З магчымасцяў SQL падтрымліваюцца азначнікі, агрэгатныя функцыі, выразы GROUP BY, ORDER BY, DISTINCT, зліцці (LEFT JOIN / RIGHT JOIN / CROSS JOIN), паданні, аконныя функцыі і подзапросы. Якія прадстаўляюцца магчымасцяў досыць для арганізацыі працы з TiDB такіх web-прыкладанняў, як PhpMyAdmin, Гогі і WordPress;
Магчымасць гарызантальнага маштабавання і забеспячэнні адмоваўстойлівасці: памер сховішчы і вылічальную магутнасць можна нарошчваць простым падлучэннем новых вузлоў. Дадзеныя размяркоўваюцца па вузлах з надмернасцю, якая дазваляе працягнуць працу ў выпадку збою асобных вузлоў. Збоі апрацоўваюцца аўтаматычна.
Сістэма гарантуе несупярэчлівасць і для кліенцкага ПА выглядае як адна вялікая СКБД, нягледзячы на тое, што фактычна для выканання транзакцыі прыцягваюцца дадзеныя са мноства вузлоў.
Для фізічнага захоўвання дадзеных на вузлах могуць прымяняцца розныя бэкенды, напрыклад, лакальныя рухавічкі захоўвання GoLevelDB і BoltDB або ўласны рухавічок размеркаванага сховішча TiKV.
Магчымасць асінхроннай змены схемы захоўвання, якая дазваляе на лёце дадаваць слупкі і азначнікі без прыпынку апрацоўкі бягучых аперацый.
Праведзена работа па павелічэнні прадукцыйнасці. У тэсце Sysbench выпуск 3.0 апярэджвае галінку 2.1 у 1.5 разы пры выкананні аперацый select і update, а ў тэсце TPC-C у 4.5 разы. Аптымізацыі закранулі розныя віды запытаў, у тым ліку подзапросы "IN", "DO" і "NOT EXISTS", аперацыі зліцця табліц (JOIN), выкарыстанне індэксаў і многае іншае;
Дададзены новы рухавічок захоўвання TiFlash, які дазваляе дамагчыся больш высокай прадукцыйнасці пры рашэнні аналітычных задач (OLAP), дзякуючы захоўванню ў прывязцы да слупкоў. TiFlash дапаўняе сабой раней прапанаванае сховішча TiKV, якое захоўвае дадзеныя ў разрэзе радкоў у фармаце ключ/значэнне і больш прымальнае для задач апрацоўкі транзакцый (OLTP). TiFlash працуе бок аб бок з TiKV і дадзеныя працягваюць па-ранейшаму рэпліцыравацца ў TiKV з выкарыстаннем пратаколу Raft для вызначэння кансэнсусу, але для кожнай групы рэплік Raft ствараецца дадатковая рэпліка, якая выкарыстоўваецца ў TiFlash. Падобны паход дазваляе дабіцца лепшага падзелу рэсурсаў паміж задачамі OLTP і OLAP, а таксама робіць дадзеныя транзакцый імгненна даступнымі для аналітычных запытаў;
Рэалізаваны размеркаваны зборшчык смецця, які дазваляе істотна павысіць хуткасць зборкі смецця ў буйных кластарах і павысіць стабільнасць працы;
Дададзена эксперыментальная рэалізацыя сістэмы размежавання доступу на аснове роляў (RBAC). Таксама забяспечана магчымасць задання правоў доступу для аперацый ANALYZE, USE, SET GLOBAL і SHOW PROCESSLIST;
Дададзена магчымасць выкарыстання выразаў SQL для выблркі з лога павольных запытаў;
Рэалізаваны механізм хуткага аднаўлення выдаленых табліц, які дазваляе аднавіць выпадкова выдаленыя дадзеныя;
Уніфікаваны фармат запісваемых логаў;
Дададзена падтрымка песімістычнага рэжыму блакавання, які робіць апрацоўку транзакцый бліжэйшай да MySQL;
Дададзена падтрымка аконных функцый (window-функцыі ці аналітычныя функцыі), сумяшчальных з MySQL 8.0. Аконныя функцыі дазваляюць для кожнага радка запыту выканаць вылічэнні, выкарыстоўваючы іншыя радкі. У адрозненне ад агрэгатных функцый, якія згортваюць згрупаваны набор радкоў у адзін радок, аконныя функцыі вырабляюць агрэгавання на аснове змесціва «акна», які ўключае адну або больш радкоў з выніковага набору. Сярод рэалізаваных аконных функцый:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE , LAST_VALUE, RANK, DENSE_RANK і ROW_NUMBER;