The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

28.05.2020 12:59

Доступен релиз распределённой СУБД TiDB 4.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 и TiFlash. TiKV хранит данные в разрезе строк в формате ключ/значение и является более оптимальным для задач обработки транзакций (OLTP). TiFlash хранит данные в привязке к столбцам и позволяет добиться более высокой производительности при решении аналитических задач (OLAP).
  • Возможность асинхронного изменения схемы хранения, позволяющая на лету добавлять столбцы и индексы без остановки обработки текущих операций.



В новом выпуске:

  • По умолчанию включён распределённый сборщик мусора Green GC, позволяющий существенно повысить скорость сборки мусора в крупных кластерах и повысить стабильность работы;
  • Добавлена поддержка больших транзакций, размер которых ограничены практически размером физической памяти. Ограничение размера одной транзакции увеличено со 100 МБ до 10ГБ;
  • Добавлена поддержка команд BACKUP и RESTORE для резервного копирования;
  • Добавлена возможность установки блокировки на таблицы;
  • Добавлен совместимый с MySQL механизм изоляции транзакций на уровне чтения (READ COMMITTED);
  • В команду "ADMIN SHOW DDL JOBS" добавлена поддержка выражений LIKE и WHERE;
  • Добавлен параметр oom-use-tmp-storage, позволяющий использовать временные файлы для кэширования промежуточных результатов в условиях нехватки оперативной памяти;
  • Добавлено ключевое слово Random для присвоения атрибутам случайных значений;
  • В команде LOAD DATA появилась возможность использования шестнадцатеричных и двоичных выражений;
  • Добавлено 15 параметров для управления поведением оптимизатора;
  • Добавлены средства для диагностики производительности SQL-запросов. Добавлен лог медленных запросов, доступный через системные таблицы SLOW_QUERY / CLUSTER_SLOW_QUERY;
  • Добавлена поддержка функций для работы с последовательностями;
  • Добавлена возможность динамического изменения параметров конфигурации, читаемых из PD (Placement Driver, сервер управления кластером). Добавлена возможность использования выражения "SET CONFIG" для изменения настроек узлов PD/TiKV.
  • Добавлена настройка max-server-connections для ограничения максимального числа одновременных соединений к серверу (по умолчанию 4096);
  • Увеличена производительность в ситуациях, когда запрошенные столбцы полностью покрываются индексами;
  • Добавлена оптимизация запросов на основе слияния индексов;
  • Повышена производительность операций с диапазонами значений;
  • Снижена нагрузка на CPU за счёт кэширования результатов обращения к индексам и отсеивания дубликатов;
  • Добавлена поддержка нового формата хранения строк, позволяющего увеличить производительность таблиц с большим числом столбцов;
  • В функции GROUP_CONCAT появилась поддержка выражения "ORDER BY";
  • Добавлена возможность извлечения данных из лога TiFlash через SQL;
  • В команде "RECOVER TABLE реализована поддержка восстановления обрезанных таблиц;
  • Добавлена системная таблица DDLJobs для запроса деталей о выполнении работ DDL;
  • Добавлена возможность применения команды SHOW CONFIG для показа настроек PD и TiKV;
  • Включён по умолчанию кэш сопроцессора;
  • Число сопрограмм (goroutine) в фазе повторных попыток коммита теперь может контролироваться при помощи настройки committer-concurrency;
  • Добавлена возможность отображения регионов раздела таблиц (table partition);
  • В tidb-server добавлена возможность ограничения размера временного хранилища;
  • Добавлена поддержка операций "insert into tbl_name partition(partition_name_list)" и "replace into tbl_name partition(partition_name_list)";
  • В используемом для секционирования (партицирования) хэше добавлена поддержка фильтрации по признаку "is null";
  • Для секционированных таблиц добавлена поддержка операций проверки, чистки и восстановления индексов.


  1. Главная ссылка к новости (https://github.com/pingcap/tid...)
  2. OpenNews: Выпуск СУБД Redis 6.0
  3. OpenNews: Выпуск СУБД TimescaleDB 1.7
  4. OpenNews: PostgreSQL Anonymizer 0.6, расширение для анонимизации данных в СУБД
  5. OpenNews: Опубликован второй кандидат в релизы встраиваемой СУБД libmdbx 1.0
  6. OpenNews: Новая версия СУБД ArangoDB 3.6
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/53045-tidb
Ключевые слова: tidb, database, mysql
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (48) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:52, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –16 +/
    Вот бы MySQL кто-то переписал на Golang была бы хоть польза, а тут непонятно можно на него преейти или нет и чем это грозит.
     
     
  • 2.3, brzm (ok), 14:16, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Что значит "MySQL переписали на Go"? Сделали полностью другую базу со 100% совместимостью с MySQL? Зачем?
     
     
  • 3.8, Аноним (-), 15:41, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Ну как, должен же кто-то тормозить и жрать оперативку? Иначе Intel негодует, новые процы не покупают.
     
     
  • 4.29, Lex (??), 21:49, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Доо. А пока - всего лишь оракле негодуе, что все на мускул бегут... хотя, постой-ка, не уже и не так, чтобы бегут.

    Всё-таки, не зря оракл ее купил и «совершенно случайно» положил на неё.

     
     
  • 5.33, funny.falcon (?), 02:05, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вроде как MySQL неплохо развивается
     
  • 2.4, Богдан Помазан (?), 14:20, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Внезапно переписали уже, называется TiDB
     
  • 2.11, AnonAnon (?), 17:43, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    лучше на Rust переписать MySQL и PostgreSQL, сразу в космос полетят, без сомнений инфа 100%
     
     
  • 3.13, ann (??), 18:13, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Куда же без тебя растомана любимого. Нука расскажи мне как в rust невозможно себе в ногу выстрелить в safe коде, а я тебе потом покажу как можно в три строки отстрелить себе голову в rust, и без всяких unsafe.
     
     
  • 4.15, anons (?), 18:19, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +6 +/
    о нет, в языке программирования можно наговнокодить. Никогда такого не было!
     
     
  • 5.20, ann (??), 21:06, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Именно что можно. Но они же упорно кричат что rust безопасен до немагу и в safe там вообще ничего не сломать и даже код проверять не надо.
     
     
  • 6.24, Анонимъ (?), 01:39, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чёт кричат про безопасность Rust в основном хейтеры. Никакого чуда тут нет. Если сильно упростить, то тут просто сделали из набора варнингов и сообщений анализаторов ошибки компиляции.

    Допустим вот такой код:

        int i = 2;
        printf("%d %d\n", i++, i++);

    Что лучше, иметь возможность найти тут ошибку или же невозможность написания кода с такими ошибками вообще?

     
     
  • 7.25, Аноним (25), 10:49, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Лучше иметь мозг.
     
  • 7.28, Аноним (28), 16:54, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Неопределенное поведение прозволяет компелятору производить дополнительные оптимизации, поэтому Си всегда будет быстрее недoязычка от тoрмoзиллы.
     
     
  • 8.31, Анонимъ (?), 01:33, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Могу ответить в том же стиле UB UB B никогда B не будут производить столь ... текст свёрнут, показать
     
     
  • 9.32, Gefest (?), 01:40, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Как ви понемаете можно просто взять больше времени ... текст свёрнут, показать
     
  • 9.34, deeaitch (ok), 02:19, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Могу ответить в том же стиле Код написанный на rust никогда даже близко не приб... текст свёрнут, показать
     
  • 4.16, AnonAnon (?), 18:22, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    разве незаметно, что это шутка была по поводу переписывания на Rust?
     
     
  • 5.22, ann (??), 21:08, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А как-то не очень заметно. Хотя может у меня распознование юмора хромает.
     
  • 2.19, Аноним (19), 19:31, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ничего хорошего на go никогда написано не будет. Как можно на go написать что-то хорошее?
     
     
  • 3.21, ann (??), 21:07, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    потому что они про to забыли. Вот дорастут до goto тогда сразу спасут весь мир.
     
  • 2.26, Gefest (?), 14:40, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Вот бы MySQL кто-то переписал на Golang была бы хоть

    Например, ты . Мы хотим поржать над очередным "клоном gimp для озабоченных"

     
     
  • 3.30, Lex (??), 21:53, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну кстати, гимп и сам такой.. что даже шутить над этим бессмысленно существующим калекой не хочется
     

  • 1.2, Аноним (2), 13:57, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Где б еще со всем этим поработать, если мигрировать в Мск с Питером впадлу, удалёнка с таймтрекером - такая себе версия цифрового рабства, а в твоей провинции дай бог если на местных галерах про брокеры очередей слышали))) либо фуллстак на постгре, либо фуллстак на оракле)
     
     
  • 2.6, user (??), 14:53, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот не факт, что в Мск кто-то с этим работает. Очень специфичная штука. Ынтырпрайз на такое даже не смотрит. Разве что девопсы где-то втихоря вкорячили.
     
  • 2.7, Gemorroj (ok), 15:30, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    можно подумать в мск как-то по другому.
     
  • 2.27, Gefest (?), 14:42, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >удалёнка с таймтрекером

    Твое светлое будующее в постпандемическую эпоху,хе-хе

     

  • 1.5, Аноним (5), 14:26, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Новая смузи СУБД... которая по счету? MS, Oracle, IBM, SAP напряглись?
     
     
  • 2.9, mail (?), 17:17, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    PostgreSQL напрягся...
     
  • 2.35, funny.falcon (?), 11:42, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это не Смузи СУБД. Это Вок СУБД. Китайцы же пилят.

    BTW, китайцы знают толк в высоких нагрузках.

    Я с интересом наблюдаю за TiDB. Мне кажется, она должна набрать популярность, т.к. вроде они все делают правильно.

    Учитывая, что сейчас единственным открытым, популярным, удобным и масштабируемым (take four) решением является MongoDB, у TiDB есть шанс.

     
     
  • 3.41, Онаним (?), 10:04, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Учитывая, что сейчас единственным открытым, популярным, удобным и масштабируемым (take
    > four) решением является MongoDB, у TiDB есть шанс.

    Ну там, где монга, действительно, у TiDB есть шанс.

     
     
  • 4.42, Онаним (?), 10:05, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Монга кстати хороша, но там, где она хороша, TiDB с его SQL просто не нужен.
     
  • 3.47, Аноним (47), 11:19, 03/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если ты не знаешь ничего кроме монги, то это твои проблемы.
     

  • 1.10, mail (?), 17:27, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    no take off - https://www.linkedin.com/company/pingcap/people/

    эти парни в конце концов всё завалят (ничего личного и никакого расизма).  

     
     
  • 2.36, funny.falcon (?), 11:44, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Что завалят? Активно развивающийся продукт с уже солидной базой клиентов?

    Конечно, просрать можно и Nokia, и Sun Microsystems. Но согласитесь, что для этого нужно было постараться.

     

  • 1.12, Аноним (-), 18:02, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Особенно второй пункт в списке новшеств порадовал, нет, честно!
     
  • 1.14, Онаним (?), 18:16, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    JANDB
    Just Another Not-needed DB
    Дарю название.
     
  • 1.17, Онаним (?), 18:25, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Посмотрел я на их продакшн-требования для одной ноды... если обычному MariaDB+TokuDB, столько дать, это поделие долго не понадобится. Даже если репликацию и шардинг руками намутить, всё равно выйдет легче и дешевле.
     
     
  • 2.18, девляпсы (?), 19:11, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    мы не можем ждать пока ты там руками что-то намутишь, у нас смузи скиснет!

    "Этих денег нам в зарплату все равно не положат!"


     
  • 2.37, funny.falcon (?), 15:50, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    1. Я сходу не могу найти «продакшн-требования». Кинете ссылочку?
    2. Оптимизация распределённых запросов негораздо более заковыристая штука, чем запросов на локальной машине
    3. Ещё налогом на распределенность идут затраты на обмен между узлами
    4. Да, TiDB ещё молодая и не все ещё вылизано надо зеркального блеска. Но с каждым выпуском они все быстрее.

    А теперь скажите, чего вам будет стоить сделать автоматический фейловер? А решардинг? А решардинг с автоматическим фейловером?

    Сделать руками шардирование - это легко. Реплику поставить тоже не трудно.

    А вот сделать так, чтобы это все работало по щелчку пальцев, и чтобы при падении инцидентах пукан не взрывался от натуги - это не легко. И, к сожалению, за это приходится платить в том числе производительностью.

     
     
  • 3.38, Онаним (?), 09:51, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    1. Да пожалуйста, оно в доках (если их читать, конечно) находится легко:
    https://pingcap.com/docs/stable/hardware-and-software-requirements/

    2. Естественно, но идея не нова, NDB Cluster существует лет уже очень много
    3. Там же, где и 2.

    4. Этих "молодёжных" вариаций сейчас пруд пруди. В реальных условиях либо не работают, либо работают с должной производительностью на полтора запроса одновременно, либо требуют неограниченное число ресурсов, при каковом преимуществ перед классическими решениями, кроме красивой саморекламы, по сути не остаётся.

    Насчёт "щелчка пальцами" - по опыту, "молодёжные" поделки обычно работают до первого залетевшего дятла. Дальше "щелчок пальцами" переходит в даунтайм или вообще потерю данных.

     
     
  • 4.39, Онаним (?), 10:02, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати если кто пробовал - как там со split brain condition?

    Самый простой и типовой случай из реального мира - _кратковременный_ (несколько десятков секунд) сетевой split brain между нодами. Рандомный, и не оставляющий ни в одном из сегментов кворума или полного набора данных. При этом частично связность может сохраняться.

     
     
  • 5.44, funny.falcon (?), 04:21, 01/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Jepsen протестировал TiDB перед выходом версии 3.0 . Был косячок с ретраем транзакций, его выключили по умолчанию. Больше проблем найдено не было.

    https://jepsen.io/analyses/tidb-2.1.7

     
     
  • 6.45, funny.falcon (?), 04:23, 01/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ок, есть некоторые проблемы. Но, как я понимаю, к split brain они не приводят.
     
  • 6.46, Онаним (?), 11:27, 02/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Дело в том, что всегда напрягали и напрягают кластерные "решения", в которых ситуации и поведение при split brain, а особенно - нюансы выхода из таковых - не то, что не расписаны подробно, а вообще пропущены в документации, как будто таковых ситуаций не существует.
     
  • 4.43, funny.falcon (?), 04:19, 01/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    MongoDB работает. Работает нормально. Это раз.
    Хотя, кончено её уже можно считать вовсе даже "старичковской".

    Рекомендуемые требования - это не обязательные. Оно запустится у вас и на меньших тачках. Это два.

    NDBCLUSTER (also known as NDB) is an in-memory storage engine
    The NDBCLUSTER storage engine supports only the READ COMMITTED transaction isolation level.
    Это три.

    "молодёжных" вариаций пруд пруди потому, что "старичковских" вариаций открытых (или хотя бы за вменяемые деньги) нет.
    Это четыре.

     

  • 1.23, Аноним (23), 23:18, 28/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Репликация лучше галеры по задержкам выполнения OLTP?
     
     
  • 2.40, Онаним (?), 10:03, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Репликация лучше галеры по задержкам выполнения OLTP?

    Не думаю. Прямая репликация транзакций и сборка/разборка по распределённому KVS - всё-таки разные накладные расходы совершенно.

     

  • 1.48, Аноним (47), 11:24, 03/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    stored procedures? Не?
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру