2012-05-02 30 views
0

我有一個涉及軟件即服務的項目。該應用程序有一個SystemDB和多個客戶數據庫。客戶數據庫完全相同(所有表均相同)。 系統數據庫包含有從客戶數據庫的所有細節,如DBNAME表,DBPASSWORD,數據庫用戶名等。在多個數據庫中插入/更新行

我怎樣才能做一個更新的所有數據庫,並確保更新是正確的。例如, 。所有的數據庫都有一個翻譯表。我想爲所有表添加一個單詞。 或者我想更新一個拼錯的單詞。 我有超過50分貝,我們將要維護。所以手動工作是不可能的。

有關軟件或框架的任何建議,可以做到這一點。

我使用PHP5.4.0,但沒有具體的框架yet.as DB我們使用MS SQL 2008 R2

感謝,

+0

即時通訊同樣的情況下,我有一個列出所有dbs的表。那麼我只是循環遍歷所有的變化 – 2012-05-02 06:20:55

+0

值得考慮在它自己的數據庫中擁有這個翻譯表,並讓所有項目從該數據庫訪問該值? –

+0

@RobinCastlin我不能這樣做。它不僅是翻譯表。他們是更多的桌子,我必須保持在水槽+如果我送大家一分貝。我認爲我們會在負載平衡方面遇到問題。 –

回答

1

我們有從多個數據庫中讀取的simillar情況,我們的pl是C#.net。 爲此,我們編寫了一個C#.net代碼,它逐個運行並連接到每個數據庫,並將數據管理到一臺服務器中。 我建議你只使用這種方式,並且在.Net中應該使用像更新或插入sript這樣的腳本作爲Excecute Query。 在這我們你將避免手動連接和更新工作。

+0

這聽起來很有趣,但你如何管理一致性呢?我的意思是,如果在更新過程中你的服務器停止了,那麼它會是什麼情況呢?到目前爲止,但其餘的不受影響?那麼您如何處理呢 –

+1

當我們從任何服務器加載數據時,我們首先將其完全加載到CSV文件中,然後讀取要加載到數據庫中的文件,這樣CSV文件作爲中間層,如果服務器停止時出現任何錯誤,則CSV文件不會生成。 – Pratik

0

使用數據庫觸發器更新其他數據庫中的表。

0

恐怕沒有魔杖可以做。但如果你確實想用ORM做一些魔術嘗試。它讓生活變得如此輕鬆。

我最喜歡的是

學說ORM - http://www.doctrine-project.org/

ofcourse有許多其他人也一樣。 PropelRedbeanPHP

+0

我希望這是簡單的:(。問題是,應用程序已經或多或少地運行和寫入。過去它只是爲一個公司,但他們想要擴大它的所有辦公室:( –

1

我會用SQL Server隱式支持的複製來解決這個問題。複製允許您在系統數據庫(發佈者)中發佈某些表,並訂閱來自一個或多個客戶數據庫(訂戶)的數據更改。由於您只是向一個方向推送數據,並且鏡像某些表和系統數據庫,因此這對您很有幫助。

您可以設置SSMS的複製。在對象資源管理器中展開服務器下的複製分支,右鍵單擊「本地發佈」,然後選擇創建發佈。該向導將指導您完成發佈過程。對訂閱執行相同的操作,併爲每個客戶數據庫創建訂閱。

由於您有很多客戶數據庫,因此使用t-sql創建訂閱,然後在所有目標數據庫中複製該代碼將是值得的。有關如何執行此操作的說明,請參閱http://msdn.microsoft.com/en-us/library/ms147346.aspx

+0

謝謝你 –

相關問題