TreeDb – key/value хранилище для небольших проектов
Александр Календарев
Особенность хранилищаОснован на B+ Tree структуре данныхИмеет составные ключи Возможен доступ по маске
Похожие проектыTokyo TyrantMemcached MemcacheDbMembaseRedisTarantool
ЗависимостиTokyo Cabinet
http://fallabs.com
Libevent http://monkey.org/libevent
РеализацияМногопоточный демон (16 потоков)Отдельный поток на сохранение данных
Что не хватает?РепликацияМасштабированиеТранзакции
ПротоколТекстовыйПостоянное соединение
КомандыSet – положить в БДGet – Взять из БДStat – посмотреть статистикуDel – удалить из БД
КомандыSize – определить размер данныхFind – найти ближайший ключFLUSH – Отчистить БДQuit – закончить соединение
ПримерSet \t foo \t 12345 \t bar \t baz \n0 \t foo \n0 \t bar \n код ответа сервера на каждый оператор
0 – успех, другое значение - код ошибки
Пример
GET \t foo \t bar \n0 \t foo \t 5 \n12345 \n 0 \t bar \t 3 \nbaz \n
код ответа сервера на каждый оператор
Пример Set \t foo.a \t 12345 \t foo.b \t baz \n0 \t foo.a \n0 \t bar.b \n
Пример 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
Пример 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
ОграниченияОдна команда не более 16К(перекомпиляция)
Символы tab и enter в данных должны ЭкранироватьсяОграничения на имена ключей
Клиентсткие библиотекиКласс PHP нативный протоколПланируется клиент на CПланируется PHP расширение
Производительность
ПланыНаписание клиентских библиотекДобавить очередиРасширить функционал фильтрацииМасштабирование libketamaПротокол memcached