我有一个关于通用数据库结构的问题,在我的场景中我恰巧正在使用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"}
- 优点
- 如果需要,可以灵活查询跨用户
- 缺点
- 性能
我正在试图建立一个赞成/反对清单,但仍然摇摆不定。 鉴于每个用户的歌曲将被彼此隔离,哪种方法更好? 我最关心的是维护和查询性能。
提前致谢。