Дата премьеры системы: | 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)
Другие (751)
Efsol. Системная интеграция. Консалтинг (1)
Монитор Электрик (1)
IBS (1)
РДТЕХ (1)
Ред Софт (Red Soft) (1)
Другие (20)
Arenadata (Аренадата Софтвер) (4)
Тантор Лабс (Tantor Labs) (3)
ФОРС - Центр разработки (2)
Axenix (ранее Аксенчер Россия) Аксеникс (1)
Ред Софт (Red Soft) (1)
Другие (17)
Arenadata (Аренадата Софтвер) (7)
TData (ТДата) (5)
Сбербанк-Технологии (СберТех) (2)
GlowByte, ГлоуБайт (ранее Glowbyte Consulting, ГлоуБайт Консалтинг) (2)
Диасофт (Diasoft) (2)
Другие (19)
Другие (1)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
Oracle (44, 179)
SAP SE (6, 178)
Microsoft (23, 142)
PostgreSQL Global Development Group (14, 134)
Постгрес профессиональный (ППГ, Postgres Professional) (6, 43)
Другие (267, 262)
PostgreSQL Global Development Group (4, 9)
Постгрес профессиональный (ППГ, Postgres Professional) (2, 6)
VK Tech (ранее VK Цифровые технологии, ВК Цифровые технологии и Mail.ru Цифровые технологии) (2, 3)
Arenadata (Аренадата Софтвер) (3, 2)
Apache Software Foundation (ASF) (2, 2)
Другие (9, 9)
PostgreSQL Global Development Group (3, 13)
Постгрес профессиональный (ППГ, Postgres Professional) (1, 6)
Apache Software Foundation (ASF) (3, 4)
Arenadata (Аренадата Софтвер) (3, 4)
Тантор Лабс (Tantor Labs) (2, 3)
Другие (8, 10)
PostgreSQL Global Development Group (4, 13)
Arenadata (Аренадата Софтвер) (3, 9)
VMware (2, 9)
Постгрес профессиональный (ППГ, Postgres Professional) (2, 6)
TData (ТДата) (2, 4)
Другие (7, 12)
Распределение базовых систем по количеству проектов, включая партнерские решения (проекты, партнерские проекты)
Oracle Database - 143 (106, 37)
Microsoft SQL Server - 135 (104, 31)
PostgreSQL СУБД - 134 (83, 51)
SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 103 (103, 0)
SAP HANA (High Performance Analytic Appliance) - 76 (72, 4)
Другие 77
PostgreSQL СУБД - 9 (2, 7)
Oracle Database - 3 (2, 1)
Tarantool Платформа in‑memory вычислений - 3 (2, 1)
VMware Tanzu Greenplum - 2 (0, 2)
SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 1 (1, 0)
Другие -5
PostgreSQL СУБД - 13 (4, 9)
VMware Tanzu Greenplum - 2 (0, 2)
Apache Kafka - 2 (2, 0)
Apache Hadoop - 2 (1, 1)
ClickHouse - система управления базами данных (СУБД) - 2 (2, 0)
Другие -8
PostgreSQL СУБД - 13 (6, 7)
VMware Tanzu Greenplum - 8 (0, 8)
RT.Warehouse СУБД - 3 (3, 0)
Diasoft Digital Q.Database - 3 (3, 0)
RT.WideStore СУБД - 3 (3, 0)
Другие -11