treedb key/value nosql database
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
![Page 1: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/1.jpg)
TreeDb – key/value хранилище для небольших проектов
Александр Календарев
![Page 2: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/2.jpg)
Особенность хранилищаОснован на B+ Tree структуре данныхИмеет составные ключи Возможен доступ по маске
![Page 3: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/3.jpg)
Похожие проектыTokyo TyrantMemcached MemcacheDbMembaseRedisTarantool
![Page 4: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/4.jpg)
ЗависимостиTokyo Cabinet
http://fallabs.com
Libevent http://monkey.org/libevent
![Page 5: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/5.jpg)
РеализацияМногопоточный демон (16 потоков)Отдельный поток на сохранение данных
![Page 6: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/6.jpg)
Что не хватает?РепликацияМасштабированиеТранзакции
![Page 7: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/7.jpg)
ПротоколТекстовыйПостоянное соединение
![Page 8: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/8.jpg)
КомандыSet – положить в БДGet – Взять из БДStat – посмотреть статистикуDel – удалить из БД
![Page 9: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/9.jpg)
КомандыSize – определить размер данныхFind – найти ближайший ключFLUSH – Отчистить БДQuit – закончить соединение
![Page 10: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/10.jpg)
ПримерSet \t foo \t 12345 \t bar \t baz \n0 \t foo \n0 \t bar \n код ответа сервера на каждый оператор
0 – успех, другое значение - код ошибки
![Page 11: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/11.jpg)
Пример
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](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/12.jpg)
Пример 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](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/13.jpg)
Пример 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](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/14.jpg)
Пример 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](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/15.jpg)
ОграниченияОдна команда не более 16К(перекомпиляция)
Символы tab и enter в данных должны ЭкранироватьсяОграничения на имена ключей
![Page 16: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/16.jpg)
Клиентсткие библиотекиКласс PHP нативный протоколПланируется клиент на CПланируется PHP расширение
![Page 17: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/17.jpg)
Производительность
![Page 18: TreeDb key/value noSQL database](https://reader036.vdocuments.net/reader036/viewer/2022062312/555e0de4d8b42a9e188b4d84/html5/thumbnails/18.jpg)
ПланыНаписание клиентских библиотекДобавить очередиРасширить функционал фильтрацииМасштабирование libketamaПротокол memcached