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