図面 (/)

技術 オンライン・シェアード・ナッシング・データベースを拡張するためのインクリメンタルで、かつ、連結された再分散

出願人 インターナショナル・ビジネス・マシーンズ・コーポレーション
発明者 クリフォード、オースティンフィッツサイモンズ、ギャレットシャリーニ、エンツォ
出願日 2014年12月9日 (4年10ヶ月経過) 出願番号 2016-538028
公開日 2017年3月16日 (2年7ヶ月経過) 公開番号 2017-507378
状態 特許登録済
技術分野 計算機におけるファイル管理 検索装置
主要キーワード 移動フェーズ 分離レベル シャード 大テーブル 推定コスト 分散モジュール マテリア 連結テーブル
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年3月16日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (16)

課題

オンラインシェアード・ナッシングデータベース中でデータを再分散する。

解決手段

シェアード・ナッシング・データベースは、複数の元のパーティション、および少なくとも1つの新しいパーティションを含む。システムは、元のパーティションおよび少なくとも1つの新しいパーティションにわたって再分散されることになる、元のパーティション中の2つ以上の連結されたテーブルを識別するための連結セット・アイデンティファイアであって、複数のデータ行を有する前記テーブルは、分散キーによって管理されるパーティション上にある、、連結セット・アイデンティファイアを含む。システムは、対応する新しいテーブルを新しいパーティション中で作成するためのテーブル・ファクトリを含む。システムは、チェック制約を使用して元のテーブルと新しいテーブルの両方のすべてのデータのUNION ALLビューを作成するためのビュー・クリエータであって、チェック制約は分散キーに基づく、ビュー・クリエータを含む。システムは、分散キー範囲にわたって区間ループを定義するためのカウンタを含む。システムは、元のテーブルから新しいテーブルへ、現在の分散キー区間にわたる各データ行のデータ移動を実施するためのデータ・ムーバを含む。システムは、UNION ALLビューが保存されるように各分散キー区間につきチェック制約を変更し、それにより連結およびデータ完全性が確実に維持されるようにするためのデータ・チェンジャを含む。システムは、すべてのデータが新しいテーブルに移動されるように、すべての分散キー区間が処理されるまで次の分散キー区間にループ・バックするためのループ・フィニッシャであって、それにより、連結およびデータ完全性が維持され、データベースに対して実施される照会にとって再分散がトランスペアレントであり、再分散中にテーブルが読み書きのために完全に利用可能である、ループ・フィニッシャを含む。

概要

背景

シェアード・ナッシングデータベース(SN)では、データは、パーティションシャード(shard)としても知られる)に分割され、ローカルディスクストレージメモリ中央処理装置(CPU)とを有する1つまたは複数のノードまたは個別マシンにわたって配置される。パーティション、ノード、およびマシンは、高速相互接続を介して相互に接続され、この高速相互接続を介して、すべてのデータベースパーティション間通信が円滑化される。各パーティションは、高速相互接続を介する以外には、他のパーティション上およびノード上のデータへの直接的なアクセスを有しない。通常、構成ファイルによって自動的に定義される、1ノード当たり固定数のパーティションがある。

SNデータベース・マネージャは、パーティション化されたデータベースの複数のデータベースパーティションにわたってデータを分配する際に、大きなフレキシビリティを可能にする。ユーザは、分散キー宣言することによって、どのように自分のデータを分散するかを選ぶことができ、また、データベースパーティショングループと、データの記憶先となるテーブル空間とを選択することによって、どのデータベースパーティションおよびいくつのデータベースパーティションにわたって自分のテーブル・データを分配できるかを決定することができる。加えて、分散マップ更新可能)が、データベースパーティションに対する、ハッシュされた分散キー値のマッピングを指定する。これにより、大きいテーブルの場合にはパーティション化されたデータベースにわたるフレキシブルな作業並列化を可能にしながら、より小さいテーブルが1つまたは少数のデータベースパーティションに記憶されることをアプリケーション設計者が選ぶことを可能にする。

パーティション化されたデータベースでは、分散キーを使用して、テーブル・データおよび索引データが1組のデータベースパーティションにわたって分散される。パーティション化されたデータベースのパーティショングループ上のテーブル空間中のテーブルに対する分散キーは、CREATETABLEステートメントまたはALTERTABLEステートメント中で指定される。行は次のようにデータベースパーティションに配置される。すなわち、ハッシングアルゴリズム(データベースパーティション化機能)が、分散キーのすべての列に適用され、この結果、分散マップ索引値が生成される。そして、分散マップ中のこの索引値(IndexValue)におけるデータベースパーティション番号が、行の記憶先となるデータベースパーティションを識別する。

図1の例示的な分散マップおよび分散キーを参照すると、分散キーは、分散マップ中のパーティション(この例ではp5)にマッピングする、データの行に対する1つまたは複数の列の内容(この例ではc1およびc3)である。このパーティションは、ハッシュされた分散キー値2によって分散マップ索引を介して識別される。

データベース・マネージャは、部分的デクラスタリングサポートする。これは、テーブルを、システム中のデータベースパーティションのサブセット(すなわちデータベースパーティショングループ)にわたって分散させることができることを意味する。テーブルは、システム中のすべてのデータベースパーティションにわたって分散されなければならないわけではない。データベース・マネージャは、結合または副照会のためにアクセスされているデータが、同じデータベースパーティショングループ中の同じデータベースパーティションに位置するときを認識する能力を有する。これは、テーブル連結(collocation)として知られる。同じ分散キー値を有する、連結されたテーブル中の行は、同じデータベースパーティション上に位置する。データベース・マネージャは、データが記憶されているデータベースパーティションにおいて結合または副照会処理を実施することを選ぶことができる。これは、非常に大きな性能利点を有する。

連結されたテーブルは、同じデータベースパーティショングループ中になければならず、同じ分散マップを有しなければならない。連結されたテーブルは、列の数が同じである分散キーを有しなければならない。連結されたテーブルは、分散キーの対応する列がパーティション互換(例えば互換性のあるデータ型)でなければならない。連結されたテーブルは、同じデータベースパーティション上で定義される単一のデータベースパーティショングループ中になければならない。

データ・ウェアハウスでは、通常、ファクト・テーブルとその最大のディメンション・テーブルとが連結される。例えば、図2に、周知のベンチマーキング作業負荷における2つの最大テーブルの結合を描く。この例では、ORDERSテーブル(ディメンション・テーブル)とLINEITEMテーブル(ファクト・テーブル)の両方が、orderkey列上で分散されており、この2つのテーブルにわたる結合操作は、含まれているパーティショングループの各パーティション上でローカルに処理され、その結果、大きな性能確保がもたらされる。

概要

オンライン・シェアード・ナッシング・データベース中でデータを再分散する。シェアード・ナッシング・データベースは、複数の元のパーティション、および少なくとも1つの新しいパーティションを含む。システムは、元のパーティションおよび少なくとも1つの新しいパーティションにわたって再分散されることになる、元のパーティション中の2つ以上の連結されたテーブルを識別するための連結セット・アイデンティファイアであって、複数のデータ行を有する前記テーブルは、分散キーによって管理されるパーティション上にある、、連結セット・アイデンティファイアを含む。システムは、対応する新しいテーブルを新しいパーティション中で作成するためのテーブル・ファクトリを含む。システムは、チェック制約を使用して元のテーブルと新しいテーブルの両方のすべてのデータのUNION ALLビューを作成するためのビュー・クリエータであって、チェック制約は分散キーに基づく、ビュー・クリエータを含む。システムは、分散キー範囲にわたって区間ループを定義するためのカウンタを含む。システムは、元のテーブルから新しいテーブルへ、現在の分散キー区間にわたる各データ行のデータ移動を実施するためのデータ・ムーバを含む。システムは、UNION ALLビューが保存されるように各分散キー区間につきチェック制約を変更し、それにより連結およびデータ完全性が確実に維持されるようにするためのデータ・チェンジャを含む。システムは、すべてのデータが新しいテーブルに移動されるように、すべての分散キー区間が処理されるまで次の分散キー区間にループ・バックするためのループ・フィニッシャであって、それにより、連結およびデータ完全性が維持され、データベースに対して実施される照会にとって再分散がトランスペアレントであり、再分散中にテーブルが読み書きのために完全に利用可能である、ループ・フィニッシャを含む。

目的

米国特許出願公開第2009/0319581(A1)号
米国特許出願公開第2011/0295907(A1)号
米国特許出願公開第2012/0246194(A1)号






