Berdeste serbestberdana DBMSek belavkirî TiDB 3.0, di bin bandora teknolojiyên Google de pêşve çû Spanner и F1. TiDB ji kategoriya pergalên HTAP-ê (Hybrid Transactional/Pêvajoya Analîtîk) ya hybrid e, ku hem dikare danûstendinên di wextê rast (OLTP) û hem jî lêpirsînên analîtîk pêvajoyê peyda bike. Proje bi zimanê Go hatiye nivîsandin û belav kirin ji hêla lîsansa di bin Apache 2.0.
Taybetmendiyên TiDB:
Piştgiriya SQL û peydakirina pêwendiyek xerîdar a ku bi protokola MySQL re hevaheng e, ku adaptasyona serîlêdanên heyî yên ku ji bo MySQL ji TiDB re hatine nivîsandin hêsan dike, û di heman demê de destûrê dide karanîna pirtûkxaneyên xerîdar ên hevpar. Ji bilî protokola MySQL, hûn dikarin API-ya JSON-ê û girêdanek ji bo Spark-ê bikar bînin ku bigihîjin DBMS-ê.
SQL îndeksên piştgirî, fonksiyonên tevhev, GROUP BY, ORDER BY, biwêjên CUDA, yekbûn (TEVLÊBÛNA ÇEP / RAST JOIN / CROSS JOIN), nerîn, fonksiyonên pencereyê û jêrpirsiyan vedihewîne. Kapasîteyên peydakirî ji bo organîzekirina xebata bi TiDB re ji bo serîlêdanên malperê yên wekî PhpMyAdmin bes in, berçavk û WordPress;
Pîvana horizontî û tolerasyona xeletiyê: Mezinahiya hilanînê û hêza pêvajoyê dikare bi tenê girêdana girêkên nû zêde bibe. Daneyên li ser girêkên bi zêdebûnê têne belav kirin, û dihêle ku ger girêkên kesane têk biçin operasyon berdewam bike. Têkçûn bixweber têne rêve kirin.
Pergal hevgirtinê garantî dike û ji bo nermalava xerîdar ew mîna DBMSek mezin xuya dike, tevî vê yekê ku di rastiyê de, daneyên ji gelek nokan têne kişandin da ku danûstendinê temam bikin.
Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственный движок распределённого хранилища TiKV.
Kapasîteya guheztina asynkronî ya şemaya hilanînê, dihêle hûn di firînê de stûn û pêvekan lê zêde bikin bêyî sekinandina pêvajoyên operasyonên domdar.
Проведена работа по увеличению производительности. В тесте 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;
Добавлена экспериментальная поддержка представлений (VIEW);
Улучшена система секционирования (партицирования), добавлена возможность распределения данным по секциям на основании диапазона значений или хэшей;
Добавлен фреймворк для разработки плагинов, например, уже подготовлены плагины для использования белого списка IP или ведения лога аудита;
Обеспечена экспериментальная поддержка функции «EXPLAIN ANALYZE» для построения плана выполнения SQL-запроса (SQL Plan Management);
Добавлена команда next_row_id для получения идентификатора следующей строки;
Добавлены новые встроенные функции JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK ,COALESCE и NAME_CONST.