我是一名自學成才的程序員,我一直在遵循一些基於常識的設計參數,而不是研究構建可擴展的系統。但是,我剛剛意識到我的系統的一個組件可能不是必需的。在單個數據庫服務器上的多個數據庫上分割用戶數據
一般來說,我將用戶數據分成組並分配給特定的mysql服務器。當負載均衡器後面的內容服務器收到請求時,我使用請求中的數據(如用戶標識)通過查詢存儲在DynamoDB上的中央表來解析存儲該用戶數據的數據庫,從而可以處理瘋狂的負載量。
但是,我也將用戶數據分配給服務器內的數據庫。就像我將在每臺服務器中有100個數據庫都具有相同的表結構,並且我將爲每個數據庫分配250個用戶。
最初的邏輯是,每個用戶有2k個條目的表將比500萬個條目更快地運行500k條目。但是,我想到以這種方式分解用戶數據可能沒有任何意義。 索引非常高效。我確定數據庫實際上有某種內部邏輯,它允許它以基本相同的速度訪問數據?我已經這樣做了十年,而我剛剛意識到這可能根本就沒有必要。有什麼想法嗎?我可以只用一個數據庫來創建我的所有表格,還是應該按照我以往的方式繼續進行操作,在服務器上分割100個數據庫?
因此,您與dynamoDB談論的往返行程就是我用來在多個數據庫服務器之間分割我的用戶數據。 500K與5000萬是分佈在同一臺服務器上的100個數據庫上的數據,而該服務器上的所有數據都存儲在一個數據庫中。然而,你的答案觸及頭部。這將基於您所說的在同一臺服務器上的多個數據庫中進行分片,通過減少單個表的大小來產生一些積極影響。感謝您的回覆! – user643718