我有一个一般的数据库结构问题。在我的场景中,我碰巧正在使用 mongodb。
我正在创建一个应用程序,用户可以在其中上传歌曲列表(标题、艺术家等),但我不确定我是否应该为所有用户提供一个 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 个集合
- 可维护性
与拥有“用户”字段的单个集合
db.songList.find({"user":"A"})
{"title": "Some song of user A", "artist": "Some artist of user A", "user": "A"}
- 优点
- 如果需要,可以灵活地跨用户查询
- 缺点
- 表现
我正在尝试建立一个赞成/反对名单,但仍然在围栏上。鉴于每个用户的歌曲将彼此隔离,哪种方法更好?我主要关心的是维护和查询性能。
提前致谢。