2010-04-29 53 views
0

情況:使用現成的PHP應用程序,我必須添加一個新模塊以提供額外的功能。今天,已經知道最終會部署四個不同的應用程序實例,但是新功能的數據將在這四個實例之間共享。每個實例仍然應該有自己的用戶數據庫,內容等。PHP/MySQL - 使用兩個數據庫,一個共享和一個本地應用程序實例

因此,新功能的數據進入「共享」數據庫。 爲使應用程序(用戶登錄,內容,上傳)數據進入「本地」數據庫

爲了使事情更加複雜,我正在編寫的新模塊將從本地數據庫和共享數據庫中獲取數據同時。

重新編寫基礎應用程序將需要很長時間。我只能控制我正在寫的新模塊。

理想的解決方案:有沒有辦法使用MySQL將2個數據庫封裝成一個名稱?我不希望切換數據庫連接或專門命名數據庫以從我的SQL語句中查詢。

應用程序使用DB包裝器,所以我能夠以某種方式更改它,以便我可以無形地嘗試讀/寫兩個不同的數據庫。

回答

2

我不希望切換數據庫連接或專門命名數據庫以從我的SQL語句中查詢。

這是怎麼回事?如果應用程序數據包封裝器是「面向對象的」(意思是它保留了連接句柄,並且可以有兩個或多個獨立的數據庫封裝器實例,即使這意味着兩個連接),在我看來,最簡單也是最直接的解決方案就是擁有兩個DB包裝器實例。使用應用程序知道並使用的本地數據庫的「默認」數據庫和另一個用於共享數據庫的實例。在做查詢時添加額外的數據庫參數對我來說也是可以的。

你會如何將兩個數據庫封裝成一個?假設的中間層如何知道哪些查詢應該到哪個數據庫?即使你修改了數據庫封裝器,你怎麼想到它會確定哪個數據庫是正確的?就像有一個表名來查詢db1和一個查詢db2的表的列表......那麼,介紹一些神祕的規則很快就會變得麻煩。

+0

我同意。你可以像訪問你的數據庫:'$ db_primary-> query('...'); $ db_secondary->查詢( '...');' – mattbasta 2010-07-22 22:43:03

0

想通了,我自己想出了一個想法。 「共享」數據庫的行爲更像是應用程序的服務。因此,我不是直接從它檢索數據,而是將它作爲服務封裝起來,並使用XML-RPC來檢索數據。

相關問題