SQL Server數據倉庫的基礎架構規划


問題

SQL Server數據倉庫具有自己的特征和行為屬性,有別去其他。從這個意義上說,數據倉庫基礎架構規划需要與標准SQL Server OLTP數據庫系統的規划不同。在本文中,我們將介紹在計划數據倉庫時應該考慮的一些事項。

解決

SQL Server 數據倉庫系統參數

數據倉庫本身有自己的參數,因此每個數據倉庫系統都有自己獨特的特性。在決定數據倉庫系統的基礎結構時,必須評估許多參數。在這些參數中,主要參數是數據量、報告復雜性、用戶、系統可用性和ETL。

數據量

正如你可能知道的,數據量是大數據的七個屬性之一。與事務系統不同,數據倉庫系統傾向於存儲歷史數據以及具有多個域和系統的數據。這意味着數據倉庫中的數據量將會很大,並且會快速增長。

報表復雜性

在數據倉庫的情況下,報表有四種類型:描述性、診斷性、預測性和說明性。數據倉庫是分析的框架,這意味着報告用戶應該有執行特別查詢的選項。此外,還有一些報表將使用具有不同類型連接的大量表和大量聚合。

通常,數據倉庫解決方案必須支持以下查詢類型的組合:

  • 簡單: 使用一個事實表和幾個維度表進行相對直接的Select 查詢。
  • 中等: 重復執行包含聚合或多個連接的查詢
  • 復雜: 具有復雜聚合、連接和計算的特殊查詢(ad-hoc)。此外,這類查詢還包含數據挖掘和預測分析

用戶數量

通常,數據倉庫的用戶數量少於事務系統。然而,由於大型查詢是在相當長的一段時間內出於分析目的而執行的,因此並發性是一個問題。

可用性

Sometimes, depending on the geography distribution of data warehouse users, there is a need to have operating system time slots. Also, planned down time and unplanned outages can affect Availability.

有時,根據數據倉庫用戶的地理分布,需要有操作系統的時差。此外,計划停機時間和意外停機也會影響可用性。

ETL

ETL (Extract-Transformation-Load):是數據倉庫的一個基本組件。對於一些數據倉庫,每日ETL就足夠了。實際上,大多數數據倉庫ETL都屬於這一類。有些數據倉庫在白天有幾個ETL作業,而其他ETL作業將在非高峰時間執行。在一些情況下,一些數據倉庫需要實時數據。

從這些參數可以看出,數據倉庫系統可以是這些參數的多個復雜性的組合。因此,很難判斷數據倉庫屬於哪一類。

下表包含這些不同規模的系統參數

Parameter \ Scale Small Medium Large
數據量 Less than 1 TB 1 to 10 TB More than 10 TB
報表復雜度 Simple – 60 % Medium – 30 % Complex – 10 % Simple – 50 % Medium – 40 % Complex – 10 % Simple – 20 % Medium – 50 % Complex – 30 %
用戶數量 100 Users 10 Concurrent users 1000 Users 100 – 200 concurrent users 1000 concurrent users
可用性 Typical business hours 1-2 hrs of down time 24x7
ETL One ETL per day Intra Day ETL Real Time Data

由於很難選擇數據倉庫的規模,通過查看上面的參數,您可以了解數據倉庫的規模。

負載類型

 

在分析數據倉庫的容量之后,下一步是分析數據倉庫的工作負載。數據倉庫的典型工作負載是ETL、數據模型和報告。

ETL

通常,ETL從事務系統、異構源中提取數據,並對其進行轉換,以適應數據倉庫這個分析平台。在提取階段,源系統將有IO和內存負載。由於不應該也不能中斷源系統,因此需要對提取進行適當的計划,以使其不會影響源系統。轉換通常發生在數據倉庫端。因為轉換需要更多的計算能力,這意味着CPU的消耗將隨着內存的使用而增加。數據的加載還需要數據倉庫系統上更多的IO。由於數據來自多個源,在ETL過程中,網絡帶寬通常是網絡管理員關心的問題。

Data 模型

在大多數技術中,會在數據倉庫之上創建一個額外的層,以提高報告和分析的性能。例如,對於SQL Server SSAS多維數據集,SSAS 扁平數據集,同時對於Oracle, Hyperion數據集是可用的。在這個層中,數據將從數據倉庫讀取並處理到數據模型層。在ETL之后,需要處理這些數據模型以保持數據同步。在這個模型層中,將存儲聚合的數據,因此數據模型的處理是高CPU和IO操作。此外,聚合是內存密集型操作。

數據倉庫結構分層

一圖勝千言

報表和分析

告和分析是最終用戶的端點。在報告的情況下,報告更有可能收集大量數據。如果報表正在使用數據模型,那么報表服務器端就會出現問題。在分析的情況下,如果使用數據挖掘算法,會消耗高CPU,因為數據挖掘算法消耗CPU。

此外,還有一些選項,如報表平台中的數據驅動訂閱和標准訂閱,特別是在SQL Server reporting Services (SSRS)的情況下。由於報告是寫到磁盤上的,如Word、Excel或PDF文件,IO的使用率可能相當高。

運維工作負載

除了數據倉庫平台上的典型操作之外,還需要完成其他維護任務。

重建索引

索引用於更好的數據檢索性能。由於對數據倉庫的寫操作較少,管理員可以選擇創建許多索引。此外,對於數據倉庫,可以創建columnstore索引。當存在這些索引時,需要重新構建索引,以避免索引碎片並提高總體性能。如前所述,數據倉庫中可能有大量的索引,數據量很大,因此在重建索引時,流程可能會消耗大量的CPU和IO。

數倉的索引與事務性的索引創建有很大不同,更多關注減少非聚集索引的方式。

備份

數據備份不是“必需的”,因為數據通常是從其他源系統生成的。備份也是“必需的”,如果需要,它可以幫助恢復,而不是從頭開始重建所有東西。由於數據倉庫通常具有大量的數據,因此備份會在系統上使用大量的CPU和IO。一般來講備份要注意歸檔和檔期當前數據的分區還原等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM