2013-07-03 80 views
1

我正在幫助客戶將PHP/MySQL應用程序遷移到AWS。 我們遇到的一個問題是他們已經構建了這個應用程序來使用大量的數據庫。他們爲每個用戶創建一個新的數據庫(具有相同的模式)。他們期望擁有數以萬計的用戶。MySQL - 使用具有相同模式而不是一個大型數據庫的多個數據庫

我不太瞭解MySQL,但是這個設置對我來說似乎並不好。我唯一的猜測是開發人員這樣做是爲了避免擁有大量數據的表。然而,我只能想到缺點(維持這個系統將是一場噩夢,非常難以擴展,難以擴展等)。

無論如何,這種類型的模式通常在MySQL社區中使用嗎?有什麼好處?

我試圖說服他們應該重新構建數據庫模式。

* [編輯] *

在我們知道這種方法的另一個缺點其間。我們原本打算將Amazon RDS用於數據存儲。但是,RDS目前每個實例最多支持30個數據庫。所以現在排除了RDS。 RDS具有這個限制的事實已經非常明顯,我的理解是擁有如此龐大數量的數據庫並不是MySQL的常見做法。

謝謝!

+0

[關於許多數據庫與許多表的性能相關的問題](http://stackoverflow.com/questions/696682/mysql-many-tables-or-many-databases) – Mike

+0

@Mike:我想象一下,規範化替代方法不是在同一個數據庫中創建許多表,而是在現有表中包含額外的列以指示每個記錄與哪個用戶關聯。因此,我不相信這個鏈接是100%相關的...... – eggyal

回答

2

這是我讀過的最可怕的想法之一(我讀過很多)。一旦數據庫數量不能與數據庫中的表一樣擴大,另一方面不可能將用戶連接到彼此或至少共享共同的屬性和選項。它基本上破壞了數據庫本身的目的。

我在這裏的建議是超出原來的範圍:你的直覺知道比你想象的更多,更多地聽它!

+1

你有沒有任何經驗或數據與「數據庫不縮放以及數據庫中的表」的想法? [你可以做跨數據庫連接,並且很好。](http://stackoverflow.com/questions/2132654/querying-multiple-databases-at-once) – Mike

+1

完全同意。即使每個客戶的單獨表格都不好,如果您認爲這是一個好主意,您需要重新評估您的模式。 –

+0

當然,我的SQL是生鏽的,但即使如此,它仍然是一個壞主意,因爲數據庫旨在分離問題的不同分支,而不是不同的數據集。此外,您必須將數據庫標題中的user_id字符串與快速整數相反地進行管理,並且在刪除用戶時可能會遇到問題。如果每個用戶的大量唯一數據進來可能導致數據庫超載,那麼可以考慮將這些數據外包到由數據庫鏈接的單獨數據文件中。 – havarc

0

這個想法對我來說似乎也很奇怪!數據庫被設計爲處理大型數據集!如果真的擔心數據量,通常更好的做法是將表分隔到不同的數據庫上 - 託管在不同的物理服務器上,因爲這樣可以跨硬件傳播數據庫級進程以提高性能

另外,不知道他們計劃如何託管此應用程序,但許多託管服務提供商將按照數據庫實例向您收費!

這會給你帶來的另一個問題是它會使報告變得更加困難 - 我不想試圖在查詢中包含來自10,000個數據庫的表!

相關問題