Представлен (https://pingcap.github.io/blog/2017/10/17/announcement/) релиз распределённой СУБД TiDB 1.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 предоставляет возможности для горизонтального масштабирования и обеспечения отказоустойчивости: размер хранилища и вычислительную мощность можно наращивать простым подключением новых узлов, данные распределяются по узлам с избыточностью, позволяющей продолжить работу в случае сбоя отдельных узлов. Сбои обрабатываются автоматически.
Система гарантирует непротиворечивость и для клиентского ПО выглядит как одна большая СУБД, несмотря на то, что фактически для выполнения транзакции привлекаются данные со множества узлов. Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственный движок для распределённых хранилищ TiKV (https://github.com/pingcap/tikv).Важными особенностями TiDB является поддержка SQL и предоставление клиентского интерфейса, совместимого с протоколом MySQL, что упрощает адаптацию для TiDB существующих приложений, написанных для MySQL, или позволяет задействовать распространённые клиентские библиотеки. Из возможностей SQL поддерживаются индексы, агрегатные функции, выражения GROUP BY, ORDER BY, DISTICT, слияния (LEFT JOIN / RIGHT JOIN / CROSS JOIN) и простые подзапросы. Предоставляемых возможностей достаточно для организации работы с TiDB таких web-приложений, как PhpMyAdmin,Gogs (https://gogs.io/) и Wordpress.
Из расширенных возможностей отмечаются средства для асинхронного изменения схемы хранения, позволяющие на лету добавлять столбцы и индексы без остановки обработки текущих операций. Кроме протокола MySQL для обращения к СУБД можно использовать API на базе JSON и коннектор для Spark.
URL: https://pingcap.github.io/blog/2017/10/17/announcement/
Новость: http://www.opennet.me/opennews/art.shtml?num=47427
ну надо ж - вторая за месяц "распределенная db" от китайцев.снова на go.
Вероятно, сделана теми, кому не нравился синтаксис postgres, и кого за это выперли из байды ;-)
Ну, может потому что Go для распределенных систем очень годится?И прикинь, но каждая DB подходит только для определенного типа задач.. И чего плохого в том что есть выбор?
Алсо, ты расистский кусок дepьма, не суди продукт по тому кто его сделал
Где ты у Поха увидел хоть намёк на расизм, блюститель морали ты наш?
> Ну, может потому что Go для распределенных систем очень годится?или может, потому что просто модно-стильно-молодежно?
(там еще и rust, если присмотреться - наверное, go не очень годится для всего остального? ;)> И прикинь, но каждая DB подходит только для определенного типа задач..
тут пока не "типы задач", а "мы посмотрели на гугль, и сделали как у них". (не "для тех же задач", а "как у них", почувствуйте разницу - какие-такие задачи оно "у них" решало - собираемся разобраться по ходу дела)
> Алсо, ты расистский кусок дepьма, не суди продукт по тому кто его сделал
я безусловный сторонник расовой дискриминации (поинтересейтесь не в гугле, а в словаре иностранных слов, бумажном, что на самом деле это слово означает), но в данном случае дело по-моему не в расовых или хотя бы национальных различиях, а в том что "хотим такой же гугль, но свой". Щастья такой подход еще никому не приносил.
На данный момент китайцы как-раз и отличаются добротными foss-проектами
> Ну, может потому что Go для распределенных систем очень годится?И чем же он для них так годится?
> И чем же он для них так годится?По всей видимости автор не отличает распределение по ядрам от распределения по хостам. Которого в go нет, как и во многих других популярных языках.
если посмотреть внимательней - там где у них как раз "распределение по ядрам" вместо go почему-то rust ;-)Я все же склоняюсь к исходному предположению - китайцы выучили новые модные языки, и ищут, куда бы их применить. С собственными идеями туго, поэтому за образец взят гугль.
Правда, с применениями а-ля гугль пока тоже туго, зато мы умеем phpmyadmin, wordpress (вот кого спасет распределенная БД!) и кто там еще - карманная версия гитхаба?Но, возможно, у кого-то появится применение и поинтересней.
А чем вас смущает wordpress? Китайская деревня это примерно миллион жителей, во многих деревнях собственные аэропорты. Если удачный пост посмотрит половина деревни разом, уже hiload во весь рост. Хабраэффект нервно курит в сторонке. Местный колорит, знаете ли, накладывает свои особенности на восприятие внешнего окружения.
> посмотрит половина деревничерез задницу коровы да?
> А чем вас смущает wordpressа, кстати, да - возможно я ди6ил и не понял буквально то что написано - а надо было.
То есть вот ровно ради вордпрессов и прочей незамысловатой фигни оно и было написано, а гугль действительно послужил просто источником идеи - потому что таки да, местный колорит имеет место быть, а сервера-то обычные, обычной мощности, и диски тоже.Ну и вот тот самый китайский менталитет - китайской архитектуры вместо интела мы не увидим никогда, китайскую эффективную для большого количества пользователей альтернативу вордпрессу - маловероятно, а вот переписать mysql так, чтобы поделить нагрузку на несколько ящиков (причем, что характерно, не дисковую, а процессорную, с бесконечными mysql'ными "sorting") вполне понятная и реализумая для них задача.
>если посмотреть внимательней - там где у них как раз "распределение по ядрам" вместо go почему-то rust ;-)... если реально посмотреть внимательней - у них на выбор 3 бэкенда - 2 на го, один ржавый ...
А та, вторая база, о которой так долго говорили больш^W говорил пох - оно го\с++ - ужос да? :-)>Я все же склоняюсь к исходному предположению - китайцы выучили новые модные языки, и ищут, куда бы их применить. С собственными идеями туго, поэтому за образец взят гугль.
Ага! Есть такое осцусчение :)
Но с другой стороны - не вечно же муз. плееры кодить :-)
> ... если реально посмотреть внимательней - у них на выбор 3 бэкендано два из них явно позиционируются как игрушечные, да.
Кстати, они, оказывается, подробно расписали,чем именно go плох для этой затеи.
> А та, вторая база, о которой так долго говорили больш^W говорил
> пох - оно го\с++ - ужос да? :-)очень вероятно - по той же самой причине, ага ;-)
>> ... если реально посмотреть внимательней - у них на выбор 3 бэкенда
>но два из них явно позиционируются как игрушечные, да.А точно! Так и написано: вот это - игрушка, это - тоже .. а вот ЭТО! Та-дам! :-)
(да оно всё _целиком_ игрушка, с моей колокольни :) )>Кстати, они, оказывается, подробно расписали,чем именно go плох для этой затеи.
А носом ткнуть? А то я то догадываюсь, но интересно что шаолини порешили ... вдруг их кунг-фу лучше?! :)
>> пох - оно го\с++ - ужос да? :-)
>очень вероятно - по той же самой причине, ага ;-)Дык нам бы схемку иль чертёж! ... (С) Ткни в рассуждения о дзене, я почитаю и ежели не согласен вернусь ещё потроллить! У меня есть печеньки! (С)
> А носом ткнуть?я чо, псих все конст...линки помнить? Где-то внутри красивенького синенького сайта разработчиков, ссылка в новости, вероятнее всего (где б я ее еще взял)
Ничем. Человек говорит о том, в чем, очевидно, плохо разбирается. Go это очередной хипстерский недоязычок, годный разве что для хелловорлдов. Для серьезных задач традиционно используется C и C++. Писать многопоточные и распределенные приложения на C - очень удобно и быстро, как с точки зрения времени программиста, так и с точки зрения бизнеса. Отличная производительность языка позволяет делать огромные проекты, которые компилируются за доли секунд и используют все возможности современного железа. Ручное управление памятью позволяет экономить процессорное время и писать максимально оптимизированный код.Множество вакансий для C разработчиков и его неуклонно растущая популярность только подтверждает мои слова. Сам язык элегантен - в нем нет ничего лишнего, а код единообразен и читается как песня на эльфийском языке. Язык стремительно развивался с самого момента своего появления и на сегодняшний момент является венцом инженерной мысли и человеческих способностей.
Kubernetes, Consul, Docker, etcd, CockroachDB, ...Да, одни хеллоуворлды..
ЗЫ. спасибо за твой коммент, я давно так не смеялся
И что из этого используется хоть мало-мальски где-нибудь?
Kubernetes - OpenShift, Google Container Engine
consul + packer - например, Twitch
docker - ну, думаю не стоит объяснять
Мне кажется это какая-то шутка или троллинг, зачем использовать такой ущербный инструмент как Go? Вот я слышал что в языке C сделали сложную семантику просто для троллинга, разве тут тоже самое не может быть? Перечисленные компании и так коммерчески успешны, думаю что такой выбор сделан исключительно для того, чтобы поиздеваться над разрабами и заставить их использовать заведомо провальную технологию.
>Мне кажется это какая-то шутка или троллинг,Это от того что ты слаб умом. Если ты школьник - учителя и родители это поправят (регулярной поркой), а если ты уже половозрелое ... ну соболезнования :(
>зачем использовать такой ущербный инструмент как Go?
Об уго ущербности ты судить не можешь, по причину указанной сверху. т.ч.к.
Остальной жалкий закос под взрослого, толстого тролля стерт с чувством брезгливости.
Оо, ну все-все, пришел анончик и порешал кто я такой. Отчего такое желание ставить диагнозы буковкам в интернете? Ты на Go пишешь? Тогда это многое объясняет!
Все правильно расписал.
Куча полезных библиотек, concurrency с коробки(горутины и каналы), код читабильнее, деплоить го проекты очень просто(скопировать бинарник)..Хочется поинтересоваться, какой же тогда ЯП использовать для распределенны систем, если на Go запрещено писать?
LISP или Rust, да вообще какой угодно? Go годится разве что только для того чтобы понтоваться перед одноклассинками, реальных работающих проектов на нем просто НЕТ.
Представь, но есть. Правда большинство из них связаны с distributed systems и cloud.
Примеры в студию. Это насколько нужно себя не уважать, чтобы пытаться писать хоть какой-то код на этом позорище, которое гугель назвал языком программирования.
Выше же написано:
Kubernetes, Consul, Docker, etcd, CockroachDB, ...
Это заклинание какое-то у Го-адептов или что? Один и тот же набор поделок пишут везде. Что из перечисленного используется хоть где-нибудь в продакшене?
Charter communications (25 mil клиентов): пользуем docker, kubernetes и consul.
Ого, а что еще используете? Такая крупная и солидная корпорация, 25млн. клиентов! Наверняка вы там очень умные все парни собрались.
Список поделок непрерывно и стремительно растёт, BTW ... Смотри тему топика - завидуй.Впрочем понятно что ты пытаешься троллить, но даже на это умишка не особо хватает. Старайся лучше! :-)
Завидовать чему? "Первый стабильный выпуск распределённой СУБД TiDB" - ахахах, в каком месте завидовать-то начинать? Я пользуюсь нормальными проектами, если нужна БД. PostgreSQL там, Cassandra. Убогие Go проекты всегда привлекают аудиторию, как привлекает выступление юродивого на городской площади. Все смотрят, потому что интересно - но смеяться грех, ибо кривого и косого только могила исправит.
Что тебе еще такого написать, чтобы ты лопнул от переедания?
https://github.com/syncthing/syncthing
> ... реальных работающих проектов на Go просто НЕТ.... в твоём Мухосранске.
Поправил, не благодари!
В моем Мухосранске нормальные все люди, им Go-убожество ни к чему! Хорошо, что фанатики Go предпочитают не использовать других языков и технологий, а все пишут на Go. Так они более менее изолированы в своем курятнике, куда порядочный человек даже смотреть не станет. Это как с нодой - все вокруг кажется гвоздями, когда ты используешь модный-современный молоток.
>В моем Мухосранске нормальные все люди, aYу вот видишь - в семье не без ARA-ы :)
> Куча полезных библиотекУгу, а в других языках их нет.
> concurrency с коробки(горутины и каналы)
Чем это помогает конкретно в распределенных системах?
> код читабильнее
Читабельней чего?
> деплоить го проекты очень просто(скопировать бинарник).
Ты что-то серьезней helloworld на нем писал? А деплоить больше чем под одну ОС пробовал? Ну и наконец, для deploy существует куча решений, делающая этот процесс автоматическим для любого ЯП.
> Хочется поинтересоваться, какой же тогда ЯП использовать для распределенны систем, если на Go запрещено писать?
Попробуй научится внимательно читать, прежде чем строчить ответ. Никто его не запрещал. Более того, я даже не говорил, что он плох. Как по мне, Go очень хороший язык для своих задач. Вот только распределенные системы не являются его задачей и у него нет никаких преимуществ в этой области.
Погугли на досуге про такой ЯП как Limbo.
Для чего же Go тогда хорош?
> Для чего же Go тогда хорош?кетайцы быстро выучивают, например ;-)
ну и есть же ж куча мест, где нужно ненапряжное middleware, которому необязательно работать с микросекундной синхронизацией, можно и подождать пока там gc ворочается.
этакий перл+cpan XXI века, с синтаксисом, похожим на c++
> с синтаксисом, похожим на c++И что же именно в Go от C++? Подчеркну, именно от C++, а не от C
> И что же именно в Go от C++? Подчеркну, именно от C++, а не от Cох, я давно отстал от жизни, а что, в C появились объекты?
Нет, но в Go нет классов из C++ ни в виде синтаксиса, ни в виде сущности. Причем это видно даже при беглом знакомстве с языком. А ты даже это не удосужился сделать.
> Нет, но в Go нет классов из C++ты хотел сказать - наследования классов нет? Питается - питается, методы - в наличии (у нормальной структуры бывают только поля, а не методы и интерфейсы). Размножаться не умеет, ну так от перла надо ж хоть этим отличаться.
Нет классов. Вообще. _НАПРОЧЬ!!!_ (С) LOR
Сетевые демоны, web сервисы, большие проекты. С наложением на всё это требования к низкому потреблению ресурсов.
> Сетевые демоны, web сервисы, большие проекты.сетевой демон, "отвлекающийся на минуточку", потому что к нему в гости зашел GC ? Уп-с... а мы-то тут строим-строим навороты, пытаемся то accept в ядро втащить, то queues для udp придумать, чтобы не уложить ненароком и демона и всю систему...
уеб-сервисы - согласен, им все равно. Правда, уебсервис и на пехепе неплохо пишется.
Большие проекты? name first two? Къебенетес и доскер большими проектами не являются, это очень небольшие и при этом чудовищно уродливые проекты, воистину антиреклама языку, на котором написаны. (оставляя в стороне то, что всю реальную работу выполняет код ядра)> С наложением на всё это требования
> к низкому потреблению ресурсов.так и запишем - plain c потребляет много ресурсов.
> сетевой демон, "отвлекающийся на минуточку", потому что к нему в гости зашел GC ?Изучаешь Go по напевам Рабиновича? Ну успехов. Но при таком подходе цена твоему мнению о проектах на Go равна нулю.
> так и запишем - plain c потребляет много ресурсов.
Тебе рассказать, что такое логическое И и чем оно отличается от ИЛИ?
> Изучаешь Go по напевам Рабиновича?мне самому не пришло бы в голову проверять это предположение - поскольку крайне сложно поверить, что это не так. Все языки с gc снабжены данной проблемой автоматически. Рабинович, кстати, поет примерно о том же - это один из аргументов китайцев, почему в tikv им пришлось выучить еще один модный язык. Подозреваю, им тоже не пришло в голову на самом деле проверять очевидные вещи.
Очень надеюсь никогда не встретить поделку, автор которой о таких вещах просто не задумывался.> Тебе рассказать, что такое логическое И и чем оно отличается от ИЛИ?
мне лучше рассказать в сравнительных категориях. А то я скажу что жаба потребляет мало ресурсов (в общем-то, не так уж и много, даже не требует суперкомпьютера для запуска).
Очевидно, что потребляет больше, чем языки без хитрой механики под капотом. Вероятно, в большинстве случаев это неважно. Но "в большинстве случаев" можно и на пихоне.
>Погугли на досуге про такой ЯП как Limbo.и что там искать? limbo по сути предок го, от тех же авторов
В моем детсве о таких говорили: "смотрю в книгу, вижу фигу".
Видимо еще не прошло, Ваше детство
Хахаха, Spanner и F1 для PhpMyAdmin и вордпресса, ну и норкоманы!Это как разрабатывать спейс шаттл для того чтобы возить коров из Минска в Смоленск. Ну зачем им cross-datacenter ACID? Это пока что только Spanner умеет, больше никто.
Цена на GCP за настоящий Spanner как бы намекает -- $650/мес/ноду (умножить на три для продакшна).
Как они объясняли что они будут делать с CAP theorem? В Spanner для этого в каждом датацентре стоят атомные часы и данные бегают по выделенной стабильной SDN сети полностью под контролем Гугла. И то всё равно ограничение на апдейт одной конкретной строки -- не более 1/сек.
> Хахаха, Spanner и F1 для PhpMyAdmin и вордпресса, ну и норкоманы!это наша догадка, а не подтвержденный факт. Возможно, все же это - демонстрация возможностей, а не конечная цель. А цель - напомню, это коммерческий стартап, а не деньги из воздуха - собрать те бабки, за которыми поленился нагнуться разжиревший гугль. Вполне достижимая.
> Это как разрабатывать спейс шаттл для того чтобы возить коров из Минска в Смоленск.
телепорт. Потому что коров мильен, котлетный завод простаивает, а шесть мильярдов кита...смоленчан жрать хотят.
> Ну зачем им cross-datacenter ACID?
а они китайские, оба. То есть дешево и из картона. Поэтому не очень надежно.
То есть вопроса "зачем" вообще нет, есть вопрос "почём".
На спаннер юаней не хватает.> Как они объясняли что они будут делать с CAP theorem?
как-то объясняли, не особенно внятно - страждущие ответов на эти вопросы могут идти читать доки, их есть и они даже не квадратиками.
> Это как разрабатывать спейс шаттл для того чтобы возить коров из Минска в Смоленск.Маск вот как раз собирается)
Маск много чего всё собирается да собирается, только это дороже Конкорда, а Конкорд разорился. Да и не шаттл это, шаттл на два порядка сложнее. Системные архитекторы обычно рассматривают программу шаттла как наиболее сложный проект до сих пор.
> только это дороже Конкорда, а Конкорд разорилсяконкорд разорился в совсем другие времена, когда зеленая плесень еще не проела мозги политикам и их какеготам...э...лохторату, во.
Сейчас бы рассказали сказок, что он де немеряно экологичен и бережет озоновый слой, может наклеили бы на хребет пару солнечных панелек в ладошку размером, можно даже - ни к чему не подключеных, дешевле выйдет, но покрасить веселенькой красочкой, чтоб были заметнее в рекламных буклетах - и развели бы государство на пяток полезных спонсорских программ, а инв...спекулянты бы после этого и сами поперли - капитализация же ж растет, надо брать.К сожалению, поляна конкордов уже засрана, остается пидерлуп и многоразовые ракеты.
> Системные архитекторы обычно рассматривают программу шаттла как наиболее сложный проект
> до сих пор.странно, может они просто уже седые дедушки и кроме радиошансон новостей не слушают?
Он же даже садиться без помощи пилотов не умел, баки спускались на парашутиках, без всякой супербаллистики, падая где попало и не всегда удачно (просто на этом не заострялось внимание). Или они в том смысле, что сама конструкция, из-за ограничений электроники сорокалетней давности, была суперсложной, а не задача, которую она решала? Ну так оно нынче - не надо.X-37B, что характерно - летаить, гад. Причем крайний запуск - фальконом, да, с посадкой ступени. Он, наверное, полегче, ему семь жоп не надо возить, но тем не менее... Чо возит и на кого оттеда пырится - государственная тайна есть. Наверное, навещает орбитальную станцию рептилоидов, за инструкциями, а им - тушки христианских младенцев в собственном соку подвозит.
Гайз, объясните плиз, чем это лучше Монги или Риака?