2010-07-22 18 views
4

我正在尋找升級實時程序ASP.NET C#,它需要非常頻繁更新的數據並將其從一個數據庫移到另一個數據庫。什麼更有效,SQL或平面文件訪問?

當前正在使用中間人應用程序,該應用程序從一個應用程序中拉取並使用SqlBulkCopy插入到另一個應用程序中。

讓源數據庫服務器編寫一個平面文件並讓中間人從該平面文件中收集是否更好?

或sql觸發器? 還是DTS?

任何建議將是偉大的!

感謝

+3

不理解ASP.NET和實時同一句話! – leppie 2010-07-22 07:34:29

+0

非常頻繁地以每毫秒,每秒,每分鐘爲單位..?平面文件永遠不會是答案。觸發器是'最快'(最低延遲)。你需要什麼延遲? – 2010-07-22 07:37:24

+0

當前應用程序每60秒訪問一次sql。 – 2010-07-22 07:50:45

回答

2

這真的取決於你傳遞數據和金額的數額,如果有的話,你正在轉換。 DTS/SSIS是您列出的最具擴展性和功能豐富的選項。

對您的期望是什麼樣的負載?你在做複雜的轉變嗎?如果你有資源來使用SSIS,我會建議,因爲它會按照你想要的那樣擴展。

+1

我會理想地使用DTS/SSIS - 尤其是如果數據庫是SQL Server。這主要是因爲根據我的經驗,圍繞數據傳輸的邏輯有可能隨着時間的推移而變得複雜,並且SSIS是爲此目的而構建的。 – InSane 2010-07-22 07:38:08

+0

我正在移動大約250行,10列,大多是變種和日期時間 - 每60秒。 你認爲SSIS? - 我會調查。謝謝! – 2010-07-22 07:55:11

+0

在這種情況下,使用這麼小的數字,我只需編寫一個SQL查詢來完成這項工作,然後每60秒將其作爲一個SQL作業運行。 – 2010-07-22 16:01:26

1

你考慮過SQL Server Replication還是SSIS

+0

認爲是的,調查得當,沒有。 感謝您的提示,今天我會研究這些技術。 – 2010-07-22 07:54:15

2

閱讀和寫入平面文件更有效。但是,如果您想使用索引搜索和其他SQL功能,最好使用SQL。

+0

平面文件?那根本就不行,可以嗎?關於鎖定問題呢?爲什麼把它寫入磁盤,然後當整個情況在問題範圍內(即他有完全控制權)就必須再次讀取它?它如何更有效率? – 2010-07-22 07:51:47

+0

目前沒有索引或sql功能。逐字地收集x行x週期,然後轉儲到新服務器上。 如果SQL服務器可以使用存儲過程寫入平面文件 - 那麼我可以收集並轉儲到新盒子上? – 2010-07-22 07:53:27

+0

我認爲你應該提供更多信息。收集x週期意味着索引的使用。爲什麼在平面文件的情況下需要SQL過程? – Trurl 2010-07-22 08:07:47

2

據我所知,沒有與SQL服務器這樣做的三種不同的「標準」的方式:

  • Replication。通常用於使數據庫中的表與發佈者和訂閱者保持同步。
  • SSIS(以前稱爲DTS)。可以通過預定的工作自動執行。
  • Service Broker。新的孩子在塊。

這些機會都很好,比寫出一個平面文件和閱讀它更好,但它是確保(在您的環境中)測試和計算不同方法的唯一方法。

0

如果你喜歡寫C#並且不喜歡SSIS。你可以看看Rhino ETL作爲替代。 我發現它執行得非常快。

當您不需要時,平面文件似乎不必要,因爲您正在重新寫入磁盤。

相關問題