Лучшее решение для нахождения пересечения множества 1 x 1 миллион? Редис, Монго, прочее

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

В нашей системе есть набор тегов клиентов и целевые наборы тегов. Тег представляет собой 8-значный номер.
Набор тегов клиента может содержать до 300 тегов, но в среднем 100 тегов
. Целевой набор тегов может содержать до 300 тегов, но в среднем 40 тегов.

Предварительный расчет невозможен, поскольку мы рассчитываем на потенциальную клиентскую базу в миллиард пользователей.

(Эти теги являются иерархическими, поэтому наличие одного тега означает, что у вас также есть его родительский и предковый теги. Отложите пока эту информацию.)

Когда клиент заходит на наш сайт, нам нужно как можно быстрее сопоставить его набор тегов с миллионом целевых наборов тегов. Набор клиентов должен содержать все элементы целевого набора для соответствия.

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

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

Еще раз спасибо

26
задан Community 22 September 2017 в 18:01
поделиться