Жеткиликтүү релиз распределённой СУБД 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, көз айнек и 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;