Привет всем и заранее спасибо. Я новичок в игре NoSQL, но мое нынешнее место работы поставило передо мной задачу сравнивать наборы некоторых больших данных.
В нашей системе есть набор тегов клиентов и целевые наборы тегов. Тег представляет собой 8-значный номер.
Набор тегов клиента может содержать до 300 тегов, но в среднем 100 тегов
. Целевой набор тегов может содержать до 300 тегов, но в среднем 40 тегов.
Предварительный расчет невозможен, поскольку мы рассчитываем на потенциальную клиентскую базу в миллиард пользователей.
(Эти теги являются иерархическими, поэтому наличие одного тега означает, что у вас также есть его родительский и предковый теги. Отложите пока эту информацию.)
Когда клиент заходит на наш сайт, нам нужно как можно быстрее сопоставить его набор тегов с миллионом целевых наборов тегов. Набор клиентов должен содержать все элементы целевого набора для соответствия.
Я изучал свои варианты, и пересечение множества в Redis кажется идеальным. Однако мой троллинг в Интернете не показал, сколько оперативной памяти потребуется для хранения одного миллиона наборов тегов. Я понимаю, что пересечение будет молниеносным, но возможно ли это решение с Redis.
Я понимаю, что это грубая сила и неэффективно. Я также хотел использовать этот вопрос как средство, чтобы получить предложения о том, как этот тип проблемы решался в прошлом. Как было сказано ранее, теги хранятся в дереве. Я также начал рассматривать Mongodb как возможное решение.
Еще раз спасибо