私は、ユーザーとオブジェクトという 2 つの基本エンティティを使用するレコメンダー システムに取り組んでいます。ユーザーの類似性指標は、既存のユーザー データに基づいて事前に計算されます。次に、さまざまなユーザーがオブジェクトに「フラグを立てる」と、オブジェクトが各ユーザーに推奨されます (同様のユーザーによってフラグが付けられたものに基づいて)。
私は NoSQL を初めて使用し、a) ユーザー フラグ イベント、および b) ユーザー固有の推奨事項をモデル化する最良の方法がわからない。私には2つのオプションが明白に思えます:
1) 「ヘビーウェイト」オプション: すべての関連データをプライマリ オブジェクトに保存します。例えば:
UserA
FlaggedItems
FlaggedItemA
FlaggedItemB
FlaggedItemC
RecommendedItems
RecommendedItemA
RecommendedItemB
RecommendedItemC
また:
ItemA
FlaggedBy
UserA
UserC
UserR
RecommendedTo
UserB
UserD
UserX
2) 「ライトウェイト」オプション: 「フラグ」および「レコメンデーション」データを粒状オブジェクトに格納します。例えば:
FlagEvent
FlaggedBy
UserA
FlaggedItem
ItemA
DateTime
RecommendationEvent
RecommendationTo
UserC
RecommendedItem
ItemB
DateTime
User/Item オブジェクトが常に変更されることはなく、クライアント同期にはユーザー固有の FlagEvents と RecommendationEvents を取得する必要があり、複数のユーザーが同じものを変更しようとする可能性がないため、軽量メソッドの方がスケーラブルであると思います。オブジェクトを同時に。しかし、私は CouchDB/noSQL を初めて使用するので、経験豊富なユーザーからの意見を歓迎します。何を提案しますか?