Какой магазин ключей / значений наиболее перспективен / стабилен? - PullRequest
59 голосов
/ 04 марта 2010

Я рассчитываю начать использовать хранилище ключей / значений для некоторых побочных проектов (в основном для обучения), но в недавнем прошлом появилось так много, что я понятия не имею, с чего начать. Просто перечисляя по памяти, я могу думать о:

  1. CouchDB
  2. MongoDB
  3. Riak
  4. Redis
  5. Токийский кабинет
  6. Berkeley DB
  7. Cassandra
  8. MemcacheDB

И я уверен, что есть еще что-то, что ускользнуло от моих поисков. Имея всю информацию, трудно найти надежные сравнения между всеми конкурентами. Мои критерии и вопросы:

  1. (самое важное) Что вы рекомендуете и почему ?
  2. Какой из них самый быстрый?
  3. Какой из них наиболее стабилен?
  4. Какой из них проще всего установить и установить?
  5. Какие из них имеют привязки для Python и / или Ruby?

Edit:
Пока что Redis кажется лучшим решением, но это только потому, что я получил один солидный ответ (от ardsrk). Я ищу больше ответов, таких как его, потому что они указывают мне на полезную количественную информацию. Какой магазин ключей-значений вы используете и почему ?

Редактировать 2:
Если у кого-то есть опыт работы с CouchDB, Riak или MongoDB, я хотел бы услышать ваш опыт общения с ними (и тем более, если вы можете предложить сравнительный анализ нескольких из них)

Ответы [ 15 ]

3 голосов
/ 04 марта 2010

Мне очень нравится memcached лично.

Я использую его на нескольких своих сайтах, и это просто, быстро и легко. Это действительно было невероятно просто в использовании, API прост в использовании. Он не хранит ничего на диске, поэтому имя memcached, так что его нет, если вы ищете механизм постоянного хранения.

Python имеет python-memcached .

Я не использовал клиент Ruby, но быстрый поиск в Google показывает RMemCache

Если вам просто нужен механизм кэширования, лучше всего использовать memcached. Он развит, он стабилен и быстро истекает кровью. Есть причина, по которой LiveJournal сделал это, и Facebook развивает это. Это используется на некоторых из крупнейших сайтов там с большим эффектом. Масштабируется очень хорошо.

2 голосов
/ 11 апреля 2010

Кассандра кажется популярной.

Cassandra используется в Digg, Facebook, Twitter, Reddit, Rackspace, Cloudkick, Cisco, SimpleGeo, Ooyala, OpenX и других компаниях, имеющих большие активные наборы данных. Самый большой производственный кластер имеет более 100 ТБ данных на более чем 150 машинах.

1 голос
/ 01 июня 2013

Имею опыт работы только с mongoDB, memchache и redis. Вот сравнение между ними и couchDB.

Кажется, mongoDB является самым популярным. Он поддерживает сегментирование и репликацию, в конце концов непротиворечивый, имеет хорошую поддержку в ruby ​​(mongoid). Он также имеет более богатый набор функций, чем два других. Все mongo, redis и memchache могут хранить значение ключа в памяти, но redis кажется намного быстрее, согласно этому посту , redis в 2 раза пишет, в 3 раза быстрее, чем mongo У него улучшенная структура данных и более «легкий».

Я бы сказал, что они имеют различное использование, mongoDB, вероятно, подходит для больших наборов данных и хранилищ документов, тогда как memchache и redis лучше хранить кеши или журналы.

1 голос
/ 29 января 2013

Как говорили другие, это всегда зависит от ваших потребностей. Я, например, предпочитаю все, что подходит моим приложениям.

Сначала я использовал memcached для быстрого доступа к чтению / записи. В качестве Java API я использовал SpyMemcached, что обеспечивает очень простой интерфейс, который вы можете использовать для записи и чтения данных. Из-за утечек памяти (больше не было оперативной памяти) мне пришлось искать другое решение, также я не мог правильно масштабировать, просто увеличение памяти для одного процесса казалось не очень хорошим достижением.

После некоторого обзора я увидел couchbase, он поставляется с репликацией, кластеризацией, автоматическим переключением при сбое и выпуском для сообщества (MS Windows, MacOs, Linux). И самое лучшее для меня было то, что его Java-клиент также поддерживает SpyMemcached, так что мне практически ничего не оставалось, как настроить сервер и использовать couchbase вместо memcached в качестве хранилища данных. Преимущество? Конечно, мои данные теперь постоянны, реплицируются и индексируются. Он поставляется с веб-консолью для написания карт и функций для просмотра документов в эрланге.

Имеет поддержку Python, Ruby, .Net и др., Простую настройку через веб-консоль и клиентские инструменты. Он работает стабильно. С некоторыми тестами я смог написать примерно 10k в секунду для записей длиной 200 - 400 байт. Хотя производительность чтения была намного выше (оба тестировались локально). Получайте удовольствие от принятия решения.

1 голос
/ 04 марта 2010

Просто для того, чтобы составить список: также есть Dreamcache. Он совместим с Memcached (с точки зрения протокола, поэтому вы можете использовать любую клиентскую библиотеку, написанную для Memcached), он просто быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...