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

29 апреля 2018 года

Wikinews-logo-ru.svg

Состоялся релиз распределённой СУБД 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, DISTINCT, слияния (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.

ИсточникиПравить


Эта статья содержит материалы из статьи «Выпуск распределённой СУБД TiDB 2.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.