難題は、新しいノードの追加を通してSNパーティション化されたデータベースを拡張する間に、性能を維持することである

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

オンラインシェアード・ナッシングデータベース中でデータを再分散するためのシステムであって、前記シェアード・ナッシング・データベースが複数の元のパーティションおよび少なくとも1つの新しいパーティションを含み、前記システムが、前記元のパーティションおよび前記少なくとも1つの新しいパーティションにわたって再分散されることになる、前記元のパーティション中の2つ以上の連結されたテーブルを識別するための連結セット・アイデンティファイアであって、複数のデータ行を有する前記テーブルは、分散キーによって管理されるパーティション上にある、前記連結セット・アイデンティファイアと、対応する新しいテーブルを前記新しいパーティション中で作成するためのテーブル・ファクトリと、チェック制約を使用して元のテーブルと前記新しいテーブルの両方のすべてのデータのUNIONALビューを作成するためのビュー・クリエータであって、前記チェック制約は前記分散キーに基づく、前記ビュー・クリエータと、前記分散キーの範囲にわたって区間ループを定義するためのカウンタと、前記元のテーブルから前記新しいテーブルへ、現在の分散キー区間にわたる各データ行のデータ移動を実施するためのデータ・ムーバと、前記UNIONALLビューが保存されるように各分散キー区間につき前記チェック制約を変更し、それにより連結およびデータ完全性が確実に維持されるようにするためのデータ・チェンジャと、すべてのデータが前記新しいテーブルに移動されるように、すべての分散キー区間が処理されるまで次の分散キー区間にループ・バックするためのループ・フィニッシャであって、それにより、連結およびデータ完全性が維持され、前記データベースに対して実施される照会にとって再分散がトランスペアレントであり、再分散中にテーブルが読み書きのために完全に利用可能である、前記ループ・フィニッシャと、を備える、システム。

請求項2

前記UNIONALLビューの行移動機能を使用して前記元のテーブルと前記新しいテーブルとの間でデータが再配置される、請求項1に記載のシステム。

請求項3

前記現在の区間中の所定の行に対するインジケータ列を更新することで、前記行移動機能が開始され、前記行が前記元のテーブルから前記新しいテーブルに移動される、請求項2に記載のシステム。

請求項4

関連する新しいパーティションマップを伴う、既存のパーティションと前記新しいパーティションとに及ぶ新しいパーティショングループであって、前記関連する新しいパーティションマップでは、個々のパーティションが、移動されている前記データの送出側または受信側のいずれかとして定義される、請求項1ないし3のいずれかに記載のシステム。

請求項5

前記新しいパーティショングループが、前記新しいパーティションを組み込むように修正された、既存のパーティショングループで実行されるデータ定義を含む、請求項4に記載のシステム。

請求項6

連結されたテーブルの2つ以上のセットが、前記既存のパーティショングループ内の2つ以上のパーティション上に位置する、請求項1ないし5のいずれかに記載のシステム。

請求項7

すべての区間がほぼ同じ量のデータを含むように、データベース・カタログからの統計的なデータ再分散を使用して前記区間が重み付けされ得る、請求項1ないし5のいずれかに記載のシステム。

請求項8

未完了のデータが性能に及ぼすどのような影響も最小限に抑えるために、各区間がテーブル全体に対して小さい、請求項1ないし7のいずれかに記載のシステム。

請求項9

行が、前記元のテーブルから前記新しいテーブルにインクリメンタルに移動され、バッチでコミットされる、請求項1ないし8のいずれかに記載のシステム。

請求項10

前記現在の分散キー区間で挿入された新しい行が、前記新しいテーブルに充てられる、請求項1ないし9のいずれかに記載のシステム。

請求項11

オンライン・シェアード・ナッシング・データベース中でデータを再分散する方法であって、前記シェアード・ナッシング・データベースが複数の元のパーティションおよび少なくとも1つの新しいパーティションを含み、前記方法が、前記元のパーティションおよび前記少なくとも1つの新しいパーティションにわたって再分散されることになる、前記元のパーティション中の2つ以上の連結されたテーブルを識別するステップであって、複数のデータ行を有する前記テーブルは、分散キーによって管理されるパーティション上にある、前記連結セット・アイデンティファイアと、対応する新しいテーブルを前記新しいパーティション中で作成するステップと、チェック制約を使用して元のテーブルと前記新しいテーブルの両方からのすべてのデータのUNIONALLビューを作成するステップであって、前記チェック制約は前記分散キーに基づくものである、前記作成するステップと、前記分散キーの範囲にわたって区間のループを定義するステップと、前記元のテーブルから前記新しいテーブルへ、現在の分散キー区間にわたる各データ行のデータ移動を実施するステップと、前記UNIONALLビューが保存されるように各分散キー区間につき前記チェック制約を変更し、それにより連結およびデータ完全性が確実に維持されるようにするステップと、すべてのデータが前記新しいテーブルに移動されるように、すべての分散キー区間が処理されるまで次の分散キー区間にループ・バックするステップであって、それにより、連結およびデータ完全性が維持され、前記データベースに対して実施される照会にとって再分散がトランスペアレントであり、再分散中にテーブルが読み書きのために完全に利用可能である、前記ループ・バックするステップと、を含む方法。

請求項12

前記UNIONALLビューの行移動機能を使用して前記元のテーブルと前記新しいテーブルとの間でデータが再配置される、請求項11に記載の方法。

請求項13

前記現在の区間中の所定の行に対するインジケータ列を更新することで、前記行移動機能が開始され、前記行が前記元のテーブルから前記新しいテーブルに移動される、請求項12に記載の方法。

請求項14

関連する新しいパーティションマップを伴う、既存のパーティションと前記新しいパーティションとに及ぶ新しいパーティショングループを作成するステップをさらに含み、前記関連する新しいパーティションマップでは、個々のパーティションが、移動されている前記データの送出側または受信側のいずれかとして定義される、請求項11ないし13のいずれかに記載の方法。

請求項15

前記新しいパーティショングループが、既存のパーティショングループのデータ定義を抽出すること、前記新しいパーティションを組み込むように前記データ定義を修正すること、前記修正されたデータ定義を実行すること、によって作成される、請求項14に記載の方法。

請求項16

連結されたテーブルの2つ以上のセットが、前記既存のパーティショングループ内の2つ以上のパーティション上に位置する、請求項11ないし15のいずれかに記載の方法。

請求項17

すべての区間がほぼ同じ量のデータを含むように、データベース・カタログからの統計的なデータ再分散を使用して前記区間が重み付けされ得る、請求項11ないし15のいずれかに記載の方法。

請求項18

未完了のデータが性能に及ぼすどのような影響も最小限に抑えるために、各区間がテーブル全体に対して小さい、請求項11ないし17のいずれかに記載の方法。

請求項19

行が、前記元のテーブルから前記新しいテーブルにインクリメンタルに移動され、バッチでコミットされる、請求項11ないし18のいずれかに記載の方法。

請求項20

前記現在の分散キー区間で挿入された新しい行が、前記新しいテーブルに充てられる、請求項11ないし19のいずれかに記載の方法。

請求項21

オンライン・シェアード・ナッシング・データベース中でデータを再分散させるためのコンピュータプログラム製品であって、コンピュータ可読プログラム・コードが組み入れられたコンピュータ可読ストレージ媒体を備え、前記コンピュータ可読プログラム・コードが、請求項11ないし19のいずれかを実施するように構成された、コンピュータ・プログラム製品。

請求項22

コンピュータ可読媒体に記憶され、ディジタル・コンピュータの内部メモリにロード可能な、コンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたときに請求項11ないし19のいずれかを実施するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。

技術分野

0001

本発明は、オンラインシェアード・ナッシングデータベース拡張に向けたインクリメンタルで、かつ、連結された再分散のための方法および装置に関する。

背景技術

0002

シェアード・ナッシング・データベース(SN)では、データは、パーティションシャード(shard)としても知られる)に分割され、ローカルディスクストレージメモリ中央処理装置(CPU)とを有する1つまたは複数のノードまたは個別マシンにわたって配置される。パーティション、ノード、およびマシンは、高速相互接続を介して相互に接続され、この高速相互接続を介して、すべてのデータベースパーティション間通信が円滑化される。各パーティションは、高速相互接続を介する以外には、他のパーティション上およびノード上のデータへの直接的なアクセスを有しない。通常、構成ファイルによって自動的に定義される、1ノード当たり固定数のパーティションがある。

0003

