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