我試圖在學習Symfony和Doctrine時模擬一個簡單的實驗性應用。MongoDB基於權限的建模問題
我的數據模型需要一定的靈活性,所以我目前正在研究在MongoDB中使用EAV模型或文檔存儲的可能性。
這裏是我的基本要求:
- 用戶將能夠存儲和分享自己喜歡的東西(電視PROG,網站,歌曲等)。
- 用戶可以存儲的可能「事物」列表未知。例如,用戶可能想要存儲他們喜歡的動物。
- 用戶可以與其他用戶分享他們最喜歡的東西。但是,用戶可以決定他/她與其他用戶分享什麼。例如,用戶可以與一個用戶共享他們最喜歡的電影,但不是另一個用戶。
一個典型的用戶將根據他的朋友決定分享的內容,從他們的朋友列表中登錄並查看所有喜歡的東西。用戶也將更新他們自己喜歡的東西,這會在每個其他用戶查看他們自己的個人資料時反映出來。最後,用戶可以改變他的哪些朋友可以看到他最喜歡的東西。
我在Magento上工作過很多,它廣泛使用EAV模型。但是,我通過限制哪些用戶可以查看哪些信息來增加另一層複雜性。
因爲無模式格式給了我需要的靈活性,所以我馬上被吸引到了MongoDB。但是,我不確定在保存數據後訪問數據是否容易(或高效)。我還擔心如何管理數據更改,例如用戶改變他們喜歡的電影。
我希望有人能指出我正確的方向。這純粹是一個演示應用程序,我正在構建以進一步提高自己的知識水平,但我將其視爲真實世界的應用程序,其中數據訪問時間非常重要。
在傳統關係型數據庫中對這種應用程序進行建模讓我感到汗水,當我想到我需要爲一個用戶獲取數據所需的瘋狂連接數時。
感謝您的閱讀,請讓我知道我是否可以提供任何信息。
問候,
魚
嗨 - 感謝您的重播。由於該應用程序將訪問的數據遠遠大於它將寫入數據的數據,因此我認爲,當用戶保存或編輯他們的收藏夾時,它會在每個用戶文檔中嵌入一個副本。這樣,每個用戶都可以快速訪問其他用戶授予他們訪問權限的內容。這確實意味着寫入數據將會更多地成爲開銷,但這不是一個值得關注的問題。 – NeglectedGoldfish