доступний реліз розподіленої СУБД TiDB 4.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, Gogs та WordPress;
Можливість горизонтального масштабування та забезпечення відмовостійкості: розмір сховища та обчислювальну потужність можна нарощувати простим підключенням нових вузлів. Дані розподіляються на вузлах з надмірністю, що дозволяє продовжити роботу у разі збою окремих вузлів. Збої обробляються автоматично.
Система гарантує несуперечність і для клієнтського ПЗ виглядає як одна велика СУБД, незважаючи на те, що фактично для виконання транзакції залучаються дані з багатьох вузлів.
Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственные движки распределённого хранилища TiKV и TiFlash. TiKV хранит данные в разрезе строк в формате ключ/значение и является более оптимальным для задач обработки транзакций (OLTP). TiFlash хранит данные в привязке к столбцам и позволяет добиться более высокой производительности при решении аналитических задач (OLAP).
Можливість асинхронної зміни схеми зберігання, що дозволяє на льоту додавати стовпці та індекси без зупинки обробки поточних операцій.
У новому випуску:
По умолчанию включён распределённый сборщик мусора Green GC, позволяющий существенно повысить скорость сборки мусора в крупных кластерах и повысить стабильность работы;
Добавлена поддержка больших транзакций, размер которых ограничены практически размером физической памяти. Ограничение размера одной транзакции увеличено со 100 МБ до 10ГБ;
Добавлена поддержка команд BACKUP и RESTORE для резервного копирования;
Добавлена возможность установки блокировки на таблицы;
Добавлен совместимый с MySQL механизм изоляции транзакций на уровне чтения (READ COMMITTED);
В команду «ADMIN SHOW DDL JOBS» добавлена поддержка выражений LIKE и WHERE;
Добавлен параметр oom-use-tmp-storage, позволяющий использовать временные файлы для кэширования промежуточных результатов в условиях нехватки оперативной памяти;
Добавлено ключевое слово Random для присвоения атрибутам случайных значений;
В команде LOAD DATA появилась возможность использования шестнадцатеричных и двоичных выражений;
Добавлено 15 параметров для управления поведением оптимизатора;
Добавлены средства для диагностики производительности SQL-запросов. Добавлен лог медленных запросов, доступный через системные таблицы SLOW_QUERY / CLUSTER_SLOW_QUERY;
Добавлена поддержка функций для работы с последовательностями;
Добавлена возможность динамического изменения параметров конфигурации, читаемых из PD (Placement Driver, сервер управления кластером). Добавлена возможность использования выражения «SET CONFIG» для изменения настроек узлов PD/TiKV.
Добавлена настройка max-server-connections для ограничения максимального числа одновременных соединений к серверу (по умолчанию 4096);
Увеличена производительность в ситуациях, когда запрошенные столбцы полностью покрываются индексами;
Добавлена оптимизация запросов на основе слияния индексов;
Повышена производительность операций с диапазонами значений;
Снижена нагрузка на CPU за счёт кэширования результатов обращения к индексам и отсеивания дубликатов;
Добавлена поддержка нового формата хранения строк, позволяющего увеличить производительность таблиц с большим числом столбцов;
В функции GROUP_CONCAT появилась поддержка выражения «ORDER BY»;
Добавлена возможность извлечения данных из лога TiFlash через SQL;
В команде «RECOVER TABLE реализована поддержка восстановления обрезанных таблиц;
Добавлена системная таблица DDLJobs для запроса деталей о выполнении работ DDL;
Добавлена возможность применения команды SHOW CONFIG для показа настроек PD и TiKV;