Проект RethinkDB, развивающий документо-ориентированную СУБД, обеспечивающую (https://www.opennet.me/opennews/art.shtml?num=42072) хранение данных в формате JSON, анонсировал (http://horizon.io/blog/horizon-launch/) первый официальный релиз платформы Horizon (http://horizon.io/), в рамках которой развивается бэкенд, предоставляющий разработчикам средства для создания и масштабирования web-приложений, обменивающихся данными в реальном режиме времени. По своей сути Horizon может рассматриваться как открытая и запускаемая на своих мощностях альтернатива продвигаемого (https://firebase.googleblog.com/2016/05/firebase-expands-to-...) компанией Google проприетарного сервиса Firebase. Код Horizon написан на языке JavaScript и распространяется (https://github.com/rethinkdb/horizon) под лицензией MIT.
Horizon включает в себя:
- Сервер (https://github.com/rethinkdb/horizon/blob/next/server) для организации работы бэкенда, построенный на базе фреймворка Node.js, технологии WebSocket и СУБД RethinkDB, обеспечивающий построенное хранение данных, аутентификацию пользователей, проверку прав доступа и перенаправление потоков между приложениями в режиме реального времени.
- Клиентская JavaScript-библиотека (https://github.com/rethinkdb/horizon/blob/next/client), которую можно использовать на стороне выполняемого в браузере web-приложения (фронтэнда) для сохранения JSON-документов в БД, отправки запросов и подписки на получение обновлений информации;
- Утилита командной стоки (https://github.com/rethinkdb/horizon/blob/next/cli) "hz" для генерации шаблонов типовых проектов, запуска локального сервера Horizon и размещение приложений в облаке.
Первый выпуск предоставляет следующие API:
- Subscribe - потоковый API для построения realtime-приложений, работающих в браузере без необходимости написания серверного кода;
- Auth - API аутентификации, поддерживающий типовых провайдеров аутентификации, включая Facebook, Twitter, Google и GitHub
- Identity - API для управления учётными записями пользователей;
- Permissions - модель безопасности, позволяющая разработчику ограничить доступ к данным;
В будущих выпусках планируется появление:
- Session - управления сеансами;
- Geolocation - API для создания приложений, манипулирующих данными о местоположении пользователя;
- Presence - API для определения присутствия пользователя в online и информирования об этом других пользователей;
- Plugins - система подключения плагинов, расширяющих функциональность Horizon, например, средства для создания новых сервисов;
- Backend - API и протокол для интеграции написанных с использованием библиотеки Horizon web-приложений со сторонними реализациями бэкендов.
- Встроенный web-интерфейс для интерактивного просмотра данных на бэкенде;
- Улучшенные средства управления соединениями и восстановления после разрыва связи;
- Возможность создания собственных команд Horizon с использованием языка запросов ReQL и JavaScript;
- Поддержка загрузки файлов от клиента;
- Аутентификация по паролю (в дополнение к OAuth-провайдерам);
- Встроенная поддержка извлечения данных использованием языка запросов GraphQL (https://www.opennet.me/opennews/art.shtml?num=42964).URL: http://horizon.io/blog/horizon-launch/
Новость: http://www.opennet.me/opennews/art.shtml?num=44464
Утилита командной строки hz, мне уже нравится этот проект
Ну, оставляя за скобками ублюдочность самой идеи веб-приложений и хранения данных "у дяди" - мысль здравая. 9/10 веб-приложений на серверной стороне совершенно примитивны и легко укладываются в стандартные схемы - святое дело эти стандартные схемы формализовать и упростить работу с ними.
Довелось тыкать несколько веб-апликух на Firebase. Работают на удивление хорошо.> самой идеи веб-приложений и хранения данных "у дяди"
Я полностью согласен с этим утверждением, но есть и приложения, которые без сети бессмысленны, например, что-нибудь для совместной работы над чем-нибудь.
Одна из основных вещей, которые мне не нравятся в веб-приложениях - простота обновления, как ни странно. По факту это означает, что невозможно сказать "ребята, вы сделали урода и я останусь на предыдущей, рабочей версии" - а, к примеру, gmail бессмысленно портили не раз и не два. Локально установленный софт в этом здорово помогает, даже если без сети он работать не может. Хотя, конечно, та же MS с этим "недостатком" локального софта успешно борется, к примеру, ломая не обнововшийся скайп.
> Одна из основных вещей, которые мне не нравятся в веб-приложениях - простота
> обновления, как ни странно. По факту это означает, что невозможно сказать
> "ребята, вы сделали урода и я останусь на предыдущей, рабочей версии"
> - а, к примеру, gmail бессмысленно портили не раз и не
> два. Локально установленный софт в этом здорово помогает, даже если без
> сети он работать не может. Хотя, конечно, та же MS с
> этим "недостатком" локального софта успешно борется, к примеру, ломая не обнововшийся
> скайп.Скажите на милость, а в СПО подобных фактов никогда не было, да? А недавно приснопамятный SynkThing, ломавшийся по факту трижды? Ну а, кстати, что нащет ведра Линя? Которое разламывается раз в полгода?
Упускаешь важный момент: возможно остаться на старой версии. Или даже форкнуть.
> Одна из основных вещей, которые мне не нравятся в веб-приложениях - простота
> обновления, как ни странно. По факту это означает, что невозможно сказать
> "ребята, вы сделали урода и я останусь на предыдущей, рабочей версии"
> - а, к примеру, gmail бессмысленно портили не раз и не
> два. Локально установленный софт в этом здорово помогает, даже если без
> сети он работать не может. Хотя, конечно, та же MS с
> этим "недостатком" локального софта успешно борется, к примеру, ломая не обнововшийся
> скайп.Поэтому я адепт self-hosted решений.
// #3
Отличная новость и поддержка GraphQL из коробки очень радует. Вскоре думаю будет популярна аббревиатура: RRGH (React или React Native, Relay, GraphQL, Horizon), как когда то LAMP.
А кто-нибудь может сказать мне, область применения RethinkDB отличается от MongoDB?
С RethinkDB можно получать изменения в режиме реального времени.
В MongoDB есть полнотесктовый поиск.
В остальном отличаются не сильно.
А как же скорости? :O
для "скорости" - немного других видов ДБ нужны )
удивительно но в целом - оно даже работает. но им надо пока секьюрити пилить. то что впилили пароль(наконец-то!)хорошо, но надо 2/3-факторной авторизации поддержку впиливать, тк во всех "серьезных" БД-применениях - оное принципиально.