RethinkDB

Продукт
Дата премьеры системы: 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.

Примечания



СМ. ТАКЖЕ (1)


Подрядчики-лидеры по количеству проектов

За всю историю
2021 год
2022 год
2023 год
Текущий год

  SAP CIS (САП СНГ) (38)
  Softline (Софтлайн) (35)
  РДТЕХ (32)
  BeringPro (БерингПойнт) ранее BearingPoint Russia (28)
  ФОРС - Центр разработки (25)
  Другие (706)

  Сапиенс солюшнс (Sapiens solutions) (7)
  Navicon (Навикон) (3)
  BeringPro (БерингПойнт) ранее BearingPoint Russia (3)
  IFellow (АйФэлл) (2)
  Инфосистемы Джет (2)
  Другие (35)

  Сбербанк-Технологии (СберТех) (1)
  Netrika (Нетрика) (1)
  Синимекс (Cinimex) (1)
  Nexign (Нэксайн) ранее Петер-Сервис (1)
  Форсайт (1)
  Другие (20)

  Arenadata (Аренадата Софтвер) (5)
  Тантор Лабс (Tantor Labs) (3)
  ФОРС - Центр разработки (2)
  NDBC - ЭнДиБиСи (ранее НТТ ДАТА Бизнес Солюшнс, itelligence Россия, Ителлидженс) (1)
  Философия.ИТ (1)
  Другие (18)

  БФТ-Холдинг, БФТ (ранее Бюджетные и Финансовые Технологии) (1)
  Гринатом (Greenatom) (1)
  Диасофт (Diasoft) (1)
  Центр Финансовых Технологий (ЦФТ) (1)
  AllSee (АЛЛ СИИ) (1)
  Другие (4)

Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Oracle (44, 179)
  SAP SE (6, 175)
  Microsoft (23, 142)
  PostgreSQL Global Development Group (14, 120)
  Постгрес профессиональный (ППГ, Postgres Professional) (6, 39)
  Другие (253, 204)

  SAP SE (3, 11)
  Microsoft (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 (3, 7)
  Постгрес профессиональный (ППГ, Postgres Professional) (2, 4)
  Диасофт (Diasoft) (1, 1)
  Другие (0, 0)

Распределение систем по количеству проектов, не включая партнерские решения

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Oracle Database - 106
  Microsoft SQL Server - 104
  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 101
  PostgreSQL СУБД - 77
  SAP HANA (High Performance Analytic Appliance) - 71
  Другие 352

  Microsoft SQL Server - 9
  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 8
  PostgreSQL СУБД - 7
  SAP HANA (High Performance Analytic Appliance) - 3
  Oracle Database - 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
  Apache Kafka - 2
  Другие 10

  PostgreSQL СУБД - 3
  Postgres Pro СУБД - 3
  Diasoft Digital Q.Database - 1
  Postgres Pro Enterprise - 1
  Другие 0