一般的なデータベース構造の質問があります。私のシナリオでは、たまたまmongodbを使用しています。
ユーザーが曲のリスト(タイトル、アーティストなど)をアップロードできるアプリケーションを作成していますが、すべてのユーザーに1つのsongListコレクションを使用するか、個々のユーザーに個別のsongList.user#コレクションを使用するかがわかりません。ユーザーは自分に関連付けられた曲のみを照会できるため、ユーザーAはユーザーBの曲について知ることはありません。
コード例:
ユーザーごとに複数のコレクション
db.songList.userA.find()
{"title": "Some song of user A", "artist": "Some artist of user A"}
db.songList.userB.find()
{"title": "Some song of user B", "artist": "Some artist of user B"}
- 長所
- クエリするコレクションサイズが小さい
- 短所
- 保守性
- 1,000ユーザーは1,000コレクションを意味します
- 保守性
vs所有する「user」フィールドを持つ単一のコレクション
db.songList.find({"user":"A"})
{"title": "Some song of user A", "artist": "Some artist of user A", "user": "A"}
- 長所
- 必要が生じた場合にユーザー間でクエリを実行する柔軟性
- 短所
- パフォーマンス
私は賛否両論のリストを作成しようとしていますが、まだフェンスにいます。各ユーザーの曲が互いに分離されることを考えると、どちらのアプローチが優れていますか?私の主な関心事は、メンテナンスとクエリのパフォーマンスです。
前もって感謝します。