2

首先,讓我指出我讀過關於數據庫版本控制的所有文章,但這不完全是我正在尋找的東西,但我不能提出更好的標題(這裏「全部」這個詞是關鍵)。SQL Server中的完整數據庫版本

我有一個'編譯好的數據庫',它包含一個公共交通路線規劃器的所有類型的優化記錄和統計信息,它是通過另一個數據庫中的程序生成的。編譯的數據庫在活動時不會更改,用戶活動監視和緩存除外。有些表格包含2-3萬條記錄。

一旦輸入數據庫發生變化,此編譯的數據庫就會完全更新。因此,任何新的數據庫版本都不以任何方式與任何其他以前的版本交互。但是我希望單獨存儲每個版本,並且如果用戶需要,可以從程序中使用它(將它想像爲公共交通地圖的歷史記錄)。

唯一合理的方法是簡單地爲每個版本創建不同的物理數據庫,這既不硬也不錯,但是我問你是否知道任何機制對完整數據庫進行版本控制(而不僅僅是數據庫中的部分數據,比如其他職位都在問),目的是使整個事情更加合乎邏輯和乾淨。

我正在使用SQL Server 2012,但可能在服務器上它將是2008 R2。

如果您想將版本化數據存儲在同一個數據庫中(並且在每個表中添加VersionID列),請將其忽略掉,因爲在一個有2-300,000條記錄的表上,有10個版本(這些版本會在少於3個月)將意味着300多萬條記錄,其中只有30萬條將被使用,所以,絕對不會!

+0

VersionID列不會很好,因爲推測新版本可能有不同的模式。我可能會像你最初的預感一樣使用單獨的數據庫。 – 2012-08-15 21:00:43

+0

同意模式更改的評論。但爲什麼你認爲有一個版本列(因爲大小)是一個問題? – 2012-08-15 21:10:46

+0

僅僅是逆向的,如果模式在數據的不同「版本」之間是相同的,爲什麼不把它們都放在同一個數據庫中呢?你可以使用表分區。哎呀......即使他們有不同的模式,他們也可能都在同一個數據庫中,只要有不同的表名即可激活你的辣椒。對您的數據庫模型有什麼異議? – 2012-08-15 21:28:59

回答

2

我認爲多數據庫方法是好的。您可以嘗試執行存儲級重複數據刪除。這可能會大大減少存儲使用量。只要確保您創建新數據庫作爲備份並從舊數據庫恢復,以使它們大部分是字節相同的。

+0

重複數據刪除是一種減少已用空間的解決方案,但我認爲這不是一個真正的問題,因爲即使我擁有超過100,000條記錄的表格,它們主要是小型和smallint,所以數據庫不會超過50-100 mb。我主要感興趣的是將數據庫作爲單獨的實體「鏈接」,但共享一個共同的模式。 – Tiborg 2012-08-15 22:04:07

+0

好吧,這是不可能的跨數據庫。您可以將多個版本保存爲同一個表的單獨分區。您可以引入分區鍵「VersionID smallint not null」。如果您始終通過VersionID進行訪問,Perf將與現在一樣。 – usr 2012-08-15 22:07:25

相關問題