Pull to refresh

Comments 14

Horizon — это продукт содержащий в себе NoSQL базу данных RethinkDB
Ну, не совсем так. Он работает с RethinkDB, да, но не завязан на него. Более того, Слава в своё время говорил, что в будущем планируется сделать поддержку других баз. Главное, чтобы они поддерживали функционал подписок/пушей.

Умеет рассылать по WebSoket уведомления о изменениях (рассылку можно фильтровать сразу на уровне БД)
Они всё больше развивают этот функционал, но и там до сих пор есть свои проблемы.

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

Умеет Join-ы
Только они довольно медленные)

Мощный язык запросов
И прекрасные драйвера, кстати. Под node.js работать одно удовольствие даже без ORM. В Java, правда, есть свои проблемы: часто приходится писать много лишнего кода (к примеру, заворачивать объекты в HashMap'ы для передачи в запросы), но самая большая проблема — нет асинхронности. На данный момент мы это решили за счёт использование пула соединений. Но по плану у них на осень переписывание Java драйвера, чтоб он умел в асинхронность.

Имеет встроенный web-интерфейс для мониторинга и быстрого доступа к данным
Довольно удобная штуку. Плюс многие системные настройки прям там запросами можно изменить (авторизацию, репликацию и т.п.).

У меня лично был доступ к Horizon на этапе закрытого тестирования. Тогда довольно перспективным показалось. Предполагаю, что в релизе они многие недочёты подправили.
Спасибо, я только начал пользоваться Horizen / RethinkDB, поэтому мне пока сложно определить границы и все возможности продукта. Но определенно буду использовать для быстрого прототипирования или мелких апп.
Скажите, у вас ведь есть уже что то в продакшине, какую нагрузку держит? Всем довольны или потом пожалели что взяли? Думаю, читателям и мне интересно будет узнать о реальных проектах с использованием этой БД.
Всем довольны или потом пожалели что взяли?
О RethinkDB не пожалели. Раньше, к примеру, мы использовали Riak, вот о нём пожалели. Сейчас, правда, используем всё ещё Riak, но только как бэкенд для ejabberd.

Скажите, у вас ведь есть уже что то в продакшине, какую нагрузку держит?
RethinkDB используем для онлайн игры. Все игровые данные в нём храним. У нас пока только софтланч, поэтому особо больших нагрузок нет. Но десятки тысяч чтений/записей оно спокойно держит. Не знаю, много это или нет. Да и цифры то эти ни о чём в целом не говорят. Всё зависит от того, как вы приготовите запросы: будете выполнять их на клиенте (при этом тягая данные из бд на клиент) или же будете правильно составлять ReQL запросы, чтоб они выполнялись на сервере и возвращали только ответ.
Да, цифры действительно не о чем не говорят. Необходимы параметры железа и хотя бы сравнительные тесты. Но все равно спасибо за ответ.
Посмотрел на сайте RethinkDB, в блоге есть недавний отчет о тестировании производительности, возможно из него удастся понятно что к чему.
Вот только версия RethinkDB в тесте используется годичной давности =/
Интересно, а как защищаться от DDOS-а, заставляя базу данных делать кучу медленных тяжелых запросов? Удобный API для доступа по сути уже есть…
Хороший вопрос. Поискав Github issues и Api RethinkDB — ничего про защиту от DDoS, к сожалению, не нашел. Было одно упоминание, мол неплохо было бы добавить в правила rateLimit, то есть максимальное количество данного типа запросов которое база будет обрабатывать за единицу времени, но видимо осталось на уровне «хотелки».

Как же вовремя, спасибо! Вчера поставил, разбираюсь.

Статья прошлогодняя и комментарий тоже, сейчас уже актуальна новая версия RethinkDB, поэтому советую взглянуть на бенчмарки (и тут развернуто). Конечно я не стараюсь вас обнадежить — необходимо с умом подходить к выбору БД. Но есть комментарий разработчиков, что БД в версии 2.1.5 линейно масштабируется на Amazon EC2. Так что кто знает. Можете рассказать о планах применения RethinkDB, и возможно Suvitruf сможет вам ответить — подходит или нет, исходя из своего опыта эксплуатации этой БД.

Функционал Хабра, примерно: посты, комменты, лайки, уведомления, личка.

Я бы посоветовал погуглить на тему «RethinkDB benchmark», «RethinkDB perfomance», «RethinkDB vs MongoDB perfomance», заглянуть сюда.
Из нескольких источников, где тестировалась версия 2.0.X было видно, что производительность уступает MongoDB и на порядки, но сейчас актуальна версия 2.3.5. Какие улучшения производительности были достигнуты за это время — не известно.
Можно не гадать, а запилить небольшой тест для чтения и инсертов, аналогичный этому и потом сделать пост на эту тему. Было бы здорово.
Ну и стоит понимать, что иногда в угоду специфичным фичам (например возможности подписаться на изменения или важна простота старта, или язык запросов единственный понятный вам) можно пожертвовать производительностью, а иногда проект никогда не вырастит до огромной посещаемости, поэтому возможно оно и не понадобится. Каждый случай уникален в каком то смысле.
Тоже приглядываюсь к Horizon, но пока не понятно в чем его преимущества перед тем же ParseServer, который считай до недавнего момента был вообще проприетарным. Плюс считай под нагрузками проверен более или менее. Админка и SDK под кучу библиотек в комплекте тоже.

Может есть кто юзал и то и другое?
Cтек более монолитный (база и веб-сервер) от одной команды. Умеет нотификейшены сразу из базы в веб-сокет (сделано на уровне базы). Да и оно больше для SPA и Mobile HTML5 приложений, чем как бэкэнд для Native. Если для Native, то RethinkDB выглядит более логичным, Horizon тут будет лишним.
Но честно, не готов советовать. Вверху есть ребята которые работают с RethinkDB, можете поспрашивать.
Sign up to leave a comment.

Articles