我有一個通用數據庫結構問題。在我的場景中,我碰巧使用了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的集合級訪問控制機制。通過這種方式,可以確保在數據庫級別一個用戶不會訪問他人的數據。 –