Доступен (https://pingcap.com/blog/tidb-3.0-announcement/) релиз распределённой СУБД TiDB 3.0 (https://pingcap.com/index), развиваемой под впечатлением от технологий Google Spanner (http://research.google.com/archive/spanner.html) и F1 (http://research.google.com/pubs/pub38125.html). TiDB относится к категории гибридных систем HTAP (Hybrid Transactional/Analytical Processing), способных как обеспечивать выполнение транзакций в реальном времени (OLTP), так и выполнять обработку аналитических запросов. Проект написан на языке Go и распространяется (https://github.com/pingcap/tidb) под лицензией 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 (https://gogs.io/) и Wordpress;
- Возможность горизонтального масштабирования и обеспечения отказоустойчивости: размер хранилища и вычислительную мощность можно наращивать простым подключением новых узлов. Данные распределяются по узлам с избыточностью, позволяющей продолжить работу в случае сбоя отдельных узлов. Сбои обрабатываются автоматически.
- Система гарантирует непротиворечивость и для клиентского ПО выглядит как одна большая СУБД, несмотря на то, что фактически для выполнения транзакции привлекаются данные со множества узлов.- Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственный движок распределённого хранилища TiKV (https://github.com/pingcap/tikv).
- Возможность асинхронного изменения схемы хранения, позволяющая на лету добавлять столбцы и индексы без остановки обработки текущих операций.
Основные новшества (https://github.com/pingcap/tidb/releases/tag/v3.0.0):
- Проведена работа по увеличению производительности. В тесте 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.
URL: https://pingcap.com/blog/tidb-3.0-announcement/
Новость: https://www.opennet.ru/opennews/art.shtml?num=51060
> развиваемой под впечатлением от технологийХороша формулировочка! Впрочем, не под веществами — и ладно.
Тексты пишет нам нихто... Они появляются спонтанно в состоянии...
> Тексты пишет нам нихто... Они появляются спонтанно в состоянии...BredorDB?
Я когда молодой был и глупый, пытался работать на наших вояк. Естественно это включало в себя писанину, и она была одной из причин, почему я забил. У них там свой собственный упрощённый язык, который создан посредством вырезания из русского языка 90% конструкций и слов. Я не знаю зачем он им нужен в тексте набитом математикой: если вояко не может понять неадаптированный русский язык, то он не сможет понять и математику. А если он не сможет понять математику, то зачем ему читать то, что я пишу? Но самое интересное, что этот упрощённый язык делал текст сложнее для понимания -- это вообще известное свойство языка, что чем проще язык, тем сложнее уловить мысль, скажем на ассемблере приходится продираться через все эти инструкции, разбираясь, скажем, с каждым push, чтобы понять -- это аргумент для вызова функции, или чтобы временно освободить регистр, или ещё с какими-то целями делается.Собственно, проблемы наших вояк и работающих на них инженеров и учёных -- это их проблемы, я за два года набрался ума достаточно, чтобы уйти от них. Но в новостях-то на опеннете зачем вводить эти ограничения на допустимые обороты и грамматические конструкции? Чёрт с ним с матом и откровенной разговорщиной, они в письменной речи действительно больше мешают, чем помогают изъясняться. Но "под впечатлением" -- это вполне литературный оборот, который здесь вполне вписывается во фразу отлично передавая смысл, который автору текста хотелось передать.
Ни шыша не понял. Чо хотел сказать-то?
> "под впечатлением" -- это вполне литературный оборотКто ж спорит-то?
> который здесь вполне вписывается во фразу отлично передавая смысл, который автору текста хотелось передать.
Не могу знать наверняка, что там хотелось передать автору, но куда больше это смахивает на кальку с английского «inspired by», а это правильно было бы перевести как «под влиянием» или «вдохновившись», что не подразумевает изменённого состояния сознания.
Да ладно "не подразумевает". Изменение сознание -- это постоянный процесс в голове у человека. Сознание не изменяется лишь у трупа. А если у тебя устойчивая ассоциация с "под веществами", то я рекомендую немного расширить свой информационный бабл. Разбавить наркоманские темы чем-нибудь ещё.
А с чего вы взяли, что комментатор не из них?
> Но "под впечатлением" -- это вполне литературный оборотэто в прошлом веке он был вполне литературный оборот.
А в этом, как его...2k19 - в стране, где лучшие сотрудники госнаркомаф...контроля сгорают на работе от передоза - неудивительно, что половина читателей мучительно пытается понять, под каким-таким "впечатлением" и что это за вещество, а сообразив, наконец-то, что тут написано - расстраиваются, и идут запивать обиду скрепным боярышником.
> это в прошлом веке он был вполне литературный оборот.Это тебе так кажется, в силу узости интересов, которая приводит к очень специфичной выборке текстов, которые ты читаешь. Если тебе не верится, то не поленись, дойди до поисковика и вгони туда "под впечатлением"+новости. Хотя может быть "новости" можно и не добавлять: вероятно поисковик и без этого будет предпочитать свежие ссылки протухшим.
смеешься? Какие еще ссылки на поисковики в "2k19"? Поисковики у нас с тобой - разные, про е6лю с конями я могу и по любому другому запросу почитать, необязательно такому.ну и во-вторых - интернет как источник литературного языка - это даже не смешно.
> смеешься? Какие еще ссылки на поисковики в "2k19"? Поисковики у нас с
> тобой - разные, про е6лю с конями я могу и по
> любому другому запросу почитать, необязательно такому.И чё? Конкретный запрос не важен, выбор поисковика тоже не важен. Новости удобны тем, что к ним прицеплена дата публикации. Но, я вот думаю, что это не очень важно, потому что поисковик в любом случае накидает тебе преимущественно ссылок не старше десяти лет.
> ну и во-вторых - интернет как источник литературного языка - это даже
> не смешно.Но речь ведь идёт не просто про "литературный язык": литературность этой фразы не вызывает вопросов. Речь про актуальность фразы, а актуальность фразы -- это то как её используют. И интернет здесь оказывается гораздо лучше, чем если ты будешь читать тексты академиков. И уж всяко лучше, чем строить своё мнение о частоте использования фразы на основании своих субъективных ощущений: твои субъективные ощущения построены на очень специфической выборке текстов. Поисковик может дать тебе гораздо более интересную выборку, и более того варьируя запрос ты можешь получить разные выборки.
Интернет -- это отличный способ исследовать современный язык. Письменный правда, но у нас здесь речь именно о письменном языке и идёт. Даже если отвлечься от простоты способа для изучения языка, и рассмативать и сложные способы тоже, то даже в этом случае я сомневаюсь, что можно найти способ лучше чем разглядывание интернета. То есть можно, например, набрать рандомную выборку журналистов, которые постоянно что-то пишут, и задать каждому десяток вопросов, среди которых спрятать вопрос про "под впечатлением", поинтересовавшись у них тем, как они воспринимают эту фразу в современном контексте. Это будет лучше, да, потому что в поисковике можно найти вхождения фразы в новости, но нельзя найти "невхождения", то есть те случаи когда фраза была бы уместна, но не была использована.
Хочешь, займись этим. Тебе понадобится выборка минимум в 30 человек, хотя для статистической значимости лучше человек 40-50. Но рандомизированная выборка, то есть тебе надо будет определить бОльшую группу людей, чьё мнение лучше отражает положение дел, и выбрать оттуда рандомом 40 человек.
Я не буду этим заниматься, мне достаточно того, что фраза используется.
> ...я за два года набрался ума достаточно...Таки набрался ума, стало быть, было чему научиться. Иначе, зачем же целых два года ждал? Где-то вы, батенька, что-то привираете.
>> ...я за два года набрался ума достаточно...
> Таки набрался ума, стало быть, было чему научиться. Иначе, зачем же целых
> два года ждал? Где-то вы, батенька, что-то привираете.Не понимаю, где ты тут видишь нестыковку/противоречие. Поясни.
>Сбои обрабатываются автоматически.как? волшебным образом? какой там механизм? brain split получать желания никакого нет
Внутри шаржа Raft. Не удивлюсь, если для метаинформация по шардам тоже
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.
раз есть лидер - есть выборы (raft это подтверждает). раз есть выборы - есть brain split
Ну почему. Можно запретить выбирать лидера, если нет кворума :)
если рассматривать кворум из всех серверов тогда да ok, только нафиг тогда выборы? а если кворум образованных сетевыми проблемами групп - то это brain split.
Если n серверов, то требовать кворум размером > n/2.
ok, только тогда речь об одной группе (не будет развала на несколько групп) - это работает, вот только тогда нафига выборы?
В один раздел (шард, партицию, таблицу, etc) должен писать кто-то один. Тот самый мастер, которого выбирают в shared-системах. Для изолированных областей мастеров может быть больше одного (по числу областей).
* Если нужен ACID, жизнь становится совсем сложной.
у кого оно в продакшене и на каких объемах/нагрузках?
>собственный движок распределённого хранилища TiKV
>>TiKV uses Raftну все, здравствуй brain split
Гораздо полезнее было бы описать что эта TiDB _не может_. Сразу понятно куда её имеет смысл совать.
> Гораздо полезнее было бы описать что эта TiDB _не может_.ну, вполне очевидно, что она не может сделать тебя богатым и умным. Или хотя бы одного из двух. Это точно полезнее было бы описать? Или тебе предоставить полный список, включая но не ограничиваясь "я не бесчестил священных бегемотов Тардис" ?
https://pingcap.com/success-stories/ как бы намекает, конечно, что ее пока имеет смысл совать тудой, где хотя бы читать по-китайску могут. Потому что рецепты на стековерфлоу будут немного неудобочитаемы.
Бегемотов не надо. А относящееся к делу не помешали бы. От балды примеры - "рассчитана на много большую нагрузку на чтение, чем на запись", "такие-то запросы возможны, но не оптимизированы и не являются ожидаемой нагрузкой", "такой-то относительно распространённой функции нет и не планируется в силу особенностей архитектуры" и так далее. В рекламе такое не напишешь, но для специалиста такие штуки не только упрощают жизнь, но и здорово повышают доверие к продукту.
(Тарут, блжад! да простит мне Осирис путанницу)Ну как бе там предлагают записаться на бесплатный курс на предмет разбирания в деталях, не такое уж это и просто занятие.
Ну и опыт 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 будет тормоз, а немассовые надо буферизовать из-за большой задержки.
Но как вообще можно пользоваться таким продуктом китайской разработки, безотносительно к его применимости для конкретной задачи - я не понимаю.
https://pingcap.com/blog/2017-07-24-tidbbestpractice/
Впервые слышу о такой СУБД
держи в курсе
Бывший тимлид mysql в oracle там.
это скорее плохо чем хорошо
А чем это лучше того же NDB кластера?
модно молодежно
Интересно сравнить с ProxySQL + MySQL/MariaDB (Galera cluster), особенно по производительности
Надо потестировать хорошо бы даже посравнивать с какой-нибудь MySQL, а чем можно клонировать запросы сразу на два узла обычный MySQL Server и в это чудо. Есть какой-то проект такой MySQL Proxy
А можно такое же но для nosql?