天天看點

IBM DB2關鍵特性解析:DB2分區特性

資料庫在大型企業及企業級應用中,面臨着越來越多的挑戰,尤其是随着資料量的不斷增長,大規模資料管理成為擺在企業及其資料庫管理人員面前的最大難題。企業中的資料量越來越大、類型越來越多且實時性越來越強,即所謂的大資料的3V特性(Volume、Variety、Velocity)。資料庫每天需要處理大量資料,這些資料可以達到幾十或幾百GB,甚至可以達到TB或PB級别,企業的經營決策又向資料庫提出了實時處理的要求。是以如何能夠快速、實時的處理大規模的資料成為解決企業資料庫難題的關鍵。

現階段,存儲媒體和資料處理技術發展迅速,湧現了大批新技術,但這些仍不能滿足企業資料快速增長的需求。為了加快企業資料讀寫操作和查詢操作的速度,資料庫分區技術應運而生。資料庫分區是一種實體資料庫設計技術,是将一個或多個資料庫表分布在兩台以及多台實體或者邏輯機器上,通過并行的方式對分布在多台機器上的資料庫表進行處理,進而實作對資料的快速處理。資料庫分區的主要目的是為了在特定的SQL操作中減少資料讀寫的總量以縮減響應時間。

通過資料庫分區技術可以提高對大容量資料的通路速度,對資料進行并行讀取,并且資料庫分區技術在一定程度上具有可擴充性。從架構上來看,資料庫分區可劃分為三種典型的架構:共享記憶體(Shared Memory)模式,共享磁盤(Shared Disk)模式以及無共享(Shared Nothing)模式。本文将重點介紹無共享模式的DB2資料庫的分區特性,以及DB2與Oracle資料庫分區特性的比較。

  DB2資料庫分區特性——DPF

  DB2的企業版提供的資料庫分區功能,即DPF(Data Partitioning feature),這一功能主要用來為大規模資料處理提供支援。DB2資料庫分區采用Share-nothing體系結構,資料庫在一個非共享的環境中被分解為獨立的分區,每個分區都具有自己的資源,例如記憶體、CPU和磁盤以及自己的資料、索引、配置檔案和事務日志。資料庫分區有時稱為節點或資料庫節點,每個節點具有獨立處理單一任務的能力,每個子任務處理一部分資料,分區間資料通過高速網絡進行互動。

  DB2 DPF的擴充性較好,通過增加節點資源即可線性擴充節點。簡單來說,它相當于将一個大的資料庫分成多個小的資料庫,而每一個小資料庫分區擁有自己的一部分資料,同時達到節點同時并發的高效率處理能力。DPF是一種跨多個彼此合作的執行個體,以建立單個大型資料庫伺服器的技術。這些執行個體既可以位于一個伺服器中,也可以跨多個實體機器。

DB2 DPF是基于并行性的體系架構,這裡的并行包括在節點之間的并行,以及在節點之内分區的并行;查詢語句之間的并行,以及查詢語句内部的并行等。在性能方面,采取分而治之的政策,沒有限制的規模。在編譯器方面,采用基于開銷的優化器和查詢重寫器,SQL和實用工具完全平行運作。除此之外,DPF還根據負載動态分流,同時支援異步I/O和平行I/O等。

  DB2 DPF及其他分區特性的比較

  IBM DB2的分區特性包括表分區(Table Partition)、多元聚類(MDC)和資料庫分區特性(DPF)。具體對比如下表:

CREATE TABLE 語句中的子句

 DB2 特性名稱

DISTRIBUTE BY HASH

 DPF —— 資料庫分區特性

ORGANIZE BY DIMENSION

 MDC —— 多元聚類

PARTITION BY RANGE

 TP —— 表分區

DB2 特性名稱

 一部分的名稱

 用于分區資料的列

 其他術語

資料分區特性(Data Partitioning Feature,DPF)

 資料庫分區

 分布鍵(distribution key)

 在之前的版本中,分布鍵被稱作分區鍵

多元聚類(Multidimensional Clustering,MDC)

 單元格,由一些塊組成

 維

 塊索引

表分區(TP)

 資料分區

 表分區鍵

特性

 特性如何組織資料

 優點

DPF

 将行均勻地分布在多個資料庫分區上

 可伸縮性 —— 随着資料庫的增長增加計算資源(也就是資料庫分區)

MDC

 将在多元上具有近似值的行放在表中相同的實體位置,即所謂的塊

 查詢性能 —— 組織資料的方式有利于獲得更快的檢索速度,對于由多個謂詞指定範圍的查詢尤其有效