SNデータベース・マネージャは、パーティション化されたデータベースの複数のデータベースパーティションにわたってデータを分配する際に、大きなフレキシビリティを可能にする。ユーザは、分散キー宣言することによって、どのように自分のデータを分散するかを選ぶことができ、また、データベースパーティショングループと、データの記憶先となるテーブル空間とを選択することによって、どのデータベースパーティションおよびいくつのデータベースパーティションにわたって自分のテーブル・データを分配できるかを決定することができる。加えて、分散マップ更新可能)が、データベースパーティションに対する、ハッシュされた分散キー値のマッピングを指定する。これにより、大きいテーブルの場合にはパーティション化されたデータベースにわたるフレキシブルな作業並列化を可能にしながら、より小さいテーブルが1つまたは少数のデータベースパーティションに記憶されることをアプリケーション設計者が選ぶことを可能にする。

0004

パーティション化されたデータベースでは、分散キーを使用して、テーブル・データおよび索引データが1組のデータベースパーティションにわたって分散される。パーティション化されたデータベースのパーティショングループ上のテーブル空間中のテーブルに対する分散キーは、CREATETABLEステートメントまたはALTERTABLEステートメント中で指定される。行は次のようにデータベースパーティションに配置される。すなわち、ハッシングアルゴリズム(データベースパーティション化機能)が、分散キーのすべての列に適用され、この結果、分散マップ索引値が生成される。そして、分散マップ中のこの索引値(IndexValue)におけるデータベースパーティション番号が、行の記憶先となるデータベースパーティションを識別する。

0005

図1の例示的な分散マップおよび分散キーを参照すると、分散キーは、分散マップ中のパーティション(この例ではp5)にマッピングする、データの行に対する1つまたは複数の列の内容(この例ではc1およびc3)である。このパーティションは、ハッシュされた分散キー値2によって分散マップ索引を介して識別される。

0006

データベース・マネージャは、部分的デクラスタリングサポートする。これは、テーブルを、システム中のデータベースパーティションのサブセット(すなわちデータベースパーティショングループ)にわたって分散させることができることを意味する。テーブルは、システム中のすべてのデータベースパーティションにわたって分散されなければならないわけではない。データベース・マネージャは、結合または副照会のためにアクセスされているデータが、同じデータベースパーティショングループ中の同じデータベースパーティションに位置するときを認識する能力を有する。これは、テーブル連結(collocation)として知られる。同じ分散キー値を有する、連結されたテーブル中の行は、同じデータベースパーティション上に位置する。データベース・マネージャは、データが記憶されているデータベースパーティションにおいて結合または副照会処理を実施することを選ぶことができる。これは、非常に大きな性能利点を有する。

0007

連結されたテーブルは、同じデータベースパーティショングループ中になければならず、同じ分散マップを有しなければならない。連結されたテーブルは、列の数が同じである分散キーを有しなければならない。連結されたテーブルは、分散キーの対応する列がパーティション互換(例えば互換性のあるデータ型)でなければならない。連結されたテーブルは、同じデータベースパーティション上で定義される単一のデータベースパーティショングループ中になければならない。

0008

データ・ウェアハウスでは、通常、ファクト・テーブルとその最大のディメンション・テーブルとが連結される。例えば、図2に、周知のベンチマーキング作業負荷における2つの最大テーブルの結合を描く。この例では、ORDERSテーブル(ディメンション・テーブル)とLINEITEMテーブル(ファクト・テーブル)の両方が、orderkey列上で分散されており、この2つのテーブルにわたる結合操作は、含まれているパーティショングループの各パーティション上でローカルに処理され、その結果、大きな性能確保がもたらされる。

先行技術

0009

米国特許出願公開第2009/0319581(A1)号
米国特許出願公開第2011/0295907(A1)号
米国特許出願公開第2012/0246194(A1)号

発明が解決しようとする課題

0010

難題は、新しいノードの追加を通してSNパーティション化されたデータベースを拡張する間に、性能を維持することである。新たにプロビジョニングされたノードおよびパーティションを含むようにパーティション化されたデータベースが拡張されるとき、パーティショングループは、新たにプロビジョニングされたパーティションを含むように拡張されなければならない。拡張されるシステム全体にわたってテーブルごとに均衡のとれたデータ割振りを維持するために、また、既存のパーティション上での将来の増加を見込んでおくために、データはシステム全体にわたって再分散されなければならない。再分散プロセスは、拡張されるシステム中のすべてのパーティションに及ぶパーティショングループを割り振り、次いで、新しいパーティションマップに基づいてパーティショングループ中で各テーブル行再割当てすることを含む。このプロセスはかなりの時間がかかる可能性があり、例えば、数十または数百テラバイトのデータの再割当ては、数日かかる可能性がある。通常、このプロセスは、オフラインアクティビティとして実施され、数日間の機能停止を必要とする可能性がある。

0011

再分散プロセス中の主要な困難の1つは、操作中に連結が維持されないことである。パーティショングループ中のテーブルが1つずつ順番に再分散されるので、結合されたテーブルのパーティションマップは、パーティショングループ中のこのようなすべての結合されたテーブルが再分散されるまで、異なることになる。別の難題は、データへの完全なアクセスを維持しながら、また移動されているデータの2つのコピー(既存のものと新しいもの)をすることなく、エンド・ユーザにとってトランスペアレントに各テーブルおよびその中の行データを新しいデータベース・マップにインクリメンタルに再分散する能力である。

0012

従来技術には、テーブルを新しいパーティショングループ/マップにオンライン移動する技法がある。例えば、米国特許出願公開第2009/0319581(A1)号は、移動されているテーブルの2つのコピーを必要とするが、移動中にテーブル間の連結を維持しない、テーブルのオンライン移動の方法を開示する。

0013

別の既存の米国特許出願公開第2011/0295907(A1)号は、SNデータベースを拡張するための装置および方法、ならびに、ダウンタイムを最小限に抑えながらSNデータベースを再分散させる技法を開示する。しかし、この方法は、連結の保存も、データの完全な利用可能性も提供せず、データの2つのコピーを必要とする。

0014

別の既存の米国特許出願公開第2012/0246194(A1)号は、前に遭遇した分散キーを有するデータを同じデータベースパーティションに配置し、前に遭遇していない分散キーのデータを新しいデータベースパーティションに配置することを通して、連結を維持する方法を提供する。言い換えれば、この方法は、データ再分散を完全に不要にしようとする。しかし、この手法は実際上、永久に均衡のとれないパーティショングループを結果的に生じる可能性があり(新しい分散キーのデータのみが新しいパーティションに配置されるので)、必ず性能および整調の問題につながり、結果として、特に同種アプライアンスベースクラスタ中では、利用可能なストレージを既存のノードが使い尽くすというクリティカルシナリオとなる可能性がある。

課題を解決するための手段

0015

本発明の第1の態様では、オンライン・シェアード・ナッシング・データベース中でデータを再分散させるためのシステムが提供され、前記シェアード・ナッシング・データベースは、複数の元のパーティション、および少なくとも1つの新しいパーティションを含む。前記システムは、元のパーティションおよび少なくとも1つの新しいパーティションにわたって再分散されることになる、元のパーティション中の2つ以上の連結されたテーブルを識別するための連結セット・アイデンティファイアであって、前記テーブルがデータ行を有し、各データ行が、分散キーによって管理されるパーティション上にある、連結セット・アイデンティファイアと、対応する新しいテーブルを新しいパーティション中で作成するためのテーブル・ファクトリと、チェック制約を使用して元のテーブルと新しいテーブルの両方からのすべてのデータのUNION ALLビューを作成するためのビュー・クリエータであって、前記チェック制約は分散キーに基づく、ビュー・クリエータと、分散キー範囲にわたる区間ループを定義するためのカウンタと、元のテーブルから新しいテーブルへの、現在の分散キー区間にわたる各データ行のデータ移動を実施するためのデータ・ムーバと、UNION ALLビューが保存されるように各分散キー区間につきチェック制約を変更し、それにより連結およびデータ完全性が確実に維持されるようにするためのデータ・チェンジャと、すべてのデータが新しいテーブルに移動されるように、すべての分散キー区間が処理されるまで次の分散キー区間にループ・バックするためのループ・フィニッシャであって、それにより、連結およびデータ完全性が維持され、データベースに対して実施される照会にとって再分散がトランスペアレントであり、再分散中にテーブルが読み書きのために完全に利用可能である、ループ・フィニッシャと、を備える。

0016

再分散は、シェアード・ナッシング・データベースがオンラインである間に行われる。すなわち、シェアード・ナッシング・データは、任意の接続された外部エンティティによる読み書きのために、完全に利用可能である。

