2011-11-07 17 views
0

我接管了重新開發Web界面所使用的科學數據庫的任務,原始作者採用了「每個數據集表」方法,這種方法的擴展性不好,現在相當困難管理超過200個已創建的表。我花了相當多的時間試圖弄清楚如何討論這個問題,但是數據集包含不同的值,所以將它們組合成一個具有列定義模式的表是不合理的。在SQL Server中組合多個異構數據表的數據庫模型重構?

我已經探討了EAV,XML列的可能性,並且最終嘗試使用包含許多稀疏列的表格,因爲數據庫在SQL Server 2008上運行。數據庫管理員遇到了一些與我最近創建的稀疏列導致一些破壞他們的備份腳本,所以我再次懷疑是否沒有更好的方法來做到這一點。我知道EAV不會帶來體面的表現,而且我對XML數據類型的實驗也表現出糟糕的表現,這可能要歸功於某些表中的大量記錄。

這裏的總結:

  • 約200臺,其中大部分都含有浮標和小弦
  • 一些表有多達15000條記錄
  • 表模式是不相一致的幾列,因爲列取決於原始實驗數據中的樣本數量。
  • SQL Server 2008中

我會處理大多數這類數據在新的版本我開發的遺產,但我仍然需要能夠顯示它和查詢IT和我會而不必通過在我的存儲過程中動態指定表名,就像使用當前的多表方法一樣。有什麼建議麼?

+0

如果這主要是科學數據,是否大多數列是數字?另外,每個數據集的典型列數是多少?數據集中列的最大數量是多少? –

+0

dba遇到什麼問題?稀疏列不應影響備份,除非他們正在執行表副本或其他事情。 – SqlACID

+0

大多數列是浮動的,但也有一些短的字符串在這裏和那裏。每個表的列數從1到23不等。它們的備份失敗,因爲稀疏列上的索引不可壓縮。他們認爲他們處理了這個問題,現在由於某種其他原因他們認爲服務包可以修復,但這是其他方面的生產服務器,所以避免停機時間會很好。 –

回答

0

我建議第一步是通過視圖來合理化數據;試圖通過視圖將類似的數據集合到邏輯池中。

然後,您可以查看重構代碼以查看視圖,並查看Web平臺是否有效運行。從那裏你可以決定視圖結構是否有益,如果是這樣,請將物理數據合理化爲新表格。

以這種方式使用視圖的好處是,您應該能夠從視圖上的索引中剔除一些性能,並且還應該能夠更好地處理數據(據說,由於您是開發人員,在新版本中,它會建議你完全有能力理解問題領域)。

有200張表格作爲簡單的原始數據集,並且考慮到您認爲您的版本將會被接管,我可能會經過原型練習,看看您是否無法將視圖命名爲最終的表名將在V2中,這樣,如果您的新數據庫結構實際上可以正常工作,您也可以進行回溯測試。最後,對智者說一句話,當某人按照你所描述的方式構建了一個數據庫,而不看數據,並真正知道問題集;他們這樣做是有原因的。要麼是設計不好,要麼是現在出現在設計上的原因;你提出一致性是一個問題 - 尋找包裝數據,看看你可以做到一致。

祝你好運!