Издаване на разпределена СУБД TiDB 3.0

Достъпен издание на разпределена СУБД TiDB 3.0, разработвана под впечатление от технологиите на Google Spanner и F1. TiDB принадлежи към категорията на хибридните системи HTAP (Хибридна Транзакционна/Аналитична Обработка), способни както да осигуряват изпълнение на транзакции в реално време (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 на такива уеб-приложения, като 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