0017

本発明の第2の態様では、オンライン・シェアード・ナッシング・データベース中でデータを再分散させる方法が提供され、前記シェアード・ナッシング・データベースは、複数の元のパーティション、および少なくとも1つの新しいパーティションを含む。前記方法は、元のパーティションおよび少なくとも1つの新しいパーティションにわたって再分散されることになる、元のパーティション中の2つ以上の連結されたテーブルを識別するステップであって、前記テーブルがデータ行を有し、各データ行が、分散キーによって管理されるパーティション上にある、識別するステップと、対応する新しいテーブルを新しいパーティション中で作成するステップと、チェック制約を使用して、元のテーブルと新しいテーブルの両方からのすべてのデータのUNION ALLビューを作成するステップであって、前記チェック制約は分散キーに基づくものである、作成するステップと、分散キー範囲にわたる区間のループを定義するステップと、元のテーブルから新しいテーブルへの、現在の分散キー区間にわたる各データ行のデータ移動を実施するステップと、UNION ALLビューが保存されるように各分散キー区間につきチェック制約を変更し、それにより連結およびデータ完全性が確実に維持されるようにするステップと、すべてのデータが新しいテーブルに移動されるように、すべての分散キー区間が処理されるまで次の分散キー区間にループ・バックするステップであって、それにより、連結およびデータ完全性が維持され、データベースに対して実施される照会にとって再分散がトランスペアレントであり、再分散中にテーブルが読み書きのために完全に利用可能である、ループ・バックするステップと、を含む。

0018

実施形態は、再分散中に照会性能が維持されることを確実にする。

0019

有利には、UNION ALLビューの行移動機能を使用して、元のテーブルと新しいテーブルとの間でデータが再配置される。

0020

より有利には、現在の区間中の所定の行に対するインジケータ列を更新することで、行移動機能が開始され、行が元のテーブルから新しいテーブルに移動されることになる。

0021

さらに有利には、関連する新しいパーティションマップを伴う、既存のパーティションと新しいパーティションとに及ぶ新しいパーティショングループを作成するステップを含み、関連する新しいパーティションでは、個々のパーティションは、移動されているデータの送出側または受信側のいずれかとして定義される。パーティションは、同時にデータの送出側と受信側とであることは決してなく、これにより、再分散中のネットワークトラフィックの量が低減される。

0022

さらに有利には、新しいパーティショングループは、既存のパーティショングループのデータ定義を抽出し、新しいパーティションを組み込むようにデータ定義を修正し、修正されたデータ定義を実行することによって、作成される。

0023

好ましくは、連結されたテーブルの2つ以上のセットが、既存のパーティショングループ内の2つ以上のパーティション上に位置する。再分散されているパーティショングループ中のテーブルは、「連結セット」に属するものとして分類される。連結セットは、連結されたテーブルのグループであり、すなわち、連結された結合に加わるテーブルである。

0024

より好ましくは、未完了(inflight)のデータが性能に及ぼすどのような影響も最小限に抑えるために、各区間は、テーブル全体に対して小さい(通常は約1%)。

0025

さらに好ましくは、行は、元のテーブルから新しいテーブルにインクリメンタルに移動され、バッチでコミットされる。コミット・サイズは、区間全体に対して小さく保たれ(通常は約10,000行)、したがって、インクリメンタルな移動が、ロッキングを最小限に抑え、照会および他のユーザ・データ操作言語DML)操作のためにテーブルの完全な利用可能性を維持する。

0026

さらに好ましくは、現在の分散キー区間で挿入された新しい行が、新しいテーブルに充てられる。これは、インジケータ列(未完了インジケータとしても知られる)にどのような値も供給されないので実施され、区間中に行のセカンドパスは必要ではない。

0027

別法として、すべての区間がほぼ同じ量のデータを含むように、区間は、データベース・カタログからの統計的なデータ再分散を使用して重み付けされてもよい。この代替実施形態の描写については、図12を参照されたい。

0028

前述の方法では、行が移動された後で、性能データ(後で分析するための)が記憶されてもよい。

0029

インジケータ列は、ヌル可能な列として、元のテーブルと新しいテーブルの両方に追加され、最初は、既存のテーブル上でデフォルト値Y、およびターゲット・テーブル上でNULLを含む。これは、ユーザからは見えない隠れた列である。重要なことに、ヌル可能な列については、テーブルに対して構造上の変更もデータ更新も実際には行われず、したがってこれは、追加のストレージを必要としない即時的な操作である。このインジケータ列が照会されたときは、データベース管理システムDBMS)は単に、デフォルト値(または、設定されていなければヌル)を返す。

0030

各区間の完了時、分散キー値の範囲は、テーブルの元のバージョンと新しいバージョンとの間で一貫性があり、したがって、元のテーブル間で、また新しいテーブル間でも、連結された結合が達成される。

0031

各区間の後、既存のDBMSオンライン再編成ユーティリティが実行されて、区間中に元のテーブルから削除された行についてのディスク・ストレージが再利用される。

0032

最後の分散キー区間が処理された後、連結セット中の各テーブルにつき、UNION ALLビューおよび今や空の元のテーブルは除去され、新しいテーブルの名前は元の名前に変更される。このようにして、パーティショングループ中のすべての連結セットが、連続的に再分散される。孤立しており連結されていないテーブルがあれば、次いでこれらのテーブルは、同様にして、ただし連結を維持する必要なしに、再分散される。

0033

最後に、元のパーティショングループおよび関連するパーティションマップは、データベース・カタログから除去される。この時点で、オンライン再分散は完了し、データは、すべてのデータベースパーティションにわたって均等かつ一様に均衡がとれている。

0034

新しいパーティションは、シャードまたは水平パーティション化としても知られる、新しいデータベースパーティションである。元の各テーブルにつき新しいテーブルが作成され、新しい拡張されたパーティショングループ中の新しいパーティションマップがある。UNION ALLビュー(UNIONALL ビュー)は、元のテーブルおよび新しいテーブルのそれぞれにわたって作成されて、テーブル中にあるデータを、再分散操作継続時間にわたって単一のエンティティとして提示する。分散キー列に対するチェック制約が、元のテーブルおよび新しいテーブルに適用される。最初、チェック制約は、すべての行が元のテーブル中に位置するようにする。分散キーが及ぶ値の範囲は、昇順の値の固定数の区間に細分される。反復的に、各区間の行が、連結セット中の各テーブルにつき、関連する元のテーブルから関連する新しいテーブルに移動される。チェック制約は、関連する分散キー範囲でのデータの新しい位置を反映するように、各区間につき変更される。

0035

UNION ALLビューは、複数のテーブルからのデータが単一のテーブル中にあるかのようにエンド・ユーザに対して提示されるのを可能にする、特別な形のビューである。UNION ALLビューは、データの物理的なマテリアライゼーションではなく、純粋に、基礎をなすテーブルにビューを介して照会をルーティングするためのメカニズムである。基礎をなすテーブルは、2つまたはそれ以上ある可能性がある。テーブルT1およびT2にわたるSELECTからなるUNION ALLビューV1が、テーブルT3およびT4にわたるSELECTからなる別のUNION ALLビューV2に結合される場合であって、T1とT3が連結され、T2とT4もまた連結される場合であって、連結されたテーブル(T1&T3、およびT2&T4)上の同じ範囲に分散キーを制約するチェック制約または述部がビュー中にある場合は、DBMSオプティマイザが、V1のV2への結合を、T2とT4との連結された結合と合併された、T1のT3への連結された結合として書き換えることになる。言い換えれば、2つのビューV1およびV2が以下のように作成されるとすると、
CREATE VIEW V1 as SELECT * FROM T1 UNIONALL SELECT * FROM T2 WITH ROW MOVEMENT
CREATE VIEW V2 as SELECT * FROM T3 UNIONALL SELECT * FROM T4 WITH ROW MOVEMENT
この場合、SELECT * FROM V1 JOIN V2 ON V1.keycol= V2.keycol
は、オプティマイザによって以下のように書き換えられる。
SELECT * FROM T1 JOIN T3 ON T1.keycol =T3.keycol UNION ALL SELECT * FROM T2 JOIN T4 ON T2.keycol = T4.keycol

0036

重要なことに、UNION ALLビューを構成するテーブルは、異なる複数のパーティショングループ中に配置されている可能性があり、または異なる複数のパーティションマップを有する可能性がある。

0037

