2010-02-19 47 views
1

我正在考慮將登臺表和存儲過程更新爲他們自己的模式。這樣,當從SomeTable將數據導入數據倉庫時,我會運行一個Initial.StageSomeTable過程,將數據插入到Initial.SomeTable表中。通過這種方式,所有處理Initial初始化的過程和表都被分組在一起。然後,我會爲ETL的該階段提供驗證架構等。使用用戶模式對ETL臨時表進行分組?

這似乎比嘗試唯一命名所有這些非常相似的表格更清晰,因爲每個表在整個暫存過程中都會有多個本身的實例。

問題:是否正在使用用戶模式將表/ procs/views分組在一起在MS SQL Server中適當使用用戶模式?或者用戶模式應該用於安全性,例如將對象的權限組合在一起?

回答

1

這實際上是一個推薦的做法。看看Project Real微軟Business Intelligence ETL Design Practices。你會發現(從第一個鏈接下載文檔),他們使用了很多模式來對倉庫中的對象進行分組和標識。

除了dbo和etl之外,他們還使用admin,audit,part,olap等等。

1

我認爲它足夠合適,它並不重要,如果你喜歡,你可以使用另一個數據庫,這實際上就是我們所做的。

我不確定你爲什麼想要一個驗證模式,但是你會在那裏做什麼?

+0

某些初始表中的列全部是varchar(2000),所以我將數據按照列的每列的基礎分類到正確類型的(int,bool等)驗證表中,確保轉換成功,記錄錯誤如果沒有,並且在暫存到驗證表中時檢查適用於單列的業務規則,然後在暫存後,我將針對涉及多列的更復雜業務規則的表運行查詢。瞭解哪些內容在每個字段的字段上驗證失敗很重要,因爲會有一些手動數據清理和重新提交。 – AaronLS 2010-02-19 21:36:36

1

你列出的兩個原因(目的/意圖,安全)是使用模式的有效理由。一旦你開始使用它們,你應該在引用一個對象時總是指定模式(儘管我很懶,並且從不指定dbo)。

我們使用的一個技巧是在幾個模式中的每一個模式中都有相同名稱的表,並結合表分區(SQL 2005及更高版本中可用)。將數據加載到第一個模式中,然後在將dbo分區交換爲表的「垃圾箱」模式副本後,將其驗證爲「交換」分區爲dbo。淨生產停機時間以秒爲單位進行計量,並全部包裝在聲明的交易中。