2010-03-10 268 views
1

在MS-SQL Server 2008上有一個數據庫,它逐年增長很多。保存數據庫歷史

我想要做的是:獲取一些數據並存儲在一個XML文件中,並將該文件存儲在一個表中,在同一個數據庫中。

這是個好主意嗎?你有什麼主意嗎?

謝謝。

+0

基本上你想要達到什麼目的?它是爲了節省磁盤空間嗎? – hallie 2010-03-10 13:04:01

+0

是的,這是爲了節省一些磁盤空間 – rpf 2010-03-10 14:37:05

回答

2

的標準方法是建立一個新的數據庫(可能在不同的機器上),這將是你存檔數據庫和調度運行存儲過程的記錄移到存檔數據庫(僅記錄早說2年爲例或適合您的業務問題)。您將不得不復製表格的結構並保持兩個數據庫同步。你可以在你的sp中只包含最大的表,通常只有少數表會導致問題。

這樣,您仍然可以以適當的方式訪問您的歸檔數據並對其運行查詢。將數據存儲在數據庫中的xml對我來說不是一個好主意,因爲如果您需要舊數據,您將遇到困難時期。它也會給你帶來巨大的磁盤空間。

+1

+1,關鍵點:'有更好的方法,使用不同的數據庫','以XML存儲使得你的數據變得困難'並且'XML將使用更多的磁盤空間' – 2010-03-10 13:51:20

+0

如果我在存儲到數據庫之前壓縮XML文件會怎麼樣?更高效嗎? – rpf 2010-03-10 14:44:08

+0

數據存儲會更好,但如果您需要返回數據,則會變成噩夢。我認爲沒有理由這樣做。 – anthares 2010-03-10 14:47:37

0

XML本質上是一種詳細的數據存儲方式,而不是本地存儲在表列/行結構中的方式。

例如,假設只存儲用戶的一個簡單的表...

<Users> 
    <User> 
    <UserID>1</UserID> 
    <Name>Joe Smith</Name> 
    <DOB>24.02.1973</DOB> 
    </User> 
    <User> 
    <UserID>2</UserID> 
    <Name>Joleen Smith</Name> 
    <DOB>13.10.1962</DOB> 
    </User> 
    ... 
    ... 

你會好起來使您的架構的副本,並導出歸檔數據從這個第二個副本。這樣,你仍然可以查詢它,如果它是XML,那麼你將無法做到(容易)。

+0

儘管我同意XML比僅以常規行/列存儲數據需要更多空間,但數據庫不僅僅存儲所有冗長的重複性XML標記。如果您要在數據庫文件上使用十六進制編輯器並查看一些XML數據,則會看到它正在使用某種編碼方案來節省一些空間。 – 2010-03-10 13:58:01

+0

有意思的是,我忘記了SQL2008 SQL數據類型,也沒有意識到使用它可以減少數據佔用量。好喊。但是,我的建議仍然是一樣的,不要使用XML,爲歸檔數據使用單獨的DB架構/副本。 – CResults 2010-03-10 14:39:28