2013-05-02 84 views
0

我開發使用我的SQL數據庫的PHP應用程序,應用程序和數據庫託管同一服務器(客戶端服務器上)上。需要最佳的解決方案將數據插入到遠程數據庫

我們想跟蹤該數據庫的一些表格,爲此我們在我們的身邊創建了不同的服務器(供應商服務器)中的相同表格。

會是怎樣插入的最佳途徑,只要行被插入到客戶數據庫表在遠程端表中的行?

注:要插入的行一次可以是50000或50。

選項在我的面前:

1)要使用兩個連接,並且將在這兩個數據庫中插入行,但還需要時間,因爲我有大量插入行。

2)使用curl請求到遠程數據庫和行是在本地數據庫中插入後插入數據

回答

2

爲什麼不使用主/從複製和讓數據庫本身擔心保持同步。這將比手動軋製系統更加穩健。

http://dev.mysql.com/doc/refman/5.0/en/replication.html

+0

感謝您的建議,我剛與我的DBA討論了這個選項,但他表示使用主從複製將給予客戶端t用戶訪問我們的服務器,所以我們不能這樣做。 – Ekky 2013-05-02 13:44:26

0

,你可以設置你的服務器作爲從服務器到客戶端服務器(這將是主),複製客戶端服務器上的數據。

您也可以選擇只複製特定表或一個特定的數據庫。

這是很簡單的設置,聽起來像它會做你所需要的。

http://dev.mysql.com/doc/refman/5.0/en/replication.html

+0

感謝您的建議,我剛剛與我的DBA討論了這個選項,但他表示使用主從複製會讓客戶端用戶訪問我們的服務器,所以我們不能這樣做。 – Ekky 2013-05-02 13:45:05

1

使用複製聲音理想的解決方案,因爲其它叉評論。但是,如果不幸的是,這取決於需求。

如果客戶端應用程序可以等待這麼長時間直到50000或成功插入50行數據(如果行數爲50000,我認爲這需要多於幾秒鐘),那麼前面的兩個選項仍然有效。

但是,如果您需要發送HTTP響應返回給客戶端應用程序儘可能地快,那麼有可能是更好的解決方案。例如

  • 使用crond的或任何處理/守護進程準備一些異步工作進程您想
  • 其由客戶端應用程序創建的將存儲經由內存緩存,系統日誌或消息隊列/排隊記錄每一個http請求甚至使用文件(僅當磁盤I/O是沒有問題的)
  • 讓異步工人獲取/出隊的數據,並讓他插入50000點或50的數據發送
相關問題