Je travaille sur un système de recommandation utilisant deux entités de base: les utilisateurs et les objets. Les mesures de similarité utilisateur seront pré-calculées en fonction des données utilisateur existantes. Ensuite, comme divers utilisateurs "marqueront" les objets, les objets seront recommandés à chaque utilisateur (en fonction de ce qui a été signalé par des utilisateurs similaires).Utilisation de CouchDB pour modéliser les préférences/recommandations de l'utilisateur
Je suis novice en NoSQL et je ne sais pas quelle est la meilleure façon de modéliser a) les événements d'indicateur utilisateur, et b) les recommandations spécifiques à l'utilisateur. Deux options me semblent évidentes:
1) Option "poids lourd": stocker toutes les données pertinentes dans les objets primaires. .: par exemple
UserA
FlaggedItems
FlaggedItemA
FlaggedItemB
FlaggedItemC
RecommendedItems
RecommendedItemA
RecommendedItemB
RecommendedItemC
ou:
ItemA
FlaggedBy
UserA
UserC
UserR
RecommendedTo
UserB
UserD
UserX
2) option "légère": les données magasin "Drapeau" et "Recommandation" dans les objets granulaires. Par exemple:
FlagEvent
FlaggedBy
UserA
FlaggedItem
ItemA
DateTime
RecommendationEvent
RecommendationTo
UserC
RecommendedItem
ItemB
DateTime
Mon hypothèse est que la méthode légère serait plus échelonnable que les objets utilisateur/article ne seront pas modifiés en permanence, la synchronisation client impliquerait l'accaparement des FlagEvents spécifiques à l'utilisateur et RecommendationEvents, et il n'y aurait pas chance de plusieurs utilisateurs essayant de modifier le même objet simultanément. Mais je suis nouveau à CouchDB/noSQL et accueille les pensées des utilisateurs plus expérimentés. Que suggérerais-tu?
Merci, jhs - très apprécié. – Dan