Документация по LinuxLinuxDoc.Ru 🔍
🕛

Выпуск распределённой СУБД TiDB 2.0

Состоялся релиз распределённой СУБД TiDB 2.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, DISTICT, слияния (LEFT JOIN / RIGHT JOIN / CROSS JOIN) и простые подзапросы. Предоставляемых возможностей достаточно для организации работы с TiDB таких web-приложений, как PhpMyAdmin, Gogs и Wordpress. Возможность горизонтального масштабирования и обеспечения отказоустойчивости: размер хранилища и вычислительную мощность можно наращивать простым подключением новых узлов, данные распределяются по узлам с избыточностью, позволяющей продолжить работу в случае сбоя отдельных узлов. Сбои обрабатываются автоматически. Система гарантирует непротиворечивость и для клиентского ПО выглядит как одна большая СУБД, несмотря на то, что фактически для выполнения транзакции привлекаются данные со множества узлов. Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственный движок для распределённых хранилищ 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.

Также по теме:
Linux - Разное - Выпуск распределённой СУБД TiDB 2.0
Мы в соцсетях ✉