Тип | Distributed database management systemd |
---|---|
Перший випуск | 24 липня 2009[1] |
Операційна система | Unix, Linux, OS X, BSD |
Мова програмування | C++, JavaScript, Bash |
Доступні мови | англійська |
Стан розробки | активний |
Ліцензія | AGPL |
Репозиторій | github.com/rethinkdb/rethinkdb |
Вебсайт | rethinkdb.com |
RethinkDB — вільна документо-орієнтована система керування базами даних зі збереженням даних у форматі JSON і спеціалізованою мовою запитів ReQL. Сирцевий код СКБД написаний мовою С++ і поширюється під ліцензією AGPLv3. Бібліотеки для роботи з RethinkDB офіційно надаються для JavaScript, Python і Ruby, неофіційно співтовариством розвиваються драйвери для багатьох інших мов, включаючи C++, PHP, Perl і Go.
Ключовою відмінністю RethinkDB від інших СКБД є реалізація зворотної моделі доставки результатів запиту.[2] Якщо традиційна модель «запит-відповідь» вимагає для відстеження змін періодичної повторної відправки запитів, то 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.
Деякі інші особливості RethinkDB: