Доступен (http://rethinkdb.com/blog/2.0-release/) выпуск документо-ориентированной СУБД RethinkDB 2.0 (http://rethinkdb.com/), нацеленной на хранение данных в формате JSON и предоставляющей специализированный язык запросов ReQL. Выпуск RethinkDB 2.0 позиционируется как первый релиз, пригодный для промышленного внедрения. Код СУБД написан на языке С++ и распространяется (https://github.com/rethinkdb/rethinkdb/) под лицензией AGPLv3. Библиотеки для работы с RethinkDB официально предоставляются для JavaScript, Python и Ruby, неофициально сообществом развиваются (http://rethinkdb.com/docs/install-drivers/) драйверы для многих других языков, включая C++, PHP, Perl и Go.Ключевым отличием RethinkDB от других СУБД является реализация обратной модели доставки результатов запроса. Если традиционная модель "запрос-ответ" требует для отслеживания изменений периодической повторной отправки запросов, то RethinkDB позволяет подписаться на изменения (push-архитектура), т.е. даёт возможность отправить запрос один раз и в live-режиме непрерывно получать информацию об изменении связанных с ним результатов. Подобный подход информирования приложения об изменениях позволяет существенно упростить архитектуру приложений, обрабатывающих данные в режиме реального времени, и уйти от использования внешних очередей сообщений.
Второй важной особенностью RethinkDB является язык запросов ReQL, который интегрируется в объектную модель различных языков программирования. При использовании ReQL запросы формируются (http://www.rethinkdb.com/docs/quickstart/) в форме обращения к объекту, например, для отслеживания изменений в таблице, в который поле "db" равно "prod", можно выполнить "<font color="#461b7e">r.db('rethinkdb').table('stats').filter({ 'db': 'prod' }).changes().run(conn)</font>", а для выборки записей, в которых значение поля "episodes" больше 100 - "<font color="#461b7e">r.table('tv_shows').filter(r.row('episodes').gt(100))</font>". ReQL поддерживает создание таблиц (каждая запись может иметь свою структуру), группировку результатов, агрегатные функции, возможность (http://www.rethinkdb.com/api/javascript/js/) использования в запросах кода на JavaScript и регулярных выражений.
Для обработки JavaScript-функций используется движок V8.
Некоторые другие (http://rob.conery.io/2015/04/17/rethinkdb-2-0-is-amazing/) особенности (http://rethinkdb.com/docs/comparison-tables/) RethinkDB:
- Возможность управления работой СУБД, в том числе анализ статистики и перенос данных между узлами в кластере, через встроенный Web- или CLI-интерфейс.
<center><a href="http://rethinkdb.com/assets/images/landing/rethinkdb-ui_... src="http://www.opennet.dev/opennews/pics_base/0_1429559972.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>
- API для монтиринга за работой СУБД;
- Удобная система настройки репликации на другой сервер или шардинга данных в кластере. Поддержка как асинхронной, так и синхронной репликации;
- Механизм кэширования запросов с произвольной настройкой размера кэша;- Возможность подсоединения клиента к любому узлу кластера. Все запросы будут автоматически маршрутизированы на нужные узлы. Если запросом охвачены данные на нескольких узлах, то запрос будет разделён на подзапросы к разным серверам, которые будут выполнены параллельно, а затем агрегированы для получения сводного результата;
- Возможность использования механизма map-reduce (http://rethinkdb.com/docs/map-reduce/);
- Размещение данных в B-Tree и хранение с использованием лог-подобных структур, созданных с оглядкой на архитектуру Btrfs. Наличие выполняемого в фоне инкрементального сборщика мусора и упаковщика данных. Гарантирование непротиворечивости данных после сбоя;- Гибкая система индексов с поддержкой первичных и вторичных ключей, геопространственных индексов, возможностью индексации по произвольным выражениям. Каждый запрос может использовать только один индекс.
URL: http://rethinkdb.com/blog/2.0-release/
Новость: http://www.opennet.dev/opennews/art.shtml?num=42072
Убийца MongoDB. Как-то необычайно по описанию хорош, в чём подвох?
Из минусов:
Пока-что нет встроенного полнотекстового индекса. Можно использовать внешний, например Elasticsearch.
Изменения структуры шардинга производится вручную. Автоматическую систему (на базе Raft) добавят в одном из следующих релизов.
Подсистема сохранения данных по описанию очень даже неплоха. Но пока нет никаких сравнений с WiredTiger из MongoDB 3.0.
Ещё добавлю:
разбивка данных по шардам производится по самому ключу (range, например А-К, Л-Т, У-Я) вместо хеша ключа (consistent hash) что имеет как плюсы, так и минусы (потребует перебалансировки) - планируют изменить.
>Убийца MongoDB. Как-то необычайно по описанию хорош, в чём подвох?Ловись рыбка: большая и маленькая...
Как всегда, - в соответствии требованиям ACID
Ну так чуть ли не весь поинт NoSQL в своё время был, что ACID нужен далеко не всегда. и, опять же, у монги с ним тоже не фонтан.
Это все булшит и маркетинг.
Мистер франкинштейн отдыхает. Какую техническую проблему решает данная БД лучше других БД я так и не понял.
Хм, русские основали что-ли?Slava Akhmechet
Founder at RethinkDBMichael Glukhovsky
Founder at RethinkDB
> Хм, русские основали что-ли?Таки да
Но не в Российской Федерации
Шишкин тоже не в РФ работает, только вот образование в МГУ получил.
Не жабе, в отличие от многих noSQL, которые на ней - годно.
Не на жабе, в смысле.
Ну и как, лучше чем Pg 9.4 ищет по json?
MongoDB вроде слилась.
Не несите чушь про слив. В pg jsonb дополнительный тип и не кто в здравом уме не будет его пихать по все дыры. С монго совсем друга история. Поражает дурость людская и попытки забивать гвозди микроскопом. А можно я буду забивать гвозди микроскопом? Можно разрешаю, но не рекомендую.
Таки не несите чушь про Постгрес. В постгресе добрая часть всех возможностей - «дополнительные». Пользуйтесь MySQL ISAM, если дополнительные возможности не нужны )))Лезут тут всякие, панимашь, гвозди забивать без молотка. Молоток им, видите ли, слишком круто для забивания гвоздей.
> Не несите чушь про слив. В pg jsonb дополнительный тип и не
> кто в здравом уме не будет его пихать по все дыры.
> С монго совсем друга история. Поражает дурость людская и попытки забивать
> гвозди микроскопом. А можно я буду забивать гвозди микроскопом? Можно разрешаю,
> но не рекомендую.)))) Там всё -- "дополнительный тип". Чем и ценна.
> созданных с оглядкой на архитектуру Btrfs.Как видим, у Мэйсона есть чем поживиться :)
Юзер285, хватит уже к чужой славе примазываться. Ну полно же.
Шикарно, у них даже репа к центосу есть
Что такое "API для монтиринга" ?
нужна база которая будет автоматом раскидывать ключи по серверам, перебалансировать ключи при добавлении/удалении серверов, поддерживать транзакционное изменение ключей на нескольких серверах - вот что нужно, пока это можно сделать только на postgres ручками
> транзакционное изменение ключей на нескольких серверахКак вы это делаете на Postgres? двухфазный коммит? это ведь всё равно не надёжно.
Впрочем, если обеспечить тепличные условия, наверное работает.
PostgreXL
Сами используете, или слухи?Если сами используете, то поделитесь опытом/наблюдениями, пожалуйста. Очень любопытно.
> Ключевым отличием RethinkDB от других СУБДв MS SQL есть Query Notifications. Наверное имелось в ввиду "от других бесплатных СУБД"
как бы намекает что не только в MS http://www.postgresql.org/docs/9.0/static/sql-notify.html
>> Ключевым отличием RethinkDB от других СУБД
> в MS SQL есть Query Notifications. Наверное имелось в ввиду "от других
> бесплатных СУБД"Как любят прибежать и рассказать что у них продукт тоже такое умеет и намекнуть что их конкуренты какаха. MS то платит хотя бы или вы за бесплатно пиарите?
Вы кажетесь расстроенным. Обидно наверное что революционной фичей всякие проприетарщики пользуются уже давно.
> Вы кажетесь расстроенным. Обидно наверное что революционной фичей всякие проприетарщики
> пользуются уже давно.Вернее, не пользуются ))) В силу того, что практически подобное оказывается невостребованным совершенно.
Тупорылый далбаеб, что ты несеш
В любой СУБД, в которой есть процедурные расширения, сделать аналог Наблюдателя не составляет труда. Но зачем это нужно? Это создаёт совершенно нерациональную инфраструктуру, которая банально 99% времени просто простаивает. Поэтому ни в одной "взрослой" СУБД подобная функциональность не стала востребованной, хотя в разные годы и предлагалась довольно назойливо.
интересная штука на самом деле. с простым и логичным применением :=)nested обтектные поверх сеансового/событийного - смотрится колоритно. надо еще нативных ЯП поддержку расширять. я бы забрал фортрана и хаскеля и мб эрангда, наверное. про логику(процедуры)в теле запроса - потенциально головная боль для развивающих, но идея свежая =)