Последние несколько месяцев ситуация вокруг RethinkDB была весьма смутна, о будущем проекта было сложно что-то сказать. Но ситуация наконец-то разрешилась, в официальном блоге появилось долгожданное обновление с разъяснением о текущем положении вещей. Как стало известно, CNCF(Cloud Native Computing Foundation) выкупила права на исходники RethinkDB и передала проект под покровительство организации Linux Foundation. Перед передачей код был переведён с лицензии AGPLv3 на Apache 2.0. Передача осуществлена в рамках предпринятой бывшими разработчиками RethinkDB инициативы по передаче сообществу управления над проектом.
Когда компания, разрабатывающая СУБД RethinkDB, объявила о закрытии, группа, уже бывших, сотрудников при поддержки других членов сообщества организовали команду, целью которой стала полная передача проекта сообществу с изменением лицензии. Из анонса Cloud Native Computing Foundation мы видим, что ситуация наконец-то разрешилась — CNCF выкупили права на сорсы RethinkDB и передали проект в руки The Linux Foundation под ASLv2 лицензией.
RethinkDB живёт и здравствует! Разработка СУБД будет продолжаться без перебоев. Можно продолжать использовать Rethink в продакшене, обновления будут продолжать выходить. При поддержке Linux Foundation проект будет развиваться и дальше.
В последние месяцы сообщество показало свой интерес в плане поддержки проекта монетой. Теперь вы можете задонатить в поддержку проекта. Stripe так же согласился поддержать проект задонатив $25,000.
Немного про RethinkDB
RethinkDB — это open source NoSQL база данных (сорсы на гитхабе), располагающая встроенной системой уведомления об изменениях. Вместо запросов к базе на наличие изменений, вы можете «подписываться» на потоковые обновления, что устранит ненужные запросы к базе.
RethinkDB является безсхемным хранилищем JSON документов, но также поддерживает и некоторые особенности реляционных БД. RethinkDB также поддерживает кластеризацию, что делает её очень удобной в расширении. Вы можете настроить шардинг и копирование через встроенный веб-интерфейс. Последнии версия RethinkDB также включает в себя автоматический «fail-over» для кластеров с тремя и более серверами. (прим. переводчика: подразумевается возможность продолжения работы с БД в случае падения одного из серверов.)
Язык запросов в RethinkDB, который называется ReQL, нативно встраивается в код на том языке, на которым вы пишите своё приложение. Если, например, вы кодите на Python, то при написании запросов к БД будете использовать обычный для Python синтаксис. Каждый запрос составляется из функций, который разработчик собирает в цепочку, чтобы точно описать необходимую операцию.
И что теперь?
Команда и дальше продолжит опенсорсить софт, контент, кучу арта (за авторством замечательной @annieruygt) и документацию, которые были разработаны кор командой за последние 7 лет. Так же ведётся разговор с CNCF о возможности стать Inception проектом.
Новый релиз RethinkDB уже в работе: последние несколько месяцев волонтёры немало контрибьютили в проект. В ближайшие дни можно ожидать выхода RethinkDB 2.4. Новая версия включается в себя различные улучшения от сообщества, а также фичи разрабатываемые самой командой бывших ресинковцев. Так же выйдет RethinkDB 2.3.6 с фиксом важных багов.
Почему так долго?
После закрытия компании, проект был законсервирован. Просто форкнуть его и продолжит разработку под другим именем было невозможно из-за AGPL лицензии. CNCF разрешила конфликт выкупив все исходники.
Присоединяйтесь к сообществу RethinkDB
Если вы хотите участвовать в жизни сообщества, то существует много путей для этого:
- Почитайте о том как контрибьютить в RethinkDB.
- Присоединяйтесь к каналу #open-rethinkdb на канале RethinkDB в Slack.
- Кидайте пулреквесты и создавайте тикеты на GitHub.
- Подписывайтесь на @rethinkdb в Twitter.
Чтоб быть в курсе событий, почитайте заметки с последней встречи в Январе.
Интересные ссылки по теме:
- интересный пост от Bryan Cantrill (CTO Joyent). Немного размышлений на тему того, почему AGPL — это плохо.
- Над RethinkDB сгущаются тучи?
- Постпортем от Slava Akhmechet
P.S. я знаю, что в ру сегменте мало кто использует эту СУБД. Но для тех, кто, всё же, ждал и надеялся, новость будет приятной.
loststylus
Очень нравится проект, но не могу найти ничей опыт использования его под высокими нагрузками. Насколько все это хорошо масштабируется? У кого-нибудь есть история, которой можно поделиться? :)
Suvitruf
25 млн. пользователей, 25 нод.
unsafePtr
Об этой бд так же узнал из новости на хабре неделю назад. Честно говоря давно хочется попробовать документно-ориентированную бд, но всё не попадается хороший случай. Больше всего привлекает именно язык ReQl, особенно после того как глянул repository. По больше бы статей об этой бд, может кто в продакшн брал?
Suvitruf
Мы для онлайн игры используем. Как раз ReQL — это одна из особенностей, которая нам понравилась. Как минимум в nodejs драйвере. В java драйвере слишком много избыточного кода писать приходится. С другой стороны, если повезёт, они в версии 2.4 может завезут нормальный мапинг объектов, что уменьшит размера кода по работе с базой раза в 1.5-2.
Вторая особенность — легкость в настройке, поднять отказоустойчивый кластер дело пары минут. Ну и в третьих — это, конечно же, changefeeds.
Уже года два используем. Если есть какие-то конкретные вопросы, то я мог бы их осветить в отдельной статье.
BekoBou
Зато хотя бы узнали о существования такой. Я для себя отметил при первом взгляде, что RethinkDB очень похожа на MongoDB в моих задачах. Возможно даже попробую сделать пробный проект — очень заинтересовал механизм уведомлений.
Optik
Её ценность как раз в тех вещах, что отличают её от других документо ориентированных баз. [mode type=«troll»]В отличие от монги она еще не разваливается в кластере при дуновении ветра[/mode]
cbone
А Монга разваливается? Есть ссылки почитать про печальный опыт использования кластера Монги?
Optik
Опыт различных коллег по цеху и о 2ой версии. Поэтому и пометил как тролль-мод.
Почитать можно Кайла, который специализируется на тестировании распределенных систем. Как раз появились результаты свежего теста монги. В архив есть еще пара о ней же и пара ресинковских.
farwayer
Отличная новость! А может знаете, что с Horizon'ом будет?
Suvitruf
Michael посоветовал следить за блогом Horizon, в ближайшие недели ожидаются обновления.
Suvitruf
Ну и кстати, Horizon же и так под MIT лицензией. Или вы больше о том, как будешь дальше разработка вестись?
farwayer
Если проектом никто не будет заниматься — то какая там лицензия уже не сильно важно.
Suvitruf
Michael сегодня в слаке ответил, что Horizon так же присоединится к linux foundation и останется под MIT лицензий.
eshimischi
Отлично, использую эту СУБД в одном из своих проектов в тандеме с GraphQL, Apollostack. Даже подумал, что можно внести донат по такому случаю :)
A1ex
Имел негативный опыт работы с RethinkDB, в том числе и с «отказоустойчивостью», которая легко настраивается, но по факту не работает.
Под «высокой» (видимо для Rethink это так) нагрузкой сервера часто свопаются и зависают, порой время ответа на простой запрос может варьироваться от 10 мс до нескольких минут.
Имеем 5 мощных серверов в кластере, но и это не спасает от падений.
Стоит добавить, что тот же PostgreSQL на одном среднем сервере вытянет ту же самую нагрузку с запасом.
Не понимаю куда смотрят разработчики, заявляя, что их решение Production-ready: нескольким критичным багам больше полугода.
Suvitruf
А можно узнать конфигурацию и какие у вас нагрузки? Мы с такими проблема не сталкивались, но у нас и не highload.
Про отказоустойчивостью же, в кластере у нас всего 3 ноды (пока хватает), были случаи, когда из-за проблем в датацентре какие-то ноды выходили из строя, Rethink всё сам разруливал.
A1ex
Нагрузки скромные: порядка 10-15 тысяч операций на запись в сутки. По чтению не могу назвать конкретных цифр, но выборки не сложные — все по индексам. Проблемы начали возникать с увеличением нагрузки на приложение, сначала сервера «зависали» несколько раз в день, а на данный момент в пиковое время сервера падают каждый 30 минут.
Обычно такое падение выглядит как 20+ Гб выделенной виртуальной памяти (причем 10-15 Гб выделяется за секунды) и полностью заполненный своп. Часто процессы серверов убивает ядро.
У нас 5 серверов — 16GB и 4-ядерный Xenon. Мы пробовали разные конфигурации серверов, 3 шарды по 1 реплике, 5 шард по 4 реплики, сейчас остановились на 5/2.
Несколько слов об отказоустойчивости: она все таки работает, но непозволительно медленно — при падении одного из серверов кластера восстановление работоспособности может занять 10 минут, в течении которых сервера не отвечают ничего. Хотя казалось бы — реплики есть, и можно просто переключить все запросы на них с минимальным простоем.
Suvitruf
Хм, у нас, как я уже сказал, в кластере 3 ноды (3 сервера). На каждом сервере по 4-6 наших сервиса, которые работают с Ресинком. Максимальные нагрузки, которые я видел на ноде — это тысячи операций в секунду. Да и то это по большей части ограничено с нашей стороны, особенно в java, где драйвер синхронный (там в пуле в районе 8 соединений на хост). И за 2 года описываемых проблем не наблюдал. Может у вас что-то не так настроено?
Кстати, а ноды в одной приватной сети? Я точно знаю, что там большие проблемы, если ноды в кластере в разных датацентрах находятся.
A1ex
Перепробовали множество различных конфигураций, переписывали запросы, но к сожалению это ни к чему не привело. Возможно мы используем какой-то специфический набор фич, который приводит к падениями. Но стоит добавить, что мы не единственные, кто наступал на такие грабли: как я писал выше, есть несколько критичных багов описанных в баг-трекере.
Suvitruf
Да, печально, что баги столько времени висят. Но, по своему опыту знаем, даже крупные компании забивают на баги, которые тяжело воспроизвести.
К примеру, у нас (и ещё парочки людей, судя по форуму) с Unity есть проблема на системах с Dx 9/11. Разработчики сказали, что в курсе неё, но не фиксят, так как не знают, как со 100% вероятностью этот баг воспроизвести.
JerryGreen
Это лучшее, что могло произойти с rethinkdb. Наверное даже лучше, чем если бы изначальная команда просто продолжала работать над ним. Шикардос!
Для web app, если планируете использовать вебсокеты, рекомендую использовать rethinkdb, много лишнего кода не напишите, много костылей не сделаете :)
Suvitruf
Кому тему интересна, советую ещё почитать недавний пост на Hacker News. A1ex, вам, вероятно, интересно будет. Там как раз Michael некоторые вопросы по Rethink'у разъясняет.