我有一个通用数据库结构问题。在我的场景中,我碰巧使用了mongodb。MongoDB结构:单个集合vs多个较小的集合
我创建了一个应用程序,用户可以上传歌曲列表(标题,艺术家等),但不知道是否应该为所有用户提供一个songList集合,或者单独的songList.user#collection每个用户。用户只能查询与其相关的歌曲,因此用户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"}
- 优点
- 小集合的大小
多个集合查询
- 小集合的大小
- 缺点
- 可维护性
- 1000个用户装置1000点的集合
- 可维护性
VS与所属单个集合 '用户' 字段
db.songList.find({"user":"A"})
{"title": "Some song of user A", "artist": "Some artist of user A", "user": "A"}
- 优点
- 灵活地在用户查询,如果需要不断arised
- 缺点
- 性能
我试图建立一个亲/ con list,但仍然在围栏上。鉴于每个用户的歌曲将彼此隔离,哪种方法更好?我主要关心的是维护和查询性能。
在此先感谢。
而不是担心这样的事情,建立*的东西*。你可能会发现通过构建它会发挥什么效果,而不是担心细节。 – SomeKittens
同意@SomeKittens。也就是说,我会为每个用户执行一次操作,因为更容易犯错并将A的歌曲显示给B.无论如何,如果/当我有足够的用户时,我会担心优化。 –
安全方面,每个用户拥有一个集合,可以使用Mongodb的集合级访问控制机制。通过这种方式,可以确保在数据库级别一个用户不会访问他人的数据。 –