我將爲社交網絡樣式的網站構建一個MySQL數據庫,其中用戶關注其他用戶,然後從其用戶獲得更新。構建追隨者/關注MySQL數據庫的最佳實踐
我的DB是由一個表與用戶的基本信息構成:
| ID | username | password | email | ... other few columns |
的「ID」是主要的,「用戶名」和「電子郵件」是獨特的和索引。
然後我有用戶飼料的表應該如果另一個用戶按照它只能顯示,「ID」始終是主要的:
| ID | feed_to_show_in_home |
然後與跟隨者統計數據的表格,以加快用戶的個人資料頁:
| ID | followers_count | following_count |
而且至少真正的追隨者網表存儲在那裏誰跟着誰:
| ID | following |
在此表中,「ID」和「跟隨」都是主要的,因爲用戶只能跟隨其他用戶一次。
現在我想問一下,從性能的角度來看,我的結構是否良好。我特別擔心如何檢查用戶是否關注其他用戶,停止關注用戶,以及如何僅在我關注特定用戶時才顯示供稿。
在這種情況下,我想到的解決方案總是掃描整個表的長度,但我認爲這不是一個好的選擇,因爲這個DB計劃存儲超過10,000個用戶。
感謝您提供'EXPLAIN'提示。你認爲作爲一個開始的項目足夠使用MySQL而不是圖形數據庫嗎? – Philip
當然。這並不是真的依賴於特定的DBMS。即使在生產環境中,我也喜歡MySQL,但它忽略了例如'CHECK'約束,您必須手動強制執行此操作。所以我不斷放棄它的使用。這對草圖來說絕對可以。對於圖形數據庫,您必須習慣其他查詢語言,例如neo4j中的Cypher。所以當你從關係圖移植到圖時,你將面臨更多的努力。 –