2011-03-29 45 views
1

我想構建一個小型.net應用程序,它可以使用相同的數據更新多個數據庫。 這將是某種自動化的應用。我有一些想法,但在開始開發之前,我正在尋找高級人工智能的一些想法。請分享您的觀點。單個應用程序中的多個數據庫更新

感謝您的幫助。謝謝 !!

+1

每個數據庫是否包含相同的技術,例如所有的SQL服務器,MySQL的Oracle?還是他們有可能會有所不同? – Rob 2011-03-29 11:19:56

+0

他們可以是不同的.. – Abhi9 2011-03-29 11:25:01

回答

0

從低層次來看,它應該枚舉所有目標數據庫並保存更改。

從架構的角度來看,您應該考慮代理設計模式的使用。因此,您將使用抽象IDatabase在您的應用程序,但會隨時從代理切換到單數據庫實現:

// database abstraction 
interface IDatabase 
{ 
    void SaveSomeData(IData data); 
} 

// example of implementation 
class SQLDatabase : IDatabase 
{ 
    public SQLDatabase(string connection) 
    {...} 

    abstract void SaveSomeData(IData data) 
    { 
     // establish db connection using given connection and run sql queries against it. 
    } 
} 

// proxy which can save data to several databases. 
class DatabaseSaver : IDataBase 
{ 
    private IDatabase[] _databases; 

    public DatabaseSaver(IDatabase[] databases) 
    { 
     _databases = databases; 
    } 

    void SaveSomeData(IData data) 
    { 
     foreach(var db in _databases) 
      db.SaveSomeData(data); 
     // TODO: error handling situations are omitted. 
    } 
} 

我希望這有助於!

+0

謝謝Tengiz ..我得到的設計,我需要遵循..感謝那,但正如你從低層次說..是代碼將像數據庫連接,運行查詢等..我們可以有一些可重用性或遵循的任何通用指南 – Abhi9 2011-03-29 12:45:27

+0

通常不會有很多可重用性/常見的東西,因爲不同的數據庫對於相同的數據甚至可能有不同的方案。如果你剛剛創建數據庫,那麼你可以擁有它們的通用規則,具有完全相同的方案等;但是如果按照我提供的模式進行操作,則完全不需要。只要確保任何不常見的方案/數據庫都有自己的實現(與我的示例中非常一般的SQLDatabase類不同)。可能有像LocalSQLDatabase,RemoteOracleDatabase,MyAccessFileDatabase等實現。全部由你決定。 – Tengiz 2011-03-29 13:21:46

0

您可以使用數據集

這些可以被序列化,然後應用到另一個數據庫。假設所有目標數據庫都同步,這應該沒有太多問題。儘管如此,您將不得不使用存儲過程和其他「交互式」數據庫功能。

本質上,您將在離線模式下使用數據集,並稍後將更改應用到'a'數據庫。重複一遍,你會更新'the'數據庫。

注意,你最有可能更好一些DB-級複製服務(MySQL和PostgreSQL,甲骨文,SQLServer的都支持這一種方式或其他)

+0

感謝Sehe的answeres,但你的意思是一天創建數據集,並通過使用序列化(XML)將其轉換爲不同的形式和飼料到另一個數據庫。實際上,所有這些數據庫結構都會有所不同,我也無法理解這一行「請注意,最有可能通過某些數據庫級複製提供更好的服務(Mysql,Postgresql,Oracle,SQLServer都以這種或那種方式支持這一點)」您能否詳細說明在該PLZ .. – Abhi9 2011-03-29 11:34:08

相關問題