Доступен релиз распределённой СУБД TiDB 4.0, развиваемой под впечатлением от технологий Google Spanner и 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;
- Включён по умолчанию кэш сопроцессора;
- Число сопрограмм (goroutine) в фазе повторных попыток коммита теперь может контролироваться при помощи настройки committer-concurrency;
- Добавлена возможность отображения регионов раздела таблиц (table partition);
- В tidb-server добавлена возможность ограничения размера временного хранилища;
- Добавлена поддержка операций «insert into tbl_name partition(partition_name_list)» и «replace into tbl_name partition(partition_name_list)»;
- В используемом для секционирования (партицирования) хэше добавлена поддержка фильтрации по признаку «is null»;
- Для секционированных таблиц добавлена поддержка операций проверки, чистки и восстановления индексов.
Источник: http://www.opennet.ru/opennews/art.shtml?num=53045