TP

 将所有行放在同一個資料分區的一個指定範圍的維中

 資料移動 —— 通過添加和删除整個資料分區,可以增加和删除大量資料

 适合的表特征

 事實表的特征

 大型表 —— 大到無法僅依靠單獨一組 CPU 和 I/O 通道來處理

 事實表是最大的資料庫表。它們常常包含數億行資料,有時候甚至包含數千億行資料

 結果集傳回在多個維上具有近似值的行的查詢

 事實表(以及通常所說的資料倉庫)是為支援這種類型的查詢而設計的

 這種類型的表:周期性地添加大量資料,然後在資料到期後又删除大量資料

 在事實表中,常常是每天都添加新資料。通常每月或每個季度删除過時的資料

分區特性設計決定

 經驗法則

DPF —— 用作分布鍵的列

 首選是具有很多不同值的列

MDC —— 用作 MDC 維的列

 一種典型的設計是選擇一個表示日期的列,再加上 0 到 3 個其他列,例如 region 和 product_type

TP —— 用作表分區鍵的列和分區的數量

 選擇一個基于時間的列。定義與每次轉出的資料量相符的分區

DPF 是最老的特性,通過它可以将資料庫分成多個資料庫分區。每個資料庫分區有它自己的一組計算資源,包括CPU和存儲。MDC是在DB2 Version 8中引入的,通過它可以在實體上将在多元上具有類似值的行聚合在一起放在磁盤上。這種聚合能為常見分析性查詢提供高效的I/O,提高檢索資料的效率。TP是在DB2 9中引入的,與MDC類似,它也可以将具有近似值的行存儲在一起。TP 不同于其他特性的優勢在于為表添加或删除大量資料這個方面,即轉入和轉出。

  資料庫分區、表分區和MDC能同時應用在一個設計中。要部署大型應用程式,最好在同一個資料庫設計中實作資料庫分區、表分區和MDC,以滿足應用的多樣化需求。可以應用資料庫分區獲得擴充性,并確定在邏輯分區之間均勻分布資料;表分區可以友善查詢分區消除和資料轉出;MDC可以用來提高查詢性能和友善轉入資料。

  DB2分區特性與Oracle的比較

  DB2和Oracle所支援的分區特性既有相似之處,也有一定差別。除了Oracle不支援的MDC以外,其他功能類似,隻是文法上有所差別。具體對比如下表:

Oracle分區

 DB2分區

 Oracle 10g文法

 DB2 V9文法

區間分區

(Range Partitioning)

 表分區

(Table Partitioning)

 PARTITION BY

RANGE

哈希分區

(Hash Partitioning)

(Database Partitioning)

HASH

 DISTRIBUTE BY

清單分區

(List Partitioning)

 帶生成清單分區

(Table Partitioning

With Generated Column)

LIST

不支援

 多元叢集

(Multidimensional

clustering)

 無

 ORGANIZE BY

DIMENSION

以資料庫分區為例,DB2的資料庫分區特性采用Share-nothing架構,這種架構允許多個資料庫分區在一起并行工作來處理工作負載。在Oracle中,使用Share-disk架構。那麼這兩種架構有何差別呢?Share-nothing是指每個CPU都有私有記憶體區域和私有磁盤空間,而且兩個CPU不能通路相同磁盤空間,CPU之間的通訊通過網絡連接配接。而Share-disk是每個CPU使用自己的私有記憶體區域,通過内部通訊機制直接通路所有磁盤系統。這是DB2可以增加實體的partition來給資料庫擴容的原因,也是DB2與Oracle分區的最大差別。

如下所示,是DB2中建立資料庫分區表partition_table的語句,其中選擇partition_date字段作為分區鍵:

  CREATE TABLE partition_table

  (partition_date date NOT NULL,

  partition_data VARCHAR(20) NOT NULL

  )

  IN tbsp_parts

  DISTRIBUTE BY HASH (partition_date);

Oracle也支援資料庫分區特性,文法不同也略有。如下所示,使用PARTITION BY HASH來建立資料庫分區:

  CREATE TABLE hash_table

  (

  hash_part date,

  hash_data varchar2(20)

  PARTITION BY HASH(hash_part)

  (partition p1 tablespace tbsp1,

  partition p2 tablespace tbsp2

  );

該語句表示建立了hash_table表,此表按照hash_part字段進行哈希分區,每個分區以循環的方式放置在表空間tbsp1和tbsp2中。

  總結

  本文介紹了IBM DB2資料庫的分區特性:資料庫分區(DPF)、多元聚類(MDC)和表分區(Table Partition),及其内部的差別與聯系,以及DB2分區特性與Oracle等價功能之間的對比。相信通過本文讀者能夠對DB2分區特性有更深入的認識。如果想了解更多有關DB2特性的解析,請關注後續文章。

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/800157,如需轉載請自行聯系原作者