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

TreeDb key/value noSQL database

Embed Size (px)

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.

Citation preview

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