Мне кажется правильней её сравнивать с Memcached или Mambase — они также предназначены для хранения пар ключ-значение. MongoDB и Redis же предоставляют более богатый функционал.
>Мне кажется правильней её сравнивать с Memcached или Mambase
нет, вот здесь ты ошибаешься: Memcached или Mambase — это БД, а Kyoto Tb есть API для хранилища данных.
Можно сравнивать с BerkeleyDb, хотя Kyoto Tb наиболее производительное из хранилищ типа key/value fallabs.com/kyotocabinet/kyotoproducts.pdf
>MongoDB и Redis же предоставляют более богатый функционал.
но меньшую производительность,
хотя на базе Lvdb можно самому построить удобный для тебя функционал, который не будет уступать тому же MongoDB или Redis,
ниже в комментариях, если интересно, я кинул ссылку на TreeDb — где я на базе Tokyo Cabinet сделал продукт (надо допилить кой-какие детали и выложить в общий доступ) с функциональностью первого редиса, но превосходящего его по производительности.
В полку NoSQL прибыло! Бенчмарки конечно красивые, особенно последовательные чтения/запись. Вот только жаль, что с другими NoSQL решениями они не сравнивали.
каждый сравнивает с выгодной для него позиции. Как показал опыт, надо сделать свои бенчмарки, потому что любое тестирование очень условно: железо, объем ОЗУ и выделенного кеша, использование конкретного АПИ, режима постоянного соединения и прочих тонкостей.
То что было на официальной презентации продукта не всегда совпадает с ожиданиями на твоем боевом сервере. Я уже съел собаку на всяких тестированиях.
Обязательно приму на вооружение с сделаю свои бенчмарки.
Причина простая: Если бы вместо SQLite в этом тестировании «случайно бы» поучаствовал BerkeleyDB, такой бы «красоты» в бенчмарк-графиках наверное бы не получились. А зачем портить такой красивый график (тем более график вовсе не красивый и красота далеко не убедительно)?
Если все-таки совсем внимательно и попристальнее присмотреться к этим графикам, то сразу видно, что результаты теста «Random Reads» почему-то по-отношению к LevelDB вовсе не вызывают реакцию какого-то бурного восхищения.
А когда смотришь на эти графики дальше, у меня почему-то и вообще в голову начали закрадываться всяческие нехорошие мысли и мутные подозрения.
Вот например, скорость таких вещей как «Sequential Reads» и «Sequential Writes», превосходство LevelDB в которых вроде так убедительно? Я вообще-то очень сильно напрягал мозг, вспоминая, насколько часто в реальных ситуациях в отличии от «синтетических тестов» всяческие «Sequential» могли бы стать узким местом в производительности (потому что мы «вовремя вспоминаем», что мы все это сравниваем применительно к таким вещам как Key/Value-storage).
А когда смотришь на графики дальше, общее состояние огорчения возрастает, и приходит полная уверенность, что SQLite в данном тесте поучавствовал действительно только «ради красоты».
Потому, что в таких тестах как «Batch Writes», Kyoto почему-то «случайно забыли», и оставив LevelDB одиноко состязаться на пару с SQLite.
Видимо, бенчмарк-казуса c «Random Reads» в измененной кофигурации (там, ниже, где увеличили «memory usage to 128 MB») и где LevelDB умудрился не только уступить Kyoto почти в 2.5 раза, но и даже чуть-чуть пропустить вперед SQLite, было достаточно.
Так что, не знаю как у Вас, у меня например, совсем не возникло «жгучего желания» по отношению к LevelDB, только из-за «волшебной силы бренда Google». Скорее наоборот, это как раз и портит всю картину (наверное я наивно ожидал большего от технологии, которая «made by google»).
А результаты «Random Reads» (так основная ниша, где уютненько обосновались всяческие nosql key-value storage продукты, завоевав ее своим высоким перфомансом и низким оверхедом) говорят совсем не в пользу LevelDB.
ну полчаса — ты загнул, но за дня два-три можно написать полноценный биндинг например для РНР или питона (я для тарантула бинд писал неделю по вечерам 2-3 часа)
их изначально нельзя сравнивать так как Redis — это законченное решение
а LevelDb — это emmbed решение. Если взять и реализовать поверх этого API, например, редис протокол — тогда можно сравнить их по производительности. Однозначно скажу, что если к LevelDb присабачить сетевой интерфейс, то он будет однозначно быстрее редиса.
Что касается сравнения, то у редиса более расширенный функционал: списки, множества.
Редис на типах key/value не может делать операции итераций/обратных итераций. Для этого используются списки. Но списки — это последовательный доступ, а LvDb позволяет использовать прямой доступ.
см мои коментари… уже надоело повторяться. Что касается MemcacheDB, то это memcached настройка над BerkeleyDb, которая сегодня уже не является самой быстрой из key/value embedded решений.
Правильнее сравнивать с BerkeleyDb, qdbm или Tokyo/Kyoto Cb так как это все embedded решения
что касается бенчмарков, то я конечно понимаю тестировщиков,
которые представляют тесты с выгодных для них позиций.
сравнение с Kyoto TreeDB — это не совсем правильно (я уже не говорю про SQLite)
так как LiveDb — это HashTable, ну сравнивали бы тогда уж с типом Kyoto HashDB — который на порядок быстрее,
так как внутренняя организация Kyoto TreeDB более сложная и представляет собой внутренее Hash хранилище с Tree индексом. И еще есть режим сжатия, отключив который можно добиться более высокой производительности.
еще раз спасибо за информацию, обязательно попробую использовать для какого нибудь из своих проектов.
Google открывает LevelDB: ещё одна внутренняя разработка