2013-02-20 52 views
0

我正在重新設計/升級工具。數據庫通信使用C++(非託管ADO)並連接到SQL Server 2005.ADO和Microsoft SQL數據庫備份和存檔

我對歸檔和備份/恢復技術有幾個疑問。

  1. 通常歸檔與備份/恢復不同。有人可以提供任何解釋我的鏈接。目前該解決方案使用bcp工具進行歸檔。我在代碼中看到很多對錶名的依賴。在選擇設計時我必須考慮哪些事情(考慮到我必須按下按鈕點擊備份/存檔,最大數據庫大小爲100mb)

  2. 將整個通信轉移到.net將是有什麼幫助?考慮很多ORM工具。所有的業務邏輯和用戶界面都在C#

  3. 什麼是驗證檔案數據的最佳方法?

PS:問題可能太高,但我沒有得到任何正確的鏈接來理解這一點。如果有人能回答,這將會非常有幫助。我可以提供更多細節!

在此先感謝!

回答

1

在100 MB上,我會說你應該不會在存檔上花太多時間,而只是使用傳統的備份策略。數據庫的大小非常小,歸檔過程相當複雜,收益甚微,因爲歸檔過程通常只與大型數據庫相關。

一般來說,數據庫術語的備份是一種在發生災難時(意外數據刪除,服務器崩潰等)提供可恢復性的方法。歸檔通常意味着您對數據進行分區。

歸檔的一個可能的目標是保持特定的數據可用於查詢,但無法修改它。在處理大量數據庫時,這是提高性能的極好方法,因爲只讀數據可以比「熱」數據更密集地索引。它還允許您將只讀數據移動到針對READ操作進行了優化的獨立RAID分區,而不必擔心典型的RDBMS IO。另外,通過從常規數據庫中刪除非活動數據意味着表中包含的數據大小會減少,這應該會提升整個系統的性能。

歸檔通常是出於法律原因。相關數據可能對業務不再重要,但IRS或銀行業務規則要求它在一段時間內可用。

使用SQL Server,您可以使用partitioning策略存檔數據。這通常涉及到根據哪些標準分割數據。一個例子可能是一個日期(即3年前的數據將被移到數據庫的歸檔部分)。在龐大的系統的情況下,根據地理標準(即,一個服務器上的美洲,另一個上的歐洲)分割數據也可能是有意義的。

回答您的問題:

1)請參見上述說明中 2寫的)這真的取決於升級的目標。將其移至.NET將使代碼得到管理,但對於業務來說有多重要?3)如果您確實決定進行分區,驗證它的工作原理可能包括對原始數據庫發出查詢,以查找包含用於分區的閾值之前和之後的值的數據,然後分割數據並重新發布之後進行查詢以驗證它是否仍然返回相同的記錄集。如果您將系統配置爲使用automatic sliding window,則還可以留意系統以確保數據將自動移至歸檔分區。

再說一次,如果100MB不是拼寫錯誤,我認爲你的數據庫太小而不能真正從存檔中受益。如果您的目標是加快速度,請將系統放在可將整個數據庫加載到RAM中的服務器上,或者使用SSD驅動器。

如果您出於法律或行政原因需要建立數據存檔,請分別進行水平表分區。這是一個非常直接的過程,主要由SQL Server自動處理。

希望這可以幫助你!

+0

感謝您的時間和答覆。這真的很好。我必須閱讀其中的一些概念。其中一些對我來說是新的。這真是一個很好的解釋。一旦我對這些事情中的一些事情非常清楚,我會回到你身邊! – user1687824 2013-02-20 09:59:56