Модели данных механизма рекомендаций в реальном времени в cassandra

Мой запрос:

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

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

SELECT recommendation_id FROM cf WHERE user_id=123 AND recommendation_type='song'

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

Еще одна вещь, которая кажется запутанной, заключается в том, что в cassandra требуется много обновлений. Было бы лучше, если бы это было только созидание, не так ли?

Я пытался найти примеры такой модели данных, но пока не нашел. Любые ресурсы, найденные другими, будут полезны.

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


person Peter Klipfel    schedule 05.08.2013    source источник


Ответы (2)


Недавно я видел эти слайды из Spotify об использовании ML + Hadoop для прогнозного анализа. с использованием матричной факторизации. Как вы увидите на слайде 11, Cassandra присутствует на картинке, но большинство результатов предварительно вычисляются каждую ночь.

person Alex Popescu    schedule 07.08.2013
comment
Для всех, кто сталкивается с этим ответом, я хотел немного добавить. В принципе, я не думаю, что это решенная проблема. Совместная фильтрация требует сравнения всех пользователей друг с другом, и, насколько мне известно, нет способа сделать это итеративно (например, без просмотра каждого пользователя во время выполнения). Лучшее, что вы могли бы сделать, это, вероятно, зажечь (предложено в слайд-шоу) - person Peter Klipfel; 07.08.2013

Возможно, вы захотите использовать коллекции CQL, включая наборы, карты и списки. Взгляните на этот пост в блоге сообщества Datastax:

http://www.datastax.com/dev/blog/cql3_collections

person Sayed Jalil Hassan    schedule 06.08.2013