TreeDb key/value noSQL database

18
TreeDb – key/value хранилище для небольших проектов Александр Календарев

description

TreeDb is key/value noSQL database, based onе the TocyoCabinet and libevent. It is OpenSource product under LGPL.This database use the rb-Tree index for key storage. The feature of this solution is the use of composite keys, and ability of choice of regions keys by mask or pattern.

Transcript of TreeDb key/value noSQL database

Page 1: TreeDb key/value noSQL database

TreeDb – key/value хранилище для небольших проектов

Александр Календарев

Page 2: TreeDb key/value noSQL database

Особенность хранилищаОснован на B+ Tree структуре данныхИмеет составные ключи Возможен доступ по маске

Page 3: TreeDb key/value noSQL database

Похожие проектыTokyo TyrantMemcached MemcacheDbMembaseRedisTarantool

Page 4: TreeDb key/value noSQL database

ЗависимостиTokyo Cabinet

http://fallabs.com

Libevent http://monkey.org/libevent

Page 5: TreeDb key/value noSQL database

РеализацияМногопоточный демон (16 потоков)Отдельный поток на сохранение данных

Page 6: TreeDb key/value noSQL database

Что не хватает?РепликацияМасштабированиеТранзакции

Page 7: TreeDb key/value noSQL database

ПротоколТекстовыйПостоянное соединение

Page 8: TreeDb key/value noSQL database

КомандыSet – положить в БДGet – Взять из БДStat – посмотреть статистикуDel – удалить из БД

Page 9: TreeDb key/value noSQL database

КомандыSize – определить размер данныхFind – найти ближайший ключFLUSH – Отчистить БДQuit – закончить соединение

Page 10: TreeDb key/value noSQL database

ПримерSet \t foo \t 12345 \t bar \t baz \n0 \t foo \n0 \t bar \n код ответа сервера на каждый оператор

0 – успех, другое значение - код ошибки

Page 11: TreeDb key/value noSQL database

Пример

GET \t foo \t bar \n0 \t foo \t 5 \n12345 \n 0 \t bar \t 3 \nbaz \n

код ответа сервера на каждый оператор

Page 12: TreeDb key/value noSQL database

Пример Set \t foo.a \t 12345 \t foo.b \t baz \n0 \t foo.a \n0 \t bar.b \n

Page 13: TreeDb key/value noSQL database

Пример Get \t foo.* \n0 \t foo.* \t 2\n0 \t foo.a \t 5 \n12345 \n 0 \t bar.b \t 3 \n baz\n

Page 14: TreeDb key/value noSQL database

Пример Stat \nrum 22098 кол-во вершин в BTreesize 135680 размер файлаset 3342 кол-во set операцийget 4232 кол-во get операцийdel 0 кол-во del операцийmiss 1 кол-во не найденных ключейlast 0 последнее кол-во сохраненых записейthreads 8 кол-во запущенных потоковthread_num 7 текущий номер потокаconnections 1 кол-во одновременных соединенийerrors 0 кол-во ошибок, кроме misstime 12707 время в сек с последней загрузки или flush

Page 15: TreeDb key/value noSQL database

ОграниченияОдна команда не более 16К(перекомпиляция)

Символы tab и enter в данных должны ЭкранироватьсяОграничения на имена ключей

Page 16: TreeDb key/value noSQL database

Клиентсткие библиотекиКласс PHP нативный протоколПланируется клиент на CПланируется PHP расширение

Page 17: TreeDb key/value noSQL database

Производительность

Page 18: TreeDb key/value noSQL database

ПланыНаписание клиентских библиотекДобавить очередиРасширить функционал фильтрацииМасштабирование libketamaПротокол memcached