Frigivelse af det distribuerede DBMS TiDB 3.0

Ledig frigivelse af et distribueret DBMS TiDB 3.0, udviklet under indflydelse af Googles teknologier Spanner и F1. TiDB tilhører kategorien af ​​hybride HTAP (Hybrid Transactional/Analytical Processing) systemer, der både er i stand til at levere realtidstransaktioner (OLTP) og behandle analytiske forespørgsler. Projektet er skrevet på Go sprog og distribueret af licenseret under Apache 2.0.

Funktioner i TiDB:

  • SQL-understøttelse og levering af en klientgrænseflade, der er kompatibel med MySQL-protokollen, hvilket forenkler tilpasningen af ​​eksisterende applikationer skrevet til MySQL til TiDB, og tillader også brugen af ​​almindelige klientbiblioteker. Ud over MySQL-protokollen kan du bruge en JSON-baseret API og en forbindelse til Spark for at få adgang til DBMS.
  • SQL-funktioner understøtter indekser, aggregerede funktioner, GROUP BY, ORDER BY, DISTINCT udtryk, fletninger (LEFT JOIN / RIGHT JOIN / CROSS JOIN), visninger, vinduesfunktioner og underforespørgsler. De medfølgende muligheder er tilstrækkelige til at organisere arbejdet med TiDB for sådanne webapplikationer som PhpMyAdmin, Gogs og WordPress;
  • Horisontal skalerbarhed og fejltolerance: Lagerstørrelse og processorkraft kan øges ved blot at forbinde nye noder. Data fordeles på tværs af noder med redundans, hvilket gør det muligt at fortsætte driften, hvis individuelle noder svigter. Fejl håndteres automatisk.
  • Systemet garanterer konsistens, og for klientsoftwaren ser det ud som ét stort DBMS, på trods af at data fra mange noder faktisk tiltrækkes for at gennemføre transaktionen.
  • Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственный движок распределённого хранилища TiKV.
  • Muligheden for asynkront at ændre lagerskemaet, så du kan tilføje kolonner og indekser på farten uden at stoppe behandlingen af ​​igangværende operationer.

The main innovationer:

  • Проведена работа по увеличению производительности. В тесте Sysbench выпуск 3.0 опережает ветку 2.1 в 1.5 раза при выполнении операций select и update, а в тесте TPC-C в 4.5 раза. Оптимизации затронули различные виды запросов, включая подзапросы «IN», «DO» и «NOT EXISTS», операции слияния таблиц (JOIN), использование индексов и многое другое;
    Frigivelse af det distribuerede DBMS TiDB 3.0Frigivelse af det distribuerede DBMS TiDB 3.0

  • Добавлен новый движок хранения TiFlash, позволяющий добиться более высокой производительности при решении аналитических задач (OLAP), благодаря хранению в привязке к столбцам. TiFlash дополняет собой ранее предлагаемое хранилище TiKV, хранящее данные в разрезе строк в формате ключ/значение и более опримальное для задач обработки транзакций (OLTP). TiFlash работает бок о бок с TiKV и данные продолжают как и раньше реплицироваться в TiKV с использоанием протокола Raft для определении консенсуса, но для каждой группы реплик Raft создаётся дополнительная реплика, которая используется в TiFlash. Подобный поход позволяет добиться лучшего разделения ресурсов между задачами OLTP и OLAP, а также делает данные транзакций мгновенно доступными для аналитических запросов;

    Frigivelse af det distribuerede DBMS 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.

Kilde: opennet.ru

Tilføj en kommentar