Пуск на разпределената СУБД TiDB 3.0

Достъпен релиз на разпределена СУБД TiDB 3.0, вдъхновена от технологиите на Google Spanner и F1. TiDB принадлежи към категорията на хибридни HTAP системи (Хибридна транзакционна/аналитична обработка), които могат да извършват както транзакции в реално време (OLTP), така и да обработват аналитични запитвания. Проектът е написан на езика Go и разпространява е под лицензия Apache 2.0.

Характеристики на TiDB:

  • Поддържа SQL и предоставя клиентски интерфейс, съвместим с протокола MySQL, което улеснява адаптацията на съществуващи приложения, написани за MySQL, към TiDB, а също така позволява използването на разпространени клиентски библиотеки. Освен протокола MySQL, за достъп до СУБД може да се използва API на базата на JSON и конектор за Spark.
  • От възможностите на SQL се поддържат индекси, агрегатни функции, изрази GROUP BY, ORDER BY, DISTINCT, обединения (LEFT JOIN / RIGHT JOIN / CROSS JOIN), изгледи, прозоречни функции и подзапитвания. Предоставените възможности са достатъчни за работа с TiDB в уеб приложения като PhpMyAdmin, Gogs и WordPress;
  • Възможност за хоризонтално мащабиране и осигуряване на отказоустойчивост: размерът на хранилището и изчислителната мощност могат да се увеличават просто чрез добавяне на нови възли. Данните се разпределят между възлите с излишък, позволяващ продължаване на работата в случай на отказ на отделни възли. Отказите се обработват автоматично.
  • Системата гарантира последователност и за клиентския софтуер изглежда като една голяма СУБД, въпреки че за извършването на транзакция се извличат данни от множество възли.
  • За физическото съхранение на данни на възлите могат да се използват различни бекенди, например локалните хранилища GoLevelDB и BoltDB или собственото решение за разпределено хранилище. TiKV.
  • Възможност за асинхронна промяна на схемата на съхранение, позволяваща добавяне на колони и индекси в реално време без прекъсване на текущите операции.

Основни нововъведения:

  • Извършена е работа за увеличаване на производителността. В теста Sysbench версия 3.0 надминава версия 2.1 с 1.5 пъти при операции select и update, а в теста TPC-C с 4.5 пъти. Оптимизациите обхванаха различни видове запитвания, включително подзапитвания 'IN', 'DO' и 'NOT EXISTS', операции за съединяване на таблици (JOIN), използване на индекси и много други;
    Пуск на разпределената СУБД TiDB 3.0 Пуск на разпределената СУБД TiDB 3.0
  • Добавен е нов хранилище TiFlash, което позволява постигане на по-висока производителност при аналитични задачи (OLAP) благодарение на съхранение, свързано с колоните. TiFlash допълва преди предлаганото хранилище TiKV, което съхранява данни в редове във формат ключ/стойност и е по-оптимално за транзакционна обработка (OLTP). TiFlash работи заедно с TiKV и данните продължават да се реплицират в TiKV с използване на протокола Raft за определяне на консенсус, но за всяка група реплики Raft се създава допълнителна реплика, която се използва в TiFlash. Този подход позволява по-добро разделение на ресурсите между OLTP и OLAP задачи, както и моментален достъп до данни от транзакции за аналитични запитвания;

    Пуск на разпределената СУБД TiDB 3.0
  • Изпълнен е разпределен сборник за боклук, който значително увеличава скоростта на събиране на боклука в големи клъстери и повишава стабилността на работата;
  • Добавена е експериментална реализация на система за контрол на достъпа на базата на роли (RBAC). Осигурена е и възможността за задаване на права за операции ANALYZE, USE, SET GLOBAL и SHOW PROCESSLIST;
  • Добавена е възможност за използване на SQL изрази за избор от журнала на бавни запитвания;
  • Реализиран е механизъм за бързо възстановяване на изтрити таблици, позволяващ възстановяване на случайно изтрити данни;
  • Унифициран е форматът на записаните журнали;
  • Добавена е поддръжка на песимистичен режим на заключване, който прави обработката на транзакции по-близка до MySQL;
  • Добавена поддръжка на прозоречни функции (window-функции или аналитични функции), съвместими с MySQL 8.0. Прозоречните функции позволяват извършване на изчисления за всяка редица на заявката, използвайки други редици. За разлика от агрегатните функции, които събират групиран набор от редици в една, прозоречните функции извършват агрегиране на база съдържанието на "из窗口", включващо една или повече редици от резултатния набор. Сред реализираните прозоречни функции са:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK и ROW_NUMBER;
  • Добавена е експериментална поддръжка на представления (VIEW);
  • Подобрен е системата за партициониране, добавена е възможност за разпределение на данните по секции на основата на диапазон стойности или хешове;
  • Добавен е фреймуърк за разработка на плъгини, например, вече са подготвени плъгини за използване на бял списък с IP-адреси или за водене на лог на одит;
  • Осигурена е експериментална поддръжка на функцията "EXPLAIN ANALYZE" за изграждане на план за изпълнение на SQL-запитване (SQL Plan Management);
  • Добавена е команда next_row_id за получаване на идентификатора на следващия ред;
  • Добавени са нови вградени функции JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE и NAME_CONST.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster