Дата премьеры системы: | 2015/04/20 |
Дата последнего релиза: | 2016 |
Технологии: | СУБД |
Содержание |
RethinkDB - документо-ориентированная СУБД, ориентирована на хранение данных в формате JSON и предоставляющая специализированный язык запросов ReQL. Продукт создается и разрабатывается сообществом OpenSource.
2015
RethinkDB 2.0
20 апреля 2015 года стало известно о выпуске релиза СУБД RethinkDB 2.0[1].
Этот релиз публикуется как первый, пригодный для промышленного внедрения. Код СУБД написан на языке C++ и распространяется под лицензией AGPLv3. Библиотеки для работы с RethinkDB официально предоставляются для JavaScript, Python и Ruby, неофициально сообщество развивает драйверы для других языков, включая C++, PHP, Perl и Go.
Основное отличие RethinkDB от других СУБД - реализация обратной модели доставки результатов запроса. В традиционной модели "запрос-ответ" для отслеживания изменений требуется периодическая повторная отправка запросов. RethinkDB позволяет подписаться на изменения (push-архитектура), и тем самым даёт возможность отправить запрос один раз и в live-режиме непрерывно получать информацию об изменениях, связанных с этим запросом результатов. Подобный подход информирования приложения об изменениях помогает упростить архитектуру приложений, обрабатывающих данные в режиме реального времени и уйти от использования внешних очередей сообщений.
Еще одна особенность RethinkDB - язык запросов ReQL, он интегрируется в объектную модель различных языков программирования. При использовании ReQL запросы формируются в форме обращения к объекту, например, для отслеживания изменений в таблице, в который поле "db" равно "prod", можно выполнить "r.db('rethinkdb').table('stats').filter({ 'db': 'prod' }).changes().run(conn)", а для выборки записей, в которых значение поля "episodes" больше 100 - "r.table('tv_shows').filter(r.row('episodes').gt(100))". ReQL поддерживает создание таблиц (каждая запись может иметь свою структуру), группировку результатов, агрегатные функции, возможность использования в запросах кода на JavaScript и регулярных выражений. Для обработки JavaScript-функций используется движок V8.
Скриншот окна управления СУБД, 2015
Некоторые отличия
- Возможность управления работой СУБД, в том числе анализ статистики и перенос данных между узлами в кластере, через встроенный веб- или CLI-интерфейс.
- API для монтиринга за работой СУБД;
- Удобная система настройки репликации на другой сервер или шардинга данных в кластере. Поддержка как асинхронной, так и синхронной репликации;
- Механизм кэширования запросов с произвольной настройкой размера кэша;
- Возможность подсоединения клиента к любому узлу кластера. Все запросы будут автоматически маршрутизированы на нужные узлы. Если запросом охвачены данные на нескольких узлах, то запрос будет разделён на подзапросы к разным серверам, которые будут выполнены параллельно, а затем агрегированы для получения сводного результата;
- Использование механизма map-reduce;
- Размещение данных в B-Tree и хранение с использованием лог-подобных структур, созданных с оглядкой на архитектуру Btrfs. Наличие выполняемого в фоне инкрементального сборщика мусора и упаковщика данных. Гарантирование непротиворечивости данных после сбоя;
- Гибкая система индексов с поддержкой первичных и вторичных ключей, геопространственных индексов, возможностью индексации по произвольным выражениям. Каждый запрос может использовать только один индекс.
Представление СУБД RethinkDB 2.0, 2015
Официальный сайт продукта - rethinkdb.com
Вышел релиз версии RethinkDB 2.1
11 августа 2015 года стал доступен релиз документо-ориентированной СУБД RethinkDB 2.1[2].
Представление RethinkDB 2.1, 2015
Версия 2.1 примечательна средствами обеспечения высокой доступности и значительной переработкой инструментов кластеризации. Среди добавленных возможностей:
- режим автоматической замены сбойных узлов в кластере,
- поддержка добавления и удаления узлов без остановки работы кластера,
- Asynchronous API для выполнения запросов в асинхронном режиме (клиентская поддержка реализована через EventMachine в Ruby и Twisted, Tornado и через asyncio в Python),
- поддержка соединения клиентов с использованием шифрованного канала связи,
- математические команды в ReQL (floor, ceil и round).
2016
RethinkDB 2.3
Весной 2016 года стал доступен релиз документо-ориентированной СУБД RethinkDB 2.3, обеспечивающей хранение данных в формате JSON, предоставляющей специализированный язык запросов ReQL и реализующей модель подписки на изменения (возможность отправить запрос один раз и получать информацию об изменении результатов). Подробнее о возможностях RethinkDB можно прочитать в анонсе прошлого выпуска. Код СУБД написан на языке С++ и распространяется под лицензией AGPLv3.
Ключевые улучшения:
- Встроенная поддержка TLS для шифрования как клиентских соединений с БД так и соединений между серверами в кластере. Кроме того, обеспечена возможность применения HTTPS для работы со встроенным управляющим web-интерфейсом;
- Система разделения привилегий, позволяющая создавать отдельных пользователей и наделять их определёнными полномочиями доступа к данным. Права доступа задаются на уровнях кластера, БД и отдельных таблиц и регулируют возможность совершения операций добавления, изменения, удаления и чтения документов, а также доступа к изменению настроек и установке сетевых соединений;
- В язык ReQL добавлена новая команда "fold", которая позволяет выполнить операции отсеивания диапазона значений в упорядоченных потоках данных. В отличие от команды "reduce" операции "fold" выполняются над упорядоченными потоками. Опционально поддерживается возможность присоединения к выводу массива элементов, заданного через необязательный параметр "emit";
- Добавлена поддержка работы на платформе Windows.
Примечания
Подрядчики-лидеры по количеству проектов
SAP CIS (САП СНГ) (38)
Softline (Софтлайн) (35)
РДТЕХ (33)
BeringPro (БерингПойнт) ранее BearingPoint Russia (28)
ФОРС - Центр разработки (25)
Другие (746)
Сапиенс солюшнс (Sapiens solutions) (7)
BeringPro (БерингПойнт) ранее BearingPoint Russia (3)
Navicon (Навикон) (3)
Инфосистемы Джет (2)
Крок (2)
Другие (35)
VK Tech (ранее VK Цифровые технологии, ВК Цифровые технологии и Mail.ru Цифровые технологии) (1)
Айтеко (Ай-Теко, iTeco) (1)
Астерос (1)
Атомдата (Atomdata) (1)
Группа Борлас (Borlas) (1)
Другие (20)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
Oracle (44, 179)
SAP SE (6, 178)
Microsoft (23, 142)
PostgreSQL Global Development Group (14, 130)
Постгрес профессиональный (ППГ, Postgres Professional) (6, 41)
Другие (266, 253)
Microsoft (3, 11)
SAP SE (3, 11)
PostgreSQL Global Development Group (3, 10)
Oracle (2, 4)
Постгрес профессиональный (ППГ, Postgres Professional) (2, 3)
Другие (10, 13)
PostgreSQL Global Development Group (4, 9)
Постгрес профессиональный (ППГ, Postgres Professional) (2, 6)
VK Tech (ранее VK Цифровые технологии, ВК Цифровые технологии и Mail.ru Цифровые технологии) (2, 3)
Arenadata (Аренадата Софтвер) (3, 2)
Oracle (2, 2)
Другие (9, 9)
PostgreSQL Global Development Group (3, 13)
Постгрес профессиональный (ППГ, Postgres Professional) (1, 6)
Arenadata (Аренадата Софтвер) (3, 5)
Apache Software Foundation (ASF) (3, 4)
Тантор Лабс (Tantor Labs) (2, 3)
Другие (8, 10)
PostgreSQL Global Development Group (4, 12)
Arenadata (Аренадата Софтвер) (3, 7)
VMware (2, 7)
Постгрес профессиональный (ППГ, Postgres Professional) (2, 6)
Диасофт (Diasoft) (1, 3)
Другие (7, 8)
Распределение систем по количеству проектов, не включая партнерские решения
Oracle Database - 106
Microsoft SQL Server - 104
SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 103
PostgreSQL СУБД - 81
SAP HANA (High Performance Analytic Appliance) - 72
Другие 383
Microsoft SQL Server - 9
SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 8
PostgreSQL СУБД - 7
Oracle Database - 3
SAP HANA (High Performance Analytic Appliance) - 3
Другие 21
Postgres Pro СУБД - 5
ADB - Arenadata DB - 2
PostgreSQL СУБД - 2
Tarantool Платформа in‑memory вычислений - 2
Oracle Database - 2
Другие 13
Postgres Pro СУБД - 6
PostgreSQL СУБД - 4
Tantor СУБД - 3
ADB - Arenadata DB - 3
ClickHouse - система управления базами данных (СУБД) - 2
Другие 10
ADB - Arenadata DB - 6
PostgreSQL СУБД - 5
Postgres Pro СУБД - 4
Diasoft Digital Q.Database - 3
ADH - Arenadata Hadoop - 2
Другие 10