Подтвердить что ты не робот

Как сравнить Leveldb с Redis или Riak или Tokyo Tyrant?

Leveldb кажется новым интересным постоянным хранилищем ключевых значений от Google. Как Leveldb отличается от Redis или Riak или Tokyo Tyrant? В каких конкретных случаях использования лучше других?

4b9b3361

Ответ 1

Я нахожу, что я не согласен с критериями colum, хотя различия между leveldb и Redis, которые он указывает, находятся на месте.

Вам нужно concurrency? Я поеду с Редисом. Я говорю это, потому что у Redis уже есть код, написанный для его обработки. Каждый раз, когда я могу использовать хорошо написанный код других людей для обработки concurrency, тем лучше. Я не просто имею в виду многопоточные приложения, но включил в это понятие несколько процессов - будь то в одной системе или нет. Даже тогда, не нужно писать и отлаживать блокировку в многопоточном приложении, имеет большое преимущество в моих глазах.

Вы хотите, чтобы он был полностью автономным в приложении? Пойдите с leveldb, так как это библиотека. Нужно или нужно больше, чем просто k/v? Пойдите с Редисом.

Я только комментирую аспект leveldb или Redis, поскольку я не считаю себя достаточно уверенным в Riak или TT, чтобы прокомментировать их лучшие костюмы.

Короче, если все, что вы ищете, - это постоянное хранилище ключей в однопоточном приложении, тогда leveldb - это выбор для вашего списка (другой будет токийский кабинет или хороший ole BerkleyDB или даже sqlite). Но если вы хотите больше, выберите один из других.

[редактировать: обновленное объяснение по. concurrency]

Ответ 2

Я добавляю это только потому, что в обоих предыдущих ответах я не вижу этого (важного) различия...

  • Redis: Является сервером базы данных. Вы общаетесь с ним через пользовательский двоичный протокол (обычно через клиентскую библиотеку).
  • LevelDB: Является библиотекой, которая реализует хранилище ключей. Вы общаетесь с ним, вызывая С++ API напрямую.

Если вы знакомы с SQLite и насколько популярны, он стал встроенной БД для клиентских приложений (я считаю, что Android и iOS отправляют ее), тогда вы видите, где что-то вроде LevelDB вписывается.

Представьте, что вы пишете сложное приложение PIM, возможно, какой-то менеджер адресной книги для предприятий должен быть установлен на отдельных компьютерах в офисе. Вы не захотите хранить все эти данные в XML или JSON, которые вы написали/проанализировали самостоятельно в своем приложении, - если бы вы могли, вы бы скорее сохранили его в БД, чтобы иметь более простые шаблоны доступа.

Но вы также не хотите отправлять и устанавливать локальную копию Redis, работая на каком-то случайном порту, чтобы вы могли подключиться к нему... вам нужна БД, которую вы можете вызвать напрямую и из вашего приложение и не беспокоиться о связи "по проводам"... вам нужны необработанные кишки БД без каких-либо сетевых ресурсов, которые вам не нужны в клиентском приложении.

Здесь находится LevelDB.

Это другой инструмент для другого задания.

Ответ 3

Отличия:

  • Redis - это сервер, а Leveldb - это "библиотека, которая реализует хранилище с быстрым сохранением ключей". Поэтому, с Redis, вы должны опросить сервер. С Leveldb база данных хранится на диске, что делает ее намного медленнее, чем Redis, которая хранится в памяти.
  • Leveldb предлагает только ключ/магазин. Redis также имеет это, но также имеет гораздо больше функций и функций.

Сходства:

  • У них обоих есть методы Key/Store

Причины выбора одного над другим

Если вы создаете C/С++-приложение, то leveldb - это путь, если вам просто нужна база данных, которая не является ресурсом, тяжелым, как mysql. Leveldb обеспечивает доступ к уровню кода, а при использовании redis вам нужен интерфейс, который должен взаимодействовать с сервером. В любом другом приложении Redis - это путь. Мало того, что вы получаете фактический сервер, доступ к которому может иметь более одного приложения, но вы получаете другие функции, такие как запись на диск, наборы, список, хэши и его продолжение.