オプティマイザは、供給された述部にマッチする行をどのテーブルが含むかを解決するために、「チェック制約」に依拠する。UNION ALLビューを構成する各テーブルに対するチェック制約は、重複しない、かつ、どのテーブルにDML操作(例えばSELECT、INSERT、UPDATE、またはDELETE)を適用するかを一意に定義する、強制的な制約である。ROW MOVEMENT文節は、チェック制約に違反するように変更されるどのような行も、ビュー中の他のテーブルに自動的に移動されることを示す。

0038

実施形態は、SNデータベースの外で継続されるデータベース・プロセスの品質および効率を改善する。というのは、再分散は、SNデータベース内で動作し、SNデータベースを使用するデータベース・プロセスからは見えないからである。

0039

実施形態は、トランスペアレントな、かつ上にあるアプリケーション・レベルの下の、コンピュータ・システムのシステム・レベルで動作する効果を有する。

0040

実施形態は、SNデータベース再分散をリアルタイムで、したがって新しい方式で動作させることになるという効果を有する。

0041

実施形態は、SNデータベースの速度または信頼性の増大につながる効果を有する。

0042

本発明の第3の態様では、シェアード・ナッシング・データベース中でデータをオンラインで再分散させるためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、コンピュータ可読プログラム・コードが組み入れられたコンピュータ可読ストレージ媒体を備え、コンピュータ可読プログラム・コードは、本方法のすべてのステップを実施するように構成される。

0043

コンピュータ・プログラム製品は一連のコンピュータ可読命令を含み、これらのコンピュータ可読命令は、コンピュータ可読媒体、例えば光ディスク磁気ディスク固体ドライブなどの、有形媒体上に固定されているか、あるいは、以下のものに限定されないが光もしくはアナログ通信回線を含めた有形媒体を介して、または、以下のものに限定されないがマイクロ波赤外線や他の伝送技法を含めたワイヤレス技法を使用して無形に、モデムまたは他のインタフェースデバイスを使用してコンピュータ・システムに送信可能である。一連のコンピュータ可読命令は、前述の機能の全部または一部を具体化する。

0044

このようなコンピュータ可読命令は、多くのコンピュータ・アーキテクチャまたはオペレーティング・システムと共に使用するためのいくつかのプログラミング言語で書かれてよいことを、当業者なら理解するであろう。さらに、このような命令は、以下のものに限定されないが半導体磁気、もしくは光学を含めた、現在もしくは将来の任意のメモリ技術を使用して記憶されてよく、または、以下のものに限定されないが光学、赤外線、またはマイクロ波を含めた、現在もしくは将来の任意の通信技術を使用して伝送されてよい。このようなコンピュータ・プログラム製品は、印刷文書もしくは電子文書付随する取外し可能媒体として、例えばシュリンクラップソフトウェアとして配布されること、コンピュータ・システムによって例えばシステムROMもしくは固定ディスクプリロードされること、または、ネットワーク、例えばインターネットもしくはワールドワイドウェブを介して、サーバもしくは電子掲示板から配布されること、が可能であることが企図される。

0045

本発明の第4の態様では、コンピュータ可読媒体に記憶され、コンピュータの内部メモリにロード可能な、コンピュータ・プログラムが提供される。このコンピュータ・プログラムは、前記プログラムがコンピュータ上で実行されたときに方法請求項のすべてのステップを実施するためのソフトウェア・コード部分を含む。

0046

本発明の第5の態様では、好ましい実施形態のデータ・キャリア態様が提供される。このデータ・キャリア態様は、コンピュータ・システムにロードされてコンピュータ・システムによる作用を受けたときに、前記コンピュータ・システムが方法請求項のすべてのステップを実施できるようにするための機能的コンピュータ・データ構造を含む。適切なデータ・キャリアは、固体メモリ磁気ドライブ、または光ディスクとすることができる。データ伝送のためのチャネルも同様に、すべての記述のストレージ媒体、ならびに、有線またはワイヤレス信号搬送媒体などの信号搬送媒体を含み得る。

0047

次に、後続の図面を参照しながら、本発明の好ましい実施形態について、単なる例として述べる。

図面の簡単な説明

0048

既存のシェアード・ナッシング・データベースの例示的な分散マップおよびキーの関係図である。
周知のベンチマーキング作業負荷における2つの最大テーブルの図である。
好ましい実施形態の概略展開図である。
好ましい実施形態の概略コンポーネント図である。
好ましい実施形態の方法の流れ図である。
好ましい実施形態の方法の流れ図である。
好ましい実施形態の方法の流れ図である。
好ましい実施形態の方法の流れ図である。
すべてのパーティションについて同時のUNION ALLビューが維持されながら、連結されたテーブルが元のパーティションから新しいパーティションに再分散される、例示的な分散の図である。
好ましい実施形態の分散キー区間のテーブルを示す図である。
好ましい実施形態と代替実施形態のそれぞれの場合の、2つのタイプの区間分布を比較する図である。
好ましい実施形態と代替実施形態のそれぞれの場合の、2つのタイプの区間分布を比較する図である。
再分散操作中の、元のテーブルにわたる単純なSELECT照会の例示的な実行プラングラフである。
再分散操作中の、元のテーブルにわたる単純なSELECT照会の例示的な実行プラン・グラフである。
再分散操作中の、元のテーブルにわたる単純なSELECT照会の例示的な実行プラン・グラフである。

実施例

0049

図3を参照すると、シェアード・ナッシング・データベース10における好ましい一実施形態の展開が記載されている。シェアード・ナッシング・データベース10は、多くの他の汎用または専用コンピューティングシステム環境または構成でも動作する。シェアード・ナッシング・データベース10と共に使用するのに適する可能性のある周知のコンピューティング処理システム、環境、または構成、あるいはそのすべての例は、以下のものに限定されないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シンクライアントシック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップボックスプログラム可能消費者電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境、を含む。

0050

シェアード・ナッシング・データベース10は、プログラム・モジュールなど、コンピュータ・プロセッサによって実行されるコンピュータ・システム実行可能命令の一般的なコンテキストで述べることができる。一般に、プログラム・モジュールは、特定のタスクを実施するかまたは特定の抽象データ型実装するルーチン、プログラム、オブジェクトコンポーネントロジック、およびデータ構造を含み得る。シェアード・ナッシング・データベース10は、分散型クラウド・コンピューティング環境で具体化されてよく、この環境では、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実施される。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含めた、ローカルとリモートの両方のコンピュータ・システム・ストレージ媒体に位置する場合がある。

0051

好ましい実施形態のシェアード・ナッシング・データベース10は、複数の汎用コンピュータ・サーバ12A〜12Nと、コンピュータ・サーバ12Aに直接に取り付けられた1つまたは複数の入力デバイス14Aおよび出力デバイス16Aと、高速相互接続20とを含む。シェアード・ナッシング・データベース10は、入力デバイス14Aおよび出力デバイス16Aを使用して、ユーザ18Aと通信する。入力デバイス14Aは、キーボードスキャナマウストラックボール、または別のポインティング・デバイスの1つまたは複数を含む。出力デバイス16Aは、ディスプレイまたはプリンタの1つまたは複数を含む。

0052

コンピュータ・サーバ12Aについてより詳細に述べるが、このような詳細はまた、対応する変更を伴って、コンピュータ・サーバ12B〜12Nにも適用される。したがって、コンピュータ・サーバ12B〜12Nは、12Aと同様のコンポーネントを備えるが、重要な実施形態コンポーネントのみを備えるように図示されている。

0053

コンピュータ・サーバ12Aは、中央処理装置(CPU)22A、高速ネットワークアダプタ24A、デバイス・アダプタ26A、バス28A、およびメモリ30Aを備える。

0054

CPU22Aは、メモリ30Aから機械命令をロードし、命令に応答して機械操作を実施する。このような機械操作は、レジスタ(図示せず)中の値をインクリメントまたはデクリメントすること、値をメモリ30Aからレジスタに、またはその逆に転送すること、条件が真またはである場合にメモリ中の別の位置に分岐すること(条件付き分岐命令としても知られる)、および、2つの異なるレジスタ中の値を加算または減算して結果を別のレジスタにロードすること、を含む。通常のCPUは、多くの異なる機械操作を実施することができる。機械命令のセットは、機械コード・プログラムと呼ばれ、機械命令は、低水準言語と称される機械コード言語で書かれる。高水準言語で書かれたコンピュータ・プログラムは、実行できるようになる前に機械コード・プログラムにコンパイルされる必要があり、あるいは、機械命令の点から解釈される必要がある。

0055

高速ネットワーク・アダプタ24Aは、コンピュータ・サーバ12Aとコンピュータ・サーバ12B〜12Nとの間の通信を可能にするために、バス28Aおよび高速相互接続20に接続される。

0056

デバイス・アダプタ26Aは、コンピュータ・サーバ12Aと入力デバイス14Aおよび出力デバイス16Aとの間の通信を可能にするために、バス28Aならびに入力デバイス14Aおよび出力デバイス16Aに接続される。

0057

バス28Aは、メモリ30Aを含めた主要なシステム・コンポーネントを共にCPU22Aに結合する。バス28Aは、いくつかのタイプのバス構造のいずれかの1つまたは複数を表し、これらのバス構造は、様々なバス・アーキテクチャのいずれかを使用した、メモリ・バスまたはメモリ・コントローラ周辺バスアクセラレーテッドグラフィックスポート、およびプロセッサ・バスまたはローカル・バスを含む。限定ではなく例として、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(MicroChannel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics StandardsAssociation)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含む。

0058

メモリ30Aは、揮発性メモリ32Aおよび不揮発性または持続性メモリ34Aの形のコンピュータ・システム可読媒体を含む。揮発性メモリ32Aの例は、ランダム・アクセス・メモリ(RAM)36Aおよびキャッシュ・メモリ38Aである。一般に揮発性メモリは、より高速なので使用され、一般に不揮発性メモリは、データをより長く保持することになるので使用される。シェアード・ナッシング・データベース10はさらに、他の取外し可能または非取外し可能あるいはその両方の、かつ揮発性または不揮発性あるいはその両方の、コンピュータ・システム・ストレージ媒体も含むことができる。例に過ぎないが、持続性メモリ34Aは、非取外し可能な不揮発性の磁気媒体(図示せず。通常は磁気ハード・ディスクまたは固体ドライブ)に対する読み書きのために設けられてよい。図示されていないが、さらに他のストレージ媒体が設けられてもよく、これらの他のストレージ媒体は、取外し可能な不揮発性の固体メモリのための外部ポート、および、コンパクト・ディスク(CD)やディジタルビデオ・ディスク(DVD)やBlu−rayなどの取外し可能な不揮発性の光ディスクに対する読み書きのための光ディスク・ドライブ、を含む。このような事例では、それぞれは、1つまたは複数のデータ媒体インタフェースによってバス28Aに接続されてよい。以下にさらに図示および記述するように、メモリ30Aは、本発明の実施形態の機能を実施するように構成された1組の(例えば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。

0059

好ましい実施形態の機能を実施するように構成された1組のプログラム・モジュールは、シャード再分散モジュール400Aと、データベース管理システム402Aと、データベースパーティション404A1〜404Anとを含む。好ましい実施形態をサポートするが図示されていない、さらに他のプログラム・モジュールは、ファームウェアブートストラップ・プログラム、オペレーティング・システム、およびサポート・アプリケーションを含む。オペレーティング・システム、サポート・アプリケーション、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組合せは、それぞれ、ネットワーキング環境の一実装形態を含み得る。

0060

対応するプログラム・モジュールがコンピュータ・サーバ12Nについて示されており、これらは、シャード再分散モジュール400Nと、データベース管理システム402Nと、データベースパーティション404N1〜404Nnとを含む。

0061

コンピュータ・サーバ12B〜12Nについても、対応するプログラム・モジュールが含意される(ただし図示せず)。

0062

シェアード・ナッシング・データベース10は、高速相互接続20を介して通信する。ネットワーク・アダプタ24Aは、高速相互接続と同じくらい速くまたはより速く動作するバス28Aを介して、データベースパーティションを含めたコンピュータ・サーバ12Aの他のコンポーネントと通信する。

0063

データベース管理システム(DBMS)402Aは、標準的なシェアード・ナッシング・データベース管理システムである。

0064

データベースパーティション404A1〜404Anは、持続性メモリおよびディスク34A中で作成される。パーティションは、除去または追加されることが可能である。

0065

図4を参照すると、シャード再分散モジュール400Aは、以下のコンポーネントを備える。すなわち、元パーティションレジスタ402、新パーティションレジスタ404、連結セット・レジスタ406、対応連結テーブル・レジスタ408、分散キー・レジスタ410、UNION ALLレジスタ412、チェック制約レジスタ414、および再分散方法500である。

0066

元パーティションレジスタ402は、元のパーティションの位置を記憶するためのものである。

0067

新パーティションレジスタ404は、新しいパーティションの位置を記憶するためのものである。

0068

連結セット・レジスタ406は、連結セットの位置を記憶するためのものである。対応連結テーブル・レジスタ408は、対応する連結されたテーブルの位置を記憶するためのものである。

0069

分散キー・レジスタ410は、分散キーの範囲および区間を記憶するためのものである。

0070

UNION ALLレジスタ412は、UNION ALLビューのパラメータを記憶するためのものである。

0071

チェック制約レジスタ414は、チェック制約を記憶するためのものである。

0072

再分散方法500は、論理プロセス・ステップ501〜510(図5参照)を含む。ステップ507は、論理プロセス・ステップ507a〜507r(図6および7参照)を呼び出す。ステップ507mは、論理プロセス・ステップ507m1〜507m9(図8参照)を呼び出す。

0073

図5を参照しながら、論理プロセス・ステップ501〜510について述べる。

0074

ステップ501は、連結されたテーブルのセットの仕様をユーザから得る(例えばXMLファイルフォーマットで)ためのものである。標準的なスキーマを形成する例示的なORDERSおよびLINEITEMテーブルが、本方法についての単純な例示的連結セットを形成する。

0075

ステップ502は、拡張されたデータベース中のすべてのパーティションに及ぶ新しいパーティショングループを作成するためのものである。

0076

ステップ503は、パーティションが、再分散されているデータの送出側または受信側のいずれか(両方であることはない)であるように、ターゲットパーティションマップを構築し、マップを新しいパーティショングループに割り当てるためのものである。

0077

ステップ504は、すべてのテーブル空間、テーブル、および従属オブジェクト(例えばマテリアライズド・ビュー、ビュー、外部キー制約)のデータ定義(データ定義言語DDL)の)を、再分散されている既存のパーティショングループから抽出するためのものである。

0078

ステップ505は、新しい拡張されたパーティショングループを参照するようにテーブル空間定義を調整して新しい名前を割り当てるために、また同様に、新しいテーブル空間名などを参照するように他の関連オブジェクトを調整するために、抽出されたデータ定義を修正するためのものである。

0079

ステップ506は、調整されたデータ定義を実行して、新しいデータベースパーティショングループ中で複製テーブル空間を作成するためのものである。

0080

ステップ507は、同じ連結セット中のテーブルを同時に処理して、データベースパーティショングループ中のあらゆるテーブルについてデータを再分散させるためのものである。副方法ステップ507a〜507rについては、図6および7で述べる。

0081

ステップ508は、各連結セットと、連結されないテーブルが残っていればそれらとについて、ステップ507を繰り返すためのものである。

0082

ステップ509は、既存のテーブル空間およびその中のオブジェクトを除去するためのものである。

0083

ステップ510は、既存のパーティショングループを除去するためのものである。

0084

図6〜7を参照すると、副方法ステップ507は、論理プロセス・ステップ507a〜507rを含む。

0085

ステップ507aは、連結セット中の基礎をなすテーブルに対する許可を除去するためのものである。

0086

ステップ507bは、関連するマテリアライズド照会テーブル(MQT)があればそれらをアンマテリアライズする、言い換えればこれらのMQTを通常のテーブルに一時的に変換するためのものである(これは即時的な操作である)。

0087

ステップ507cは、連結セット中のすべてのテーブルの名前を_Oに変更するためのものであり、_Oは_Originalを意味し、また、任意選択で、一意のシステム時間およびランダムな接尾辞を追加して、テーブル名が一意であることを保証するためのものである。

0088

ステップ507dは、ステップ504で抽出されたデータ定義を使用して、連結セット中の各テーブルにつき、名前_Nを有するマッチする新しいテーブルを新しいパーティショングループ中で作成するためのものであり、_Nは_Newを意味する。

0089

ステップ507eは、元のテーブルおよび新しいテーブルを変更して、元のテーブル上のデフォルト値Yと新しいテーブル上のNULLとを含む隠されたINFLIGHT列を追加するためのものである。

0090

ステップ507fは、すべてのデータ操作言語(INSERT、DELETE、UPDATE、SELECT)が適切なテーブルに(最初はすべて元のテーブルに)向けられるように、元のテーブルおよび新しいテーブル上の分散キーに対するチェック制約を変更するためのものである。

0091

ステップ507gは、SELECT * FROM_O UNION ALLSELECT * FROM_N WITH ROW MOVEMENTとして、連結セット中の各テーブルにつき、UNION ALLビューを作成するためのものである。

0092

ステップ507hは、新しいUNION ALLビューに対して、関連するMQTがあればそれらをリマテリアライズするためのものである。MQTが現在の連結セット中にある場合は、これをユーザによって維持されるMQTに変換して、これもまた再分散できるようにする(これは即時的な操作である)。

0093

ステップ507iは、このテーブルを含むすべてのパッケージ無効化して、コンパイラに、新しいテーブル情報を取得させて相応にパッケージを生成させるためのものである。

0094

ステップ507jは、分散キー中の列を決定するためのものである。

0095

ステップ507kは、連結セット中の親/ディメンション・テーブルから、分散キーの低い値および高い値を決定するためのものである。複合分散キーの場合は、最も高い濃度(cardinality)(異なる値の数)を有する構成列を選択する。

0096

ステップ507lは、分散キー範囲にわたる約100個のステップ/区間を含む反復ループ初期化するためのものである。

0097

ステップ507mは、データを移動するためのものであり、これについては図8に関して述べる。ステップ507nは、関連するMQTがあればそれらをアンマテリアライズするためのものである。

0098

ステップ507oは、連結セット中の各テーブルにつき、関連するUNION ALLビューを除去し、関連する新しいテーブルの名前を元のテーブル名に変更する(すなわち_N接尾辞を除去する)ためのものである。

0099

ステップ507pは、各テーブルから未完了列を除去するためのものである(この場合もやはり、構造上の変更は行われず、この操作は即時的である)

0100

ステップ507qは、名前変更された新しいテーブルに対して、関連するMQTがあればそれらをリマテリアライズするためのものである。

0101

ステップ507rは、このテーブルを含むすべてのパッケージを無効化して、コンパイラに、新しいテーブル情報を取得させて相応にパッケージを生成させるためのものである。

0102

図8を参照すると、副方法ステップ507mは、各区間につき実施される論理プロセス・ステップ507m1〜507m9を含む。

0103

ステップ507m1は、このデータ区間の移動を行う(INFLIGHT列を使用して)ために、元のテーブル(_O)および新しいテーブル(_N)のチェック制約を変更するためのものである。

0104

ステップ507m2は、現在の分散キー区間について、元のテーブルから新しいテーブルへのデータ移動を実施するためのものである。

0105

ステップ507m3は、インジケータ列を更新することによって、連結セット中の親/ディメンション・テーブルから新しいテーブル(_N)にデータをインクリメンタルに移動するためのものである。

0106

ステップ507m4は、元のテーブル上の未完了インジケータ列を更新するためのものである。例えば、UPDATESETinflight =NULL WHERE BETWEEN m and m + n //などのデータベース・コマンドを使用する(ここで、nは、所望の数の行、例えば10,000行を達成し、mはカウンタである)。

0107

ステップ507m5は、約10,000行(例えば)のバッチでデータをコミットすること、および、すべての行が元のテーブルから新しいテーブルに移動されるまでステップ507m4にループ・バックすること、のためのものである。

0108

ステップ507m6は、等価なMOVE段階を実施して、現在の分散キー区間の連結セット中の関連する各ファクト/子テーブルを新しいテーブルに移動するためのものである。

0109

ステップ507m7は、任意で、ディスク・ストレージを再利用するためのものである。例えば、連結セット中の各テーブルの元のバージョンに対してオンラインREORG(再編成)操作を実施して、削除済みの行のディスク・ストレージを再利用することによって、これを行う。

0110

ステップ507m8は、任意で、移動に関する性能統計を取得するためのものである。例えば、連結セット中の各テーブルの新しいバージョンおよび元のバージョンに対してオンラインRUNSTATS操作を実施することによって、あるいは、元のテーブルからの統計をコピーおよび補間することによって、これを行う。

0111

ステップ507m9は、すべての区間が処理されるまで、ステップ507m1で次の区間を処理するためのものである。

0112

図9に、元のパーティション1、2、および3と、新しいパーティション4とを含む、LINEITEMおよびORDERSの例の再分散の方法を示す。図によれば、UNION ALLビューを通して、連結された結合が達成され、UNION ALLビューは、エンド・ユーザに提示されるものである。LI_OテーブルおよびOR_Oテーブルは、既存のデータベースパーティション1上の元のLINEITEMテーブルおよび元のORDERSテーブルである。LI_NテーブルおよびOR_Nテーブルは、拡張されたデータベース中ですべてのパーティションにわたってパーティション化された等価な新しいテーブルである。各テーブルに対するチェック制約により、オプティマイザは、エンド・ユーザ18AのSELECTステートメントを、基礎をなす適切なテーブルに向けることができる。単にINFLIGHTインジケータ列をNULLに更新することによって、並列再分散が達成され、この更新は、元のテーブルから新しいテーブルへの行移動を引き起こす。

0113

図10に、各再分散区間で各テーブルの元のバージョンおよび新しいバージョンに対して設定されるチェック制約を要約する。このタイムラインによれば、各区間(この例では、区間のうちの60区間がある)につき、ORDERSテーブルは、親/ディメンション・テーブルであり、最初に移動され、その後にLINEITEMテーブルが続く。データを元のテーブルから新しいテーブルに再分散させるのに必要とされる実際の行移動は、単に、INFLIGHT列の値をNULLに更新することによって行われる。この更新により、元のテーブルに対するチェック制約に違反することになり、それにより、UNION ALLビューのWITH ROW MOVEMENT文節により、行は新しいテーブルに再配置される。再分散操作のリソース使用プロファイルを最小限に抑え、それにより再分散操作を低影響のバックグラウンド・プロセスにするために、更新は、インクリメンタルに、小さいバッチおよびコミットで実施される。一方、UNION ALLビューに対して実施されるデータ操作言語はどれも、チェック制約に基づいて、基礎をなす適切なテーブルに向けられることになる(例えば、選択、更新、挿入、または削除、あるいはそのすべて)。特に、インジケータ列は隠れているのでどのような値もインジケータ列に提供されないことにより、移動されている区間でのどのような挿入操作も、新しいテーブルに向けられることになり、このことは、この区間の再分散中に挿入されたどのようなデータについても、元のテーブルのセカンド・パスを実施する必要がないことを意味する。区間中のすべての行が移動されたとき、チェック制約は、次の区間の開始位置を反映するように調整され、プロセスは、すべての区間が処理されるまで繰り返される。チェック制約の実際の調整は、現在進行中のどのようなデータ処理操作も排除してオプティマイザ・プラン一貫性を維持するために、各テーブルに対する瞬時の排他ロックのみを必要とする。DBMSがプロセスを制御しているので、チェック制約は、データが新しい制約に適合することをチェックする必要なしに、変更されてよい。

0114

図11および12で、好ましい実施形態と代替実施形態のそれぞれの場合の、2つのタイプの区間分布を比較する。

0115

図11に、区間番号に対応する、分散キー範囲の均等な進行を示す。対応するデータ転送レートが、370万と0との間で変動し、不均等なワーク・フローを引き起こすことがわかる。

0116

図12に、DBMSに組み込まれた作業負荷管理能力を使用してコミット・サイズが動的に調整されるかまたは抑制されるかあるいはその両方がなされる、別の実施形態を示す。ここで、データ・レートは200万でより均等であり、それに対して、分散キー区間は、50万〜980万〜3千30万で変動し、ワーク・フローをより均等に維持する。

0117

図13に、再分散操作を開始する前の、元のテーブル(9A1および9A2)にわたる単純なSELECT照会の実行プラン・グラフを示す。
SELECT SUM (EXTENDEDPRICE) FROM LINEITEMl,ORDERS o WHERE l.ORDERKEY = o.ORDERKEY AND o.ORDERSTATUS = 'P'

0118

このグラフは、SELECT照会実行のボトムアップ・ビューである。グラフの最下部では、テーブル9A1および9A2が矩形の中にあり、これらの上には、テーブルから得られた結果を処理して、グラフの最上部でエンド・ユーザに返される結果セットにするのに必要とされる、様々な演算子がある。グラフからわかるように、LINEITEMおよびORDERSテーブルは、ハッシュ結合を使用して結合される(9A5−大規模データ・ウェアハウス照会の場合の効率的な操作)。重要なことに、結合は連結され、結合の達成後まで、テーブル・キュー(TQ)操作(ネットワーク相互接続を介してパーティション間でデータを送信することを担う演算子)はない。言い換えれば、結合は連結されている。

0119

図14に、34番目の再分散区間の後の、同じ照会についての実行プランを示す。グラフからわかるように、実行ツリーは今や、2つの主要な分岐に分割されている。左の分岐で、各テーブルの新しいバージョン(9B1および9B2)が処理され、並行して、右側の分岐で、元のテーブル(9B3および9B4)が処理される。この場合もやはり、テーブル・キュー(TQ)演算子9B13および9B14は、結合9B9および9B10の実施後まで現れず、したがって、結合が連結されていることをはっきりと示す。照会の推定される実行コスト(リソース使用の単位の抽象概念)が、各演算子形状の下部に示されている。わかるように、全体的な総コストは、2つの分岐のコストの合計を反映し、各分岐上のコストは、すでに再分散されたデータの量と、テーブルが配置されるパーティションの数とに比例する。したがって、左側の分岐の推定コストは、拡張されたデータベース中の4つのデータベースパーティションすべてにわたって新しいテーブルが配置されるので、より低い。重要なことに、各分岐が並行して処理されるので、全体的な実行時間も相応に短縮され、実際の実行時間は、再分散が開始される前の実行時間の約3分の2である。

0120

図15にもやはり同じ照会を示すが、今回は、35番目の再分散区間中であり、データは実際には未完了、すなわち移動されている。今回は、3つの副分岐がある。左側には、元のテーブル(9C1および9C2)にわたる連結された結合が示され、右側には、新しいテーブルにわたる連結された結合が示されている。しかし、この再分散区間のデータは今、元のテーブルと新しいテーブルとの間で移動しているので、実際には未完了であるこのデータの結合を実施する第3の分岐(グラフの中央)がある。しかし重要なことに、この第3の分岐中で結合されているデータの量は少量、例えばデータ・セット全体の60分の1未満であり、したがって、オプティマイザは、この未完了データについてのテーブル間で、ネストループ結合NLJOIN)演算子9C18を選ぶ。NLJOIN演算子は、選択的であり、テーブル走査(左と右の分岐による大規模なハッシュ結合ではより適切である)ではなくLINEITEMテーブル上の索引をナビゲートする。このようにして、データ未完了の全体的な影響はごくわずかであり、全体的なコストおよび実行時間に対する影響は無視してよい(この時点の照会の実際の継続時間はそれでもなお、元の再分散前の継続時間の約3分の2である)。

0121

分散キーは通常、各テーブル上で索引付けされ、このことは、移動フェーズ中の性能の助けとなる。分散キーがまだ索引付けされていない例外的なケースでは、オンライン索引作成操作を使用して自動的に索引がテーブル上で作成されてよく、この索引は、再分散操作の完了後に再び除去される。

0122

実行プランに対する未完了データの影響を最小限に抑えるために、各区間で移動されている行の数は、全テーブル行のうちの比較的ごく小さい部分(通常は1%)である。このことは、ユーザ照会性能を維持するので、本発明の重要な一面である。実際、上記の例に見られるように、照会の性能は、より多くのパーティションが照会取出しに貢献しつつあるのに伴って、再分散の過程一貫して向上することになる。

0123

INFLIGHTインジケータを使用して、現在の再分散区間中に移動されている行が区別される。区間中の行の数が比較的少ないとすれば、INFLIGHT条件述部(INFLIGHTがヌルでない)のオーバヘッドは無視できる。

0124

チェック制約が施行される(更新、挿入、および削除のDML操作に対して)。通常、施行されたチェック制約を変更することは、制約が有効であることを検証するためにテーブルのデータを走査することを含む。しかし、DBMSが再分散データ移動を管理しているので、これらのチェック制約の施行は、データ妥当性検査の走査を不要にすることができ、それによりこの操作を即時的なものにすることができる。

0125

再分散されているテーブルにわたる区間に及ぶ、長く実行される照会は、読取り固定(RS:Read Stability)分離レベルを使用して、未完了の行による一貫しない結果がないことを保証することができる。

0126

より複雑な一実施形態は、再分散のための処理ウィンドウを定義することを可能にすることができる。

0127

本発明によって提供される利点は、以下を含む。
・ 連結が保存される。
・照会性能が全体を通して維持され、照会性能は実際、非常に急速にますます向上していく。
・ テーブルは、全体を通して、DML照会のために完全に利用可能かつオンラインに維持される。
・ 再分散操作は、完全にトランザクションログされる。例えば、ディスク媒体障害が発生した場合、再分散プロセスは、データベースが回復されたときに、中断した場所からシームレス再開されることが可能である。
・ 未完了のテーブルのためにディスク空間倍増する必要はない。各反復の後でオンライン再編成操作を発行して、元のテーブルから削除された行の空間を再利用することができる。
・ 再分散操作の前に、最中に、または後で、特別なバックアップは必要ではない。標準的なオンライン・バックアップ方法は、再分散プロセスと互換性がある。
パーセンテージベースの進行の、信頼性のあるモニタリングを容易にする。すなわち、100個の反復に分割された場合は、%スループットを見ることができる。
・ 再分散は、いつでも一時停止されてよく、挿入選択バッチ/コミット・サイズを縮小することおよび既存の作業負荷管理能力を使用して優先順位を調整することによって、抑制されてよい。
・ 親ディメンション・テーブルが常に最初に移動されるので、再分散操作中に外部キー制約が維持される。

0128

次に、本発明のさらに他の実施形態について述べる。好ましい実施形態の論理プロセス・ステップの全部または一部が、別法として、本方法の論理プロセス・ステップを実施するように構成されたロジック要素を備える1つのロジック装置または複数のロジック装置中で具体化されてもよいこと、および、このようなロジック要素がハードウェア・コンポーネント、ファームウェア・コンポーネント、またはこれらの組合せを含む場合があることは、当業者には明らかであろう。

0129

好ましい実施形態のロジック・コンポーネントの全部または一部が、別法として、本方法のステップを実施するためのロジック要素を備えるロジック装置中で具体化されてもよいこと、および、このようなロジック要素が、例えばプログラムマブル・ロジック・アレイ特定用途向け集積回路の中の、ロジック・ゲートなどのコンポーネントを含む場合があることも、当業者には等しく明らかであろう。このようなロジック構成はさらに、例えば、固定のまたは伝送可能なキャリア媒体を使用して記憶および伝送され得る仮想ハードウェア記述子言語を使用して、このようなアレイまたは回路中でロジック構造を一時的または永続的に確立するための、イネーブリング要素中で具体化されてもよい。

0130

さらに他の代替実施形態では、本発明は、コンピュータ・プログラム・コードを展開するステップを含むサービスを展開するコンピュータ実装方法の形で実現されてもよく、このコンピュータ・プログラム・コードは、コンピュータ・インフラストラクチャ中に展開されてそこで実行されたとき、コンピュータ・システムに本方法のすべてのステップを実施させるように動作可能である。

0131

好ましい実施形態の方法およびコンポーネントが、別法として、並列ソフトウェアを実行するための2つ以上のプロセッサを備える並列コンピューティング・システム中で完全にまたは部分的に具体化されてもよいことは、理解されるであろう。

0132

本発明の範囲を逸脱することなく、前述の例示的な実施形態に多くの改良および修正を加えることができることは、当業者には明らかであろう。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • グーグルエルエルシーの「 メッセージ交換スレッドの拡張」が 公開されました。( 2019/08/29)

    【課題・解決手段】メッセージ交換スレッドを拡張するための方法、装置、システム、およびコンピュータ可読媒体が提供される。様々な実装形態では、2つ以上のメッセージ交換クライアントを操作している2人以上の参... 詳細

  • クオント株式会社の「 評価装置、評価方法及び評価プログラム」が 公開されました。( 2019/08/22)

    【課題】Webサイトを閲覧する質の高い高エンゲージメントユーザの数や割合に基づき、Webサイトを評価する評価装置、評価方法および評価プログラムを提供する。【解決手段】高エンゲージメントユーザの数や割合... 詳細

  • 株式会社エクサの「 類似度判定プログラム」が 公開されました。( 2019/08/22)

    【課題】任意のパラメータ列について、あらかじめ特徴量を設計して抽出する作業を実施することなく、類似するパラメータ列を探索する類似度判定プログラムを提供する。【解決手段】本発明の類似度判定プログラムは、... 詳細

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