Хранилище ключей-значений для Ruby и Java - PullRequest
4 голосов
/ 08 июня 2011

Мне нужна рекомендация для хранилища ключей. Вот мои критерии:

  1. Не обязательно должен быть постоянным, но должен поддерживать много записей (записи маленькие, 100-1000 байт)
  2. Вставка (put) будет происходить только изредка, всегда в больших наборах данных (навалом)
  3. Get будет случайным и должен быть быстрым
  4. Клиенты будут в Ruby и, возможно, Java
  5. Он должен быть относительно простым в настройке и с минимально необходимым обслуживанием, насколько это возможно

Ответы [ 4 ]

6 голосов
/ 08 июня 2011

Redis звучит как правильная вещь для использования здесь.Все это в памяти, поэтому оно очень быстрое (операции GET и SET являются O (1)), и оно поддерживает оба Ruby и Java клиентов.

5 голосов
/ 07 мая 2015

Aerospike будет идеальным решением по следующим причинам:

  1. Значение ключа основано на клиентах, доступных на Java и Ruby.
  2. Пропускная способность : лучше, чем Redis / Mongo / Couchbase или любое другое решение NoSQL. Посмотрите это http://www.aerospike.com/blog/use-1-aerospike-server-not-12-redis-shards/. Лично видел, что он отлично работает с более чем 300K TPS чтения и 100K Write TPS одновременно.
  3. Автоматическое и эффективное разделение данных, повторная балансировка и распределение данных с использованием RIPEMD160.
  4. Система высокой доступности в случае сбоя и / или сетевых разделов.
  5. Открытый исходный код от версии 3.0.
  6. Может использоваться в режиме кэширования без сохранения.
  7. Поддерживает LRU и TTL.
  8. Мало или нет обслуживания.
0 голосов
/ 08 июня 2011

1 и 3 оба кричат ​​ядро ​​базы данных.

Если количество ваших записей не безумно, и у вас есть только один клиент, использующий эту штуку одновременно, я лично рекомендовал бы sqlite, который работает как с Java, так и с Ruby (также прошел # 5). В противном случае используйте настоящую систему баз данных, такую ​​как MySql (поскольку вы не в стеке Microsoft).

0 голосов
/ 08 июня 2011

Дерево AVL даст вам O (log n) при вставке, удалении, поиске и большинстве всего остального.

...