2013-04-18 1 views
1

Я работаю над проектом, который я вам объясню.Лучшая стратегия для клавиш C (n, 2) в redis

У меня есть N (10000 < N < 100000) объектов, каждый из которых имеет отношения друг с другом, которые могут быть представлены как целое. Поэтому мне нужно сохранить отношения C (N, 2) в базе данных и иметь возможность извлекать любую из них случайным образом как можно быстрее.

Отношения рассчитываются по алгоритмам. Таким образом, с различными алгоритмами мы имеем разные отношения. Алгоритмы меняются, но активные алгоритмы будут ограничены менее чем 3.

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

Я нашел redis лучшее, что можно попробовать, но у нас есть 2 миллиарда объектов, поэтому я хочу как можно больше сократить использование памяти.

Каждый объект и каждый алгоритм представлены UUID.

Мой вопрос в том, что является лучшей стратегией? Должен ли я использовать redis HashMap и как? Должен ли я использовать redis vm? Как создавать ключи (поскольку они слишком длинны, если просто конкат ууиды)?

+0

redis VM устарел, вы не должны его использовать –

ответ

0

Если вы не можете хранить все свои данные в основной памяти и использовать диск, то Redis не является правильным выбором. Код VM был устаревшим с Redis 2.4 и удален в Redis 2.6.

Также не особенно эффективно хранить отношения между UUID, поскольку UUID не могут быть закодированы в одном целых 64 битах. Оптимизация пространства Redis для множеств полагается на ссылки на объекты объекта - это 64 бита целых чисел (и, как правило, отношения материализуются наборами с Redis).

Я думаю, вам будет лучше обслуживать база данных графа, такая как Neo4J или OrientDB, целью которой является сохранение таких отношений.

+0

спасибо. Я бы посмотрел на dbs, которые вы упомянули. – user1882455

Смежные вопросы