RethinkDB — вільна документо-орієнтована система керування базами даних зі збереженням даних у форматі JSON і спеціалізованою мовою запитів ReQL. Сирцевий код СКБД написаний мовою і поширюється під ліцензією AGPLv3. Бібліотеки для роботи з RethinkDB офіційно надаються для JavaScript, Python і Ruby, неофіційно співтовариством розвиваються драйвери для багатьох інших мов, включаючи , PHP, Perl і Go.
Тип | d |
---|---|
Перший випуск | 24 липня 2009 |
Операційна система | Unix, Linux, OS X, BSD |
Мова програмування | , JavaScript, Bash |
Доступні мови | англійська |
Стан розробки | активний |
Ліцензія | AGPL |
Репозиторій | github.com/rethinkdb/rethinkdb |
Вебсайт | rethinkdb.com |
Огляд
Ключовою відмінністю RethinkDB від інших СКБД є реалізація зворотної моделі доставки результатів запиту. Якщо традиційна модель «запит-відповідь» вимагає для відстеження змін періодичної повторної відправки запитів, то RethinkDB дозволяє підписатися на зміни (), тобто дає можливість відправити запит один раз і в 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:
- Можливість управління роботою СКБД, у тому числі аналіз статистики і перенесення даних між вузлами в кластері, через вбудований веб або CLI-інтерфейс.
- API для моніторингу за роботою СКБД;
- Зручна система настройки реплікації на інший сервер або шардинга даних в кластері. Підтримка як асинхронної, так і синхронної реплікації;
- Механізм кешування запитів з довільним налаштуванням розміру кешу;
- Можливість під'єднання клієнта до будь-якого вузла кластера. Всі запити будуть автоматично маршрутизуватися на потрібні вузли. Якщо запитом охоплені дані на кількох вузлах, то запит буде розділений на підзапити до різних серверів, які будуть виконані паралельно, а потім агреговані для отримання зведеного результату;
- Можливість використання механізму map-reduce;
- Розміщення даних в B-Tree і зберігання з використанням лог-подібних структур, створених з оглядкою на архітектуру Btrfs. Наявність виконуваного в тлі інкрементального збирача сміття і пакувальника даних. Гарантування несуперечності даних після збою;
- Гнучка система індексів з підтримкою первинних і вторинних ключів, геопросторових індексів, можливістю індексації по довільним виразами. Кожен запит може використовувати тільки один індекс.
Примітки
- Jeremy Zawodny, RethinkDB: Rethinking the Database using Modern Assumptions [ 2018-08-17 у Wayback Machine.], , August 24, 2009
- Выпуск СУБД RethinkDB 2.0 [ 21 вересня 2015 у Wayback Machine.] // opennet.ru
Посилання
- Офіційний сайт
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
RethinkDB vilna dokumento oriyentovana sistema keruvannya bazami danih zi zberezhennyam danih u formati JSON i specializovanoyu movoyu zapitiv ReQL Sircevij kod SKBD napisanij movoyu S i poshiryuyetsya pid licenziyeyu AGPLv3 Biblioteki dlya roboti z RethinkDB oficijno nadayutsya dlya JavaScript Python i Ruby neoficijno spivtovaristvom rozvivayutsya drajveri dlya bagatoh inshih mov vklyuchayuchi C PHP Perl i Go RethinkDBTipdPershij vipusk24 lipnya 2009Operacijna sistemaUnix Linux OS X BSDMova programuvannyaC JavaScript BashDostupni movianglijskaStan rozrobkiaktivnijLicenziyaAGPLRepozitorijgithub com rethinkdb rethinkdbVebsajtrethinkdb comOglyadKlyuchovoyu vidminnistyu RethinkDB vid inshih SKBD ye realizaciya zvorotnoyi modeli dostavki rezultativ zapitu Yaksho tradicijna model zapit vidpovid vimagaye dlya vidstezhennya zmin periodichnoyi povtornoyi vidpravki zapitiv to RethinkDB dozvolyaye pidpisatisya na zmini tobto daye mozhlivist vidpraviti zapit odin raz i v live rezhimi bezperervno otrimuvati informaciyu pro zminu pov yazanih z nim rezultativ Podibnij pidhid informuvannya zastosunku pro zmini dozvolyaye istotno sprostiti arhitekturu zastosunkiv obroblyati dani v rezhimi realnogo chasu i vidijti vid vikoristannya zovnishnih cherg povidomlen Drugoyu vazhlivoyu osoblivistyu RethinkDB ye mova zapitiv ReQL yaka integruyetsya v ob yektnu model riznih mov programuvannya Pri vikoristanni ReQL zapiti formuyutsya u formi zvernennya do ob yekta napriklad dlya vidstezhennya zmin v tablici v yakij pole db dorivnyuye prod mozhna vikonati r db rethinkdb table stats filter db prod changes run conn a dlya vibirki zapisiv v yakih znachennya polya episodes bilshe 100 r table tv shows filter r row episodes gt 100 ReQL pidtrimuye stvorennya tablic kozhen zapis mozhe mati svoyu strukturu ugrupovannya rezultativ agregatni funkciyi mozhlivist vikoristannya v zapitah kodu na JavaScript i regulyarnih viraziv Dlya obrobki JavaScript funkcij vikoristovuyetsya rushij V8 Deyaki inshi osoblivosti RethinkDB Mozhlivist upravlinnya robotoyu SKBD u tomu chisli analiz statistiki i perenesennya danih mizh vuzlami v klasteri cherez vbudovanij veb abo CLI interfejs API dlya monitoringu za robotoyu SKBD Zruchna sistema nastrojki replikaciyi na inshij server abo shardinga danih v klasteri Pidtrimka yak asinhronnoyi tak i sinhronnoyi replikaciyi Mehanizm keshuvannya zapitiv z dovilnim nalashtuvannyam rozmiru keshu Mozhlivist pid yednannya kliyenta do bud yakogo vuzla klastera Vsi zapiti budut avtomatichno marshrutizuvatisya na potribni vuzli Yaksho zapitom ohopleni dani na kilkoh vuzlah to zapit bude rozdilenij na pidzapiti do riznih serveriv yaki budut vikonani paralelno a potim agregovani dlya otrimannya zvedenogo rezultatu Mozhlivist vikoristannya mehanizmu map reduce Rozmishennya danih v B Tree i zberigannya z vikoristannyam log podibnih struktur stvorenih z oglyadkoyu na arhitekturu Btrfs Nayavnist vikonuvanogo v tli inkrementalnogo zbiracha smittya i pakuvalnika danih Garantuvannya nesuperechnosti danih pislya zboyu Gnuchka sistema indeksiv z pidtrimkoyu pervinnih i vtorinnih klyuchiv geoprostorovih indeksiv mozhlivistyu indeksaciyi po dovilnim virazami Kozhen zapit mozhe vikoristovuvati tilki odin indeks PrimitkiJeremy Zawodny RethinkDB Rethinking the Database using Modern Assumptions 2018 08 17 u Wayback Machine August 24 2009 Vypusk SUBD RethinkDB 2 0 21 veresnya 2015 u Wayback Machine opennet ruPosilannyaOficijnij sajt