Состоялся (https://github.com/pingcap/tidb/releases/tag/v2.0.0) релиз распределённой СУБД TiDB 2.0 (https://pingcap.com/index), развиваемой под впечатлением от технологий Google Spanner (http://research.google.com/archive/spanner.html) и F1 (http://research.google.com/pubs/pub38125.html). TiDB относится к категории гибридных систем HTAP (Hybrid Transactional/Analytical Processing), способных как обеспечивать выполнение транзакций в реальном времени (OLTP), так и применяться для обработки аналитических запросов. Проект написан на языке Go и распространяется (https://github.com/pingcap/tidb) под лицензией Apache 2.0.
Особенности TiDB:
- Поддержка SQL и предоставление клиентского интерфейса, совместимого с протоколом MySQL, что упрощает адаптацию для TiDB существующих приложений, написанных для MySQL, или позволяет задействовать распространённые клиентские библиотеки. Кроме протокола MySQL для обращения к СУБД можно использовать API на базе JSON и коннектор для Spark.
- Из возможностей SQL поддерживаются индексы, агрегатные функции, выражения GROUP BY, ORDER BY, DISTICT, слияния (LEFT JOIN / RIGHT JOIN / CROSS JOIN) и простые подзапросы. Предоставляемых возможностей достаточно для организации работы с TiDB таких web-приложений, как PhpMyAdmin, Gogs (https://gogs.io/) и Wordpress.
- Возможность горизонтального масштабирования и обеспечения отказоустойчивости: размер хранилища и вычислительную мощность можно наращивать простым подключением новых узлов, данные распределяются по узлам с избыточностью, позволяющей продолжить работу в случае сбоя отдельных узлов. Сбои обрабатываются автоматически.
- Система гарантирует непротиворечивость и для клиентского ПО выглядит как одна большая СУБД, несмотря на то, что фактически для выполнения транзакции привлекаются данные со множества узлов.
- Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственный движок для распределённых хранилищ TiKV (https://github.com/pingcap/tikv).
- Возможность асинхронного изменения схемы хранения, позволяющая на лету добавлять столбцы и индексы без остановки обработки текущих операций.
Ключевые улучшения в TiDB 2.0:
- Внесён большой набор улучшений в оптимизатор SQL-запросов:
- Для сокращения потребления памяти для хранения статистики задействованы более компактные структуры данных.
- Ускорена загрузка статистики при запуске сервера.
- Добавлена возможность динамического обновления статистики.
- Оптимизирована модель вычисления веса запроса.
- Улучшен анализ сложных запросов на предмет возможности применения индексов.
- Добавлена возможность ручного определения порядка слияния таблиц при помощи конструкции STRAIGHT_JOIN.
- Увеличена производительность выполнения запросов с пустым "GROUP BY".
- Добавлена поддержка использования индексов для функций MAX/MIN;
- Улучшена оптимизация подзапросов и их преобразования в слияния "LEFT OUTER JOIN".
- В движке обработки SQL-запросов:
- Добавлена поддержка TLS;
- Расширена поддержка синтаксиса SQL, улучшена совместимость с MySQL, добавлена поддержка дополнительных типов данных и функций;
- Добавлена поддержка протокола Proxy;
- Расширено число предоставляемых метрик для мониторинга;
- Добавлена проверка корректности файлов конфигурации;
- Добавлена возможность получения настроек через HTTP API;
- Добавлена поддержка многопоточной сборки мусора. Ускорен процесс сборки мусора и оптимизировано выставление блокировок при пакетном выполнении операций (Batch mode);
- Проведён рефакторинг всех операторов с использованием архитектуры Chunk, увеличена производительность аналитических запросов и сокращено потребление памяти. Существенно улучшены результаты прохождения тестов
TPC-H;
- Добавлена поддержка операторов потокового агрегирования данных;
- Более чем в 10 раз увеличена скорость загрузки данных оператором "LOAD", операций "INSERT .. IGNORE" и обновления данных с дублирующимися ключами;
- Предложена возможность ограничения размера памяти, которая может быть израсходована в процессе обработке одного SQL-запроса;
- Улучшена совместимость с инструментом управления СУБД Navicat;- Улучшена совместимость с JDBC;- Добавлена поддержка дополнительных режимов работы SQL;- Оптимизирована производительность операции добавления индекса и добавлена возможность выполнения добавления индекса в низкоприоритетном режиме, минимизирующем влияние на другие операции;- Реализована возможность восстановления данных индекса при помощи команды "ADMIN RECOVER INDEX";- Возможность изменения опций таблицы при помощи выражения ALTER.
URL: https://github.com/pingcap/tidb/releases/tag/v2.0.0
Новость: https://www.opennet.me/opennews/art.shtml?num=48511