我正在構建一個具有以下結構的Web應用程序:我們有「客戶」,每個客戶都有自己的「用戶」。 每個客戶(包括他的用戶和其他數據)與其他客戶完全分開,並且他們之間沒有共享數據。
而且每個「客戶」有不同的子網站,並即將從那裏(無論是他還是他的用戶)將始終指單一customer.idMySQL體系結構優化 - MySQL集羣
的數據庫是建立在以下方式中的所有查詢:
CREATE TABLE `customer` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT
) ENGINE=InnoDB;
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`customerID` int(11) unsigned
) ENGINE=InnoDB;
CREATE TABLE `blogPost` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`userID` int(11) unsigned
) ENGINE=InnoDB;
我有很多像'blogPost'這樣的表通過用戶連接到客戶。
共同詢問將是類似的東西:
SELECT *
FROM `blogPost` bp
INNER JOIN `user` u
ON bp.userID=u.id
WHERE u.customerID = 324
值得注意的是,這些連接是昂貴的,實際上是不必要的 - 因爲我們進入一個子網站第二,我們只在數據感興趣,定連接到特定的客戶
所以問題是我該如何改進數據庫?我對這個主題的瞭解越多,我就越困惑 -
是NDB(MySQL Cluster)存儲引擎是否要走?
是否最好創建許多不同的數據庫 - 每個客戶一個? 也許增加一個冗餘customerID
字段到blogPost
? 其他一些想法? MongoDB?!
MySQL集羣不會解決這個問題,我想知道你是如何得出這個想法的?有一個「SELECT *」,表格看起來很基本,但是關於選擇特定的列而不是所有的東西? – geertjanvdk 2013-03-21 07:35:50
表中有更多的字段 - 我只寫了主鍵和外鍵......通常我只選擇相關的列 - 這個查詢只是一個例子來顯示我試圖擺脫的連接...我認爲MySQL集羣創建的行集羣 - 以便每個客戶和相關數據可以在他自己的集羣中...也許這不是真的,雖然 - 我正在尋找任何解決方案,並不僅限於MySQL集羣 – 2013-03-21 08:18:02