The OpenNET Project / Index page

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

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

13.07.2019 23:08

Доступен релиз распределённой СУБД TiDB 3.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.
  • Возможность асинхронного изменения схемы хранения, позволяющая на лету добавлять столбцы и индексы без остановки обработки текущих операций.



Основные новшества:

  • Проведена работа по увеличению производительности. В тесте Sysbench выпуск 3.0 опережает ветку 2.1 в 1.5 раза при выполнении операций select и update, а в тесте TPC-C в 4.5 раза. Оптимизации затронули различные виды запросов, включая подзапросы "IN", "DO" и "NOT EXISTS", операции слияния таблиц (JOIN), использование индексов и многое другое;
  • Добавлен новый движок хранения TiFlash, позволяющий добиться более высокой производительности при решении аналитических задач (OLAP), благодаря хранению в привязке к столбцам. TiFlash дополняет собой ранее предлагаемое хранилище TiKV, хранящее данные в разрезе строк в формате ключ/значение и более опримальное для задач обработки транзакций (OLTP). TiFlash работает бок о бок с TiKV и данные продолжают как и раньше реплицироваться в TiKV с использоанием протокола Raft для определении консенсуса, но для каждой группы реплик Raft создаётся дополнительная реплика, которая используется в TiFlash. Подобный поход позволяет добиться лучшего разделения ресурсов между задачами OLTP и OLAP, а также делает данные транзакций мгновенно доступными для аналитических запросов;
  • Реализован распределённый сборщик мусора, позволяющий существенно повысить скорость сборки мусора в крупных кластерах и повысить стабильность работы;
  • Добавлена экспериментальная реализация системы разграничения доступа на основе ролей (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.


  1. Главная ссылка к новости (https://pingcap.com/blog/tidb-...)
  2. OpenNews: Выпуск распределённой СУБД TiDB 2.0
  3. OpenNews: Доступна распределённая графо-ориентированная СУБД Dgraph 0.4
  4. OpenNews: Компания Bloomberg открыла код распределённой СУБД Comdb2
  5. OpenNews: Доступна распределённая СУБД CitusDB 7.3
  6. OpenNews: Компания Apple открыла код распределённой СУБД FoundationDB
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51060-tidb
Ключевые слова: tidb, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 00:03, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > развиваемой под впечатлением от технологий

    Хороша формулировочка! Впрочем, не под веществами — и ладно.

     
     
  • 2.2, Аноним (2), 00:47, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тексты пишет нам нихто... Они появляются спонтанно в состоянии...
     
     
  • 3.3, Аноним (3), 02:02, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Тексты пишет нам нихто... Они появляются спонтанно в состоянии...

    BredorDB?

     
  • 2.12, Ordu (ok), 12:34, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Я когда молодой был и глупый, пытался работать на наших вояк. Естественно это включало в себя писанину, и она была одной из причин, почему я забил. У них там свой собственный упрощённый язык, который создан посредством вырезания из русского языка 90% конструкций и слов. Я не знаю зачем он им нужен в тексте набитом математикой: если вояко не может понять неадаптированный русский язык, то он не сможет понять и математику. А если он не сможет понять математику, то зачем ему читать то, что я пишу? Но самое интересное, что этот упрощённый язык делал текст сложнее для понимания -- это вообще известное свойство языка, что чем проще язык, тем сложнее уловить мысль, скажем на ассемблере приходится продираться через все эти инструкции, разбираясь, скажем, с каждым push, чтобы понять -- это аргумент для вызова функции, или чтобы временно освободить регистр, или ещё с какими-то целями делается.

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

     
     
  • 3.14, ы (?), 15:21, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ни шыша не понял. Чо хотел сказать-то?
     
  • 3.15, Аноним (1), 15:55, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > "под впечатлением" -- это вполне литературный оборот

    Кто ж спорит-то?

    > который здесь вполне вписывается во фразу отлично передавая смысл, который автору текста хотелось передать.

    Не могу знать наверняка, что там хотелось передать автору, но куда больше это смахивает на кальку с английского «inspired by», а это правильно было бы перевести как «под влиянием» или «вдохновившись», что не подразумевает изменённого состояния сознания.

     
     
  • 4.21, Ordu (ok), 23:35, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да ладно "не подразумевает". Изменение сознание -- это постоянный процесс в голове у человека. Сознание не изменяется лишь у трупа. А если у тебя устойчивая ассоциация с "под веществами", то я рекомендую немного расширить свой информационный бабл. Разбавить наркоманские темы чем-нибудь ещё.
     
  • 3.16, None (??), 16:07, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А с чего вы взяли, что комментатор не из них?
     
  • 3.18, пох. (?), 18:27, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Но "под впечатлением" -- это вполне литературный оборот

    это в прошлом веке он был вполне литературный оборот.

    А в этом, как его...2k19 - в стране, где лучшие сотрудники госнаркомаф...контроля сгорают на работе от передоза - неудивительно, что половина читателей мучительно пытается понять, под каким-таким "впечатлением" и что это за вещество, а сообразив, наконец-то, что тут написано - расстраиваются, и идут запивать обиду скрепным боярышником.

     
     
  • 4.22, Ordu (ok), 23:41, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > это в прошлом веке он был вполне литературный оборот.

    Это тебе так кажется, в силу узости интересов, которая приводит к очень специфичной выборке текстов, которые ты читаешь. Если тебе не верится, то не поленись, дойди до поисковика и вгони туда "под впечатлением"+новости. Хотя может быть "новости" можно и не добавлять: вероятно поисковик и без этого будет предпочитать свежие ссылки протухшим.

     
     
  • 5.28, пох. (?), 10:05, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    смеешься? Какие еще ссылки на поисковики в "2k19"? Поисковики у нас с тобой - разные, про е6лю с конями я могу и по любому другому запросу почитать, необязательно такому.

    ну и во-вторых - интернет как источник литературного языка - это даже не смешно.

     
     
  • 6.29, Ordu (ok), 10:38, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И чё Конкретный запрос не важен, выбор поисковика тоже не важен Новости удобны... большой текст свёрнут, показать
     
  • 3.25, Анонимный прохожий (?), 06:18, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ...я за два года набрался ума достаточно...

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

     
     
  • 4.27, Ordu (ok), 09:00, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> ...я за два года набрался ума достаточно...
    > Таки набрался ума, стало быть, было чему научиться. Иначе, зачем же целых
    > два года ждал? Где-то вы, батенька, что-то привираете.

    Не понимаю, где ты тут видишь нестыковку/противоречие. Поясни.

     

  • 1.4, Аноним (4), 02:32, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >Сбои обрабатываются автоматически.

    как? волшебным образом? какой там механизм? brain split получать желания никакого нет

     
     
  • 2.17, funny.falcon (?), 17:58, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Внутри шаржа Raft. Не удивлюсь, если для метаинформация по шардам тоже
     
  • 2.26, Аноним (26), 06:53, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    At the bottom layer, TiKV uses a model of replication log + State Machine to replicate data. For the write requests, the data is written to a Leader and the Leader then replicates the command to its Followers in the form of log. When the majority of nodes in the cluster receive this log, this log is committed and can be applied into the State Machine.

    https://pingcap.com/docs/v3.0/faq/tidb/

     
     
  • 3.31, Аноним (31), 12:13, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    раз есть лидер - есть выборы (raft это подтверждает). раз есть выборы - есть brain split
     
     
  • 4.35, anonymous (??), 18:39, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну почему. Можно запретить выбирать лидера, если нет кворума :)
     
     
  • 5.36, Аноним (31), 19:46, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    если рассматривать кворум из всех серверов тогда да ok, только нафиг тогда выборы? а если кворум образованных сетевыми проблемами групп - то это brain split.
     
     
  • 6.39, anonymous (??), 06:54, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Если n серверов, то требовать кворум размером > n/2.
     
     
  • 7.40, Аноним (31), 13:28, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ok, только тогда речь об одной группе (не будет развала на несколько групп) - это работает, вот только тогда нафига выборы?
     
     
  • 8.41, PnDx (ok), 13:23, 17/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В один раздел шард, партицию, таблицу, etc должен писать кто-то один Тот самы... текст свёрнут, показать
     

  • 1.5, Аноним (4), 02:33, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    у кого оно в продакшене и на каких объемах/нагрузках?
     
  • 1.6, Аноним (4), 02:36, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >собственный движок распределённого хранилища TiKV
    >>TiKV uses Raft

    ну все, здравствуй brain split

     
  • 1.8, qsdg (ok), 03:07, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Гораздо полезнее было бы описать что эта TiDB _не может_. Сразу понятно куда её имеет смысл совать.
     
     
  • 2.19, пох. (?), 18:33, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Гораздо полезнее было бы описать что эта TiDB _не может_.

    ну, вполне очевидно, что она не может сделать тебя богатым и умным. Или хотя бы одного из двух. Это точно полезнее было бы описать? Или тебе предоставить полный список, включая но не ограничиваясь "я не бесчестил священных бегемотов Тардис" ?

    https://pingcap.com/success-stories/ как бы намекает, конечно, что ее пока имеет смысл совать тудой, где хотя бы читать по-китайску могут. Потому что рецепты на стековерфлоу будут немного неудобочитаемы.

     
     
  • 3.30, Crazy Alex (ok), 11:21, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Бегемотов не надо. А относящееся к делу не помешали бы. От балды примеры - "рассчитана на много большую нагрузку на чтение, чем на запись", "такие-то запросы возможны, но не оптимизированы и не являются ожидаемой нагрузкой", "такой-то относительно распространённой функции нет и не планируется в силу особенностей архитектуры" и так далее. В рекламе такое не напишешь, но для специалиста такие штуки не только упрощают жизнь, но и здорово повышают доверие к продукту.
     
     
  • 4.33, пох. (?), 12:50, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    (Тарут, блжад! да простит мне Осирис путанницу)

    Ну как бе там предлагают записаться на бесплатный курс на предмет разбирания в деталях, не такое уж это и просто занятие.

    Ну и опыт F1 как бы намекает:

    ORM Anti-Patterns●Obscuring database operations from app developers●Serial reads/for loops doing one query per iteration●Implicit traversal/Adding unwanted joins and loading unnecessary data

    These hurt performance in all databases.They are disastrous on F1.

    ничего такого неожиданного. Как и то, что на массовых insert будет тормоз, а немассовые надо буферизовать из-за большой задержки.

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

     
  • 2.38, Анон123 (?), 01:39, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://pingcap.com/blog/2017-07-24-tidbbestpractice/
     

  • 1.9, Аноним (9), 06:07, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Впервые слышу о такой СУБД
     
     
  • 2.10, Аноним (-), 06:37, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    держи в курсе
     
  • 2.23, Аноним (23), 05:52, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Бывший тимлид mysql в oracle там.
     
     
  • 3.32, Аноним (31), 12:14, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    это скорее плохо чем хорошо
     

  • 1.11, хотел спросить (?), 11:02, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А чем это лучше того же NDB кластера?
     
     
  • 2.24, Аноним (23), 05:55, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    модно молодежно
     

  • 1.20, Аноним (20), 23:11, 14/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересно сравнить с ProxySQL + MySQL/MariaDB (Galera cluster), особенно по производительности
     
  • 1.34, Аноним (34), 15:36, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо потестировать хорошо бы даже посравнивать с какой-нибудь MySQL, а чем можно клонировать запросы сразу на два узла обычный MySQL Server и в это чудо. Есть какой-то проект такой MySQL Proxy
     
  • 1.37, Ддд (?), 19:49, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А можно такое же но для nosql?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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