(57)【特許請求の範囲】
【請求項１】
区分データベースを、データ処理システムの少なくとも第１のデータ・ストレージ・ノード上の複数のパーティション内に格納するステップと、
前記複数のパーティションの中の第１のパーティションのサブセットを、仮想パーティションとして構成するステップと、
前記区分データベースを格納するように第２のデータ・ストレージ・ノードの割り付けを指示する入力を受け取るステップと、
前記第２のデータ・ストレージ・ノード上で、前記区分データベースの第２のパーティションを構成するステップと、
前記入力に応答して、前記第１のパーティション上の前記仮想パーティション内のデータを前記第２のパーティションに移動させることによって、前記区分データベースを前記第１及び第２のデータ・ストレージ・ノードにわたって再分配するステップと
を含む、データ処理方法。
【請求項２】
前記仮想パーティションが、前記第１のパーティションの１つ又は複数のデータ・ブロックを含む、請求項１に記載の方法。
【請求項３】
前記仮想パーティションが、前記第１のパーティション内のデータのみを含む、請求項２に記載の方法。
【請求項４】
前記方法が、前記仮想パーティションと前記第１のパーティションとを関連付けるパーティション構成データ構造体を確立するステップを含み、
前記再分配するステップが、前記第２のパーティションに移動された前記データが仮想パーティション内に存在しないことを示すように、前記パーティション構成データ構造体を更新するステップを含む、
請求項１に記載の方法。
【請求項５】
前記方法が、前記区分データベース内のデータを、複数のパーティション及び前記仮想パーティションのうちの特定の１つにマッピングする、パーティション・マップを確立するステップを含み、
前記再分配するステップが、前記第２のパーティションに移動されたデータが仮想パーティションにマッピングされないことを示すように、前記パーティション・マップを更新するステップを含む、
請求項１に記載の方法。
【請求項６】
前記再分配するステップが、
前記仮想パーティション内のデータのバックアップを作成するステップと、
前記データを前記バックアップから前記第２のパーティションに復元するステップと
を含む、請求項１に記載の方法。
【請求項７】
前記仮想パーティション内の前記データが、第１のデータであり、
前記再分配の前に、前記第１のパーティションが、前記第１のデータと、前記仮想パーティション内に存在しない第２のデータとを格納し、
前記バックアップを作成するステップが、前記第１のデータを含み、かつ前記第２のデータを除外するバックアップを作成するステップを含む、
請求項６に記載の方法。
【請求項８】
請求項１〜７の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項９】
データ処理システムであって、
プロセッサと、
前記プロセッサに結合されたデータ・ストレージと、
前記データ・ストレージ内に格納されたプログラム・コードであって、前記プロセッサによって実行されたときに、前記データ処理システムに、
区分データベースを、前記データ・ストレージの少なくとも第１のデータ・ストレージ・ノード上の複数のパーティション内に格納することと、
前記複数のパーティションの中の第１のパーティションのサブセットを、仮想パーティションとして構成することと、
前記区分データベースを格納するように前記データ・ストレージの第２のデータ・ストレージ・ノードの割り付けを指示する入力を受け取ることと、
前記第２のデータ・ストレージ・ノード上で、前記区分データベースの第２のパーティションを構成することと、
前記入力に応答して、前記第１のパーティション上の前記仮想パーティション内のデータを前記第２のパーティションに移動させることによって、前記区分データベースを前記第１及び第２のデータ・ストレージ・ノードにわたって再分配することと
を行わせる、プログラム・コードと
を含む、データ処理システム。
【請求項１０】
前記仮想パーティションが、前記第１のパーティションの１つ又は複数のデータ・ブロックを含む、請求項９に記載のデータ処理システム。
【請求項１１】
前記仮想パーティションが、前記第１のパーティション内のデータのみを含む、請求項１０に記載のデータ処理システム。
【請求項１２】
前記プログラムがさらに、前記コンピュータに、前記仮想パーティションと前記パーティションとを関連付けるパーティション構成データ構造体を確立することを行わせ、
前記再分配することが、前記第２のパーティションに移動された前記データが仮想パーティション内に存在しないことを示すように、前記パーティション構成データ構造体を更新することを含む、
請求項９に記載のデータ処理システム。
【請求項１３】
前記プログラムがさらに、前記コンピュータに、前記区分データベース内のデータを、複数のパーティション及び前記仮想パーティションのうちの特定の１つにマッピングする、パーティション・マップを確立することを行わせ、
前記再分配することが、前記第２のパーティションに移動されたデータが仮想パーティションにマッピングされないことを示すように、前記パーティション・マップを更新することを含む、
請求項９に記載のデータ処理システム。
【請求項１４】
前記再分配することが、
前記仮想パーティション内のデータのバックアップを作成することと、
前記データを前記バックアップから前記第２のパーティションに復元することと
を含む、
請求項９に記載のデータ処理システム。
【請求項１５】
前記仮想パーティション内の前記データが、第１のデータであり、
前記再分配の前に、前記第１のパーティションが、前記第１のデータと、前記仮想パーティション内に存在しない第２のデータとを格納し、
前記バックアップを作成することが、前記第１のデータを含み、かつ前記第２のデータを除外するバックアップを作成することを含む、
請求項１４に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ処理に関し、特に区分データベースの再分配に関する。
【背景技術】
【０００２】
大量のデータが格納されるコンピュータ処理環境において、データは通常、リレーショナル・データベース管理システム（ＲＤＢＭＳ）によって管理され、これを利用して、データの格納、アクセス及び管理のために１つ又は複数のデータベースをインスタンス化することができる。各データベースは、１つ又は複数の表スペースを含み、これがリレーショナル・データ・モデルに従って表データを格納する。表形式の編成が含意するように、表データは、行及び列に論理的に配置され、各々の表の行は、関連付けられた行キーを有する。
【０００３】
強化された管理性、性能及び／又は可用性を提供するために、リレーショナル・データベースは通常、各々が各自のデータ、インデックス、構成ファイル及びトランザクション・ログを有する、複数の論理又は物理パーティション（以降は、より明確な意味付けが必要とされる場合以外は単に「パーティション」と称する）に区分けされている。所与のいずれの表の表データも、パーティションのうちの１つまたは複数の中に配置されることができ、表データが存在するパーティションは、典型的にはハッシュ関数によって定められる。データは、データベースのパーティションを横断して分配されているので、おそらくは多数のコンピュータ上にある、多数のプロセッサの力を連携して利用して、データベース内のデータを格納し、検索し、処理し及び管理することができる。
【０００４】
オンライン・トランザクション処理（ＯＬＴＰ）システム、データ・ウェアハウス企業、保険及び金融会社などのような、大量のデータ量を管理する企業では、格納データの量が増えるにつれて、そのデータ・ストレージ及び処理能力を拡張することが頻繁に必要となる。例えば、企業は、照会応答時間が長くなることを回避する一方で、増大するデータ量を扱うために、企業の既存の情報技術（ＩＴ）インフラストラクチャに１つ又は複数の追加サーバ及びそれに関連付けられたストレージ・ノードを追加することがある。
【０００５】
追加サーバを使えるようにするためには、ＲＤＢＭＳは、１つ又は複数のデータベース・インスタンスを再分配及び再編成して、データベース・インスタンスが既存のサーバのストレージ・ノード上のみならず、新たに導入されたサーバのストレージ・ノード上にも存在するようにしなければならない。従来技術による、ＲＤＢＭＳがデータベースを再分配及び再編成するための従来のプロセスが、図１に示される。
【０００６】
データベースの再分配及び再編成の従来のプロセスは、ブロック１００で開始され、その後、ブロック１０２に進み、これは、ＲＤＢＭＳが、再分配されるデータベース全体のバックアップを作成することを示す。データベースのサイズによっては、データベースのバックアップの作成に、かなりの処理時間（例えば、数日から数週間）を費やすことがある。プロセスは次にブロック１０４−１０８を含む反復ループに入り、ここで、データベースが、既存のストレージ・ノードと新たなストレージ・ノードとにわたって行ごとに再分配される。再分配は、ブロック１０４で開始し、ここで、ＲＤＢＭＳは、処理されるべき次のデータベース行のキー値を読み取る。ＲＤＢＭＳは次に、データベース行のキー値を再ハッシュして、再分配の後でそのデータベース行が存在することになるターゲット・パーティション番号を定める（ブロック１０６）。ブロック１１０において、ＲＤＢＭＳは、ターゲット・パーティション番号が既存のパーティション番号と同一かどうか、つまりデータベース行が移動しないかどうか、判断する。ターゲット・パーティション番号が既存のパーティション番号と一致する場合には、プロセスは、後述するブロック１１８に移る。しかしながら、ターゲット・パーティション番号が既存のパーティション番号と一致しない場合には、プロセスは、ブロック１１２−１１６へと進む。
【０００７】
ブロック１１２−１１６において、ＲＤＢＭＳは、既存のストレージ・ノードから完全なデータベース行を読み出し、新たに追加されたストレージ・ノード上の新たなパーティションにデータベース行を挿入し、既存のストレージ・ノードからデータベース行を削除する。その後、ブロック１１８において、ＲＤＢＭＳは、データベースのすべての行が処理されたかどうか判断する。まだ処理されていなければ、プロセスは、前述のブロック１０４に戻る。しかしながら、ブロック１１８において、ＲＤＢＭＳが、データベースのすべての行が処理されたと判断した場合、プロセスは、ブロック１２０に進む。
【０００８】
理解されるように、選択されたデータベース行を、ブロック１０４−１１８に示される再分配によって既存のストレージ・ノードから新たにインストールされたストレージ・ノードに移動させると、疎らにポピュレートされた、それゆえ十分に利用されていない既存のストレージ・ノードが残ることになる。したがって、ブロック１２０において、ＲＤＢＭＳは、既存のストレージ・ノード内のデータベース行を再編成して、データベースをコンパクトなストレージ編成に戻す。再編成が成功裡に完了したら、ＲＤＢＭＳは次に、ブロック１２２においてデータベース全体の第２のバックアップを作成する。さらに、ブロック１２４に示されるように、ＲＤＢＭＳは、ユーティリティを実行して、データベースに関連した統計量を収集し、表スペース、インデックス及びパーティションを再度特徴付けし、これらの統計量をカタログに記録する。最後に、ブロック１２６において、ＲＤＢＭＳは、パーティションを認識する任意のアプリケーション（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｉｃｅｓ（ＩＩＳ））に、データベースが新たに追加されたストレージ・ノードにわたって再編成されたことを通知する。その後、データベースを再分配及び再編成するための従来プロセスは、ブロック１３０で終了する。
【０００９】
図２−図４は、従来技術による、新たに追加されたデータ・ストレージ・ノードにわたるデータベースを再分配及び再編成を示す。特に、図２は、データベースがポピュレートされた４つのデータベース・パーティション２０２ａ−２０２ｄを含むデータ・ストレージ・システム２００を示す。データベースのサイズが現在インストールされているデータ・ストレージ・ノードの容量に近づいているので、データ・ウェアハウス企業は、追加のデータベース・パーティションをサポートするために、１つまたは複数の追加ストレージ・ノードをデータ・ストレージ・システム２００に追加することができる。
【００１０】
図３に示される例において、データ・ウェアハウス企業は、４つの追加データベース・パーティション２０２ｅ−２０２ｈをサポートするために、１つまたは複数の追加ストレージ・ノードをデータ・ストレージ・システム２００に追加する。図３はさらに、図１のブロック１０４−１１８に示される従来の行ごとのデータベースの再分配に従うと、新たなデータベース・パーティション２０２ｅ−２０２ｈに移動したデータベースの部分は密にコンパクト化されるが、元のデータベース・パーティション２０２ａ−２０２ｄ上に残ったデータベースの部分は疎らにポピュレートされているので、したがってデータ・ストレージ・システム２００のストレージ容量の利用率が低下することを示している。したがって、図１のブロック１２０を参照して上述したように、ＲＤＢＭＳは、図４に示されるコンパクトで良好に分配されたデータベースを達成するためには、データベース部分２０２ａ−２０２ｄ上に存在する部分も再編成しなければならない。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、区分データベースを再分配する方法、プログラム及びデータ処理システムを提供することである。
【課題を解決するための手段】
【００１２】
いくつかの実施形態において、区分データベースは、少なくとも論理的又は物理的な第１のデータ・ストレージ・ノード上の複数の論理又は物理パーティション内に格納され、複数の論理的パーティションの中の第１のパーティションのサブセットは、仮想パーティションとして構成される。区分データベースを格納するように第２の物理データ・ストレージ・ノードの割り付けを指示する入力を受け取る。第２のパーティションが、第２のデータ・ストレージ・ノード上で構成される。入力に応答して、区分データベースは、第１のパーティション上の仮想パーティション内のデータを第２のパーティションに移動させることにより、第１及び第２のデータ・ストレージ・ノードにわたって再分配される。
【図面の簡単な説明】
【００１３】
【図１】従来技術による、データベースの再分配及び再編成のための従来プロセスの高次フローチャートを示す。
【図２】従来技術による、新たなデータ・ストレージ・ノードにわたる従来のデータベースの再分配及び再編成を示す。
【図３】従来技術による、新たなデータ・ストレージ・ノードにわたる従来のデータベースの再分配及び再編成を示す。
【図４】従来技術による、新たなデータ・ストレージ・ノードにわたる従来のデータベースの再分配及び再編成を示す。
【図５】１つの実施形態による、例示的なデータ処理環境を示す。
【図６】図５のデータ処理企業の例示的なデータ・ストレージ・ノードを示す。
【図７】１つの実施形態による、パーティション構成データ構造体の例示的な実施形態を示す。
【図８】１つの実施形態による、パーティション・マップの例示的な実施形態を示す。
【図９】データベースの再分配方法の第１の例示的な実施形態の高次論理フローチャートを示す。
【図１０】図９に示された第１の例示的な方法による、データベースの例示的な再分配を示す。
【図１１】データベースの再分配方法の第２の例示的な実施形態の高次論理フローチャートを示す。
【図１２】図１１に示された第２の例示的な方法による、データベースの例示的な再分配を示す。
【発明を実施するための形態】
【００１４】
ここで、図面、特に図５を参照すると、１つの実施形態による、例示的なデータ処理環境３００の高次ブロック図が示される。図示されるように、例示的なデータ処理環境３００は、大量のデータを管理する企業、政府機関、非営利団体又は教育機関などのような組織により又はそれに代わって運営されることがある、データ処理企業３１０を含む。データ処理企業３１０は、通信のために、有線又は無線の構内又は広域通信網、携帯電話網及び／又は公衆交換電話網（ＰＳＴＮ）のような、１つまたは複数の回線交換又はパケット交換通信ネットワーク３０４に結合されている。したがって、データ処理企業３１０は、通信ネットワーク３０４を介して、機器３０２ａ−３０２ｄ（例えば、サーバ・コンピュータ・システム、パーソナル・コンピュータ・システム、携帯型コンピュータ・システム、移動体電話、スマートフォン、地上通信電話）と通信することができる。
【００１５】
機器３０２ａ−３０２ｄとデータ処理システム３１０との間の通信は、例えばＰＳＴＮ又はインターネットプロトコル上の音声通信（ＶｏＩＰ）接続を介した音声通信、及び／又は、例えばインスタント・メッセージ、簡易メール転送プロトコル（ＳＭＴＰ）又はハイパーテキスト転送プロトコル（ＨＴＴＰ）を介したデータ通信を含むことができる。例えば、データ処理企業３１０と機器３０２ａ−３０２ｄとの間の通信は、機器３０２ａ−３０２ｄからデータ処理企業３１０へのデータ要求の送信と、データ処理企業３１０から機器３０２ａ−３０２ｄへの応答データ（例えば、プログラム・コード、画像、グラフィックス、テキスト、音声、映像及び／又はそのようなデータを含むファイル）の送信とを含むことができる。
【００１６】
さらに図５を参照すると、データ処理企業３１０は、サーバ３１２ａ−３１２ｎのような１つ又は複数の物理コンピュータ・システムを含むことができ、これらは、通信のために、例えば、イントラネット、仮想私設ネットワーク（ＶＰＮ）又はソケット接続のようなケーブル及び／又はネットワーク接続を含む、通信ファブリック３１４によって結合することができる。図示された例示的な実施形態において、サーバ３１２ａは、サーバ３１２ａが通信ネットワーク３０４及び通信ファブリック３１４を介して通信することを可能にする、１つ又は複数のネットワーク・インタフェース３１６を含む。サーバ３１２ａは、例えば、１つ又は複数のデータベースに編成されたデータを管理し、アクセスし及び操作するために、データ及びプログラム・コードを処理する１つ又は複数のプロセッサ３２０をさらに含む。サーバ３１２ａは、ポート、ディスプレイ及び外付け機器などのような入力／出力（Ｉ／Ｏ）デバイス３２２も含み、これが、入力を受け取り、かつサーバ３１２ａによって実行された処理の出力を提供する。最後に、サーバ３１２ａは、メモリ、固体ドライブ、光学又は磁気ディスク・ドライブ、テープ・ドライバなどを含む１つ又は複数の揮発性又は不揮発性ストレージ・デバイスを含むことができる、データ・ストレージ３３０を含む。
【００１７】
図示された実施形態において、データ・ストレージ３３０は、サーバ３１２ａのハードウェア・リソースを管理し、かつサーバ３１２ａ上で実行されるその他のソフトウェアに対して共通サービスを提供する、オペレーティング・システム（ＯＳ）３３２を格納する。例えば、ＯＳ３３２は、ＡＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）又はＷｉｎｄｏｗｓ（登録商標）オペレーティング・システムのうちの１つで実装することができる。データ・ストレージ３３０はまた、ニューヨーク州、アーモンクのＩＢＭコーポレーションから入手可能なＤＢ２（登録商標）リレーショナル・データベース管理システム（ＲＤＢＭＳ）のようなデータベース・マネージャ３４０も含み、これが、例示的なデータベース３５０のような１つ又は複数のデータベース内のデータを管理し、これにアクセスし、これを操作する。いくつかの実施形態において、データベース・マネージャ３４０は、ＯＳ３３２又はその他のソフトウェア・プログラムと一体化されたものとすることができる。データベース・マネージャ３４０は、データベース３５０に加えて、データベース３５０の種々の論理パーティションを定め、かつパーティションをデータ処理企業３１０の物理ストレージ・リソースに対してマッピングする、１つ又は複数のパーティション構成データ構造体３５２を維持する。データベース・マネージャ３４０は、さらに後述するように、データベース３５０の仮想パーティションをデータベース３５０の論理パーティションに対してマッピングする、パーティション・マップ３５４を随意に維持することもできる。
【００１８】
種々の実施形態において、データベース・マネージャ３４０及び／又はＯＳ３３２は、通信ファブリック３１４及び通信ネットワーク３０４を介したサーバ３１２ａと機器３０２ａ−３０２ｄとの通信をサポートする、コードを含むことができる。いくつかの実施形態においては、ＯＳ３３２及び／又はデータベース・マネージャ３４０内に必ずしも適切な通信能力が組み込まれているわけではないので、データ・ストレージ３３０は、サーバ３１２ａが通信ファブリック３１４及び通信ネットワーク３０４を介して他のサーバ３１２及び機器３０２ａ−３０２ｄと通信することを可能にする、ウェブ・サーバ（例えば、Ａｐａｃｈｅ、ＩＩＳなど）、音声自動応答（ＩＶＲ）及び／又はその他のプログラム・コードのような、通信コード３４２をさらに含むことができる。特に、通信コード３４２は、実装されている場合、データベース・マネージャ３４０に対するデータベース照会の通信と、データベース・マネージャ３４０から要求者に対する応答データの通信とをサポートする。
【００１９】
データ・ストレージ３３０の内容は、いくつかの実施形態においてはサーバ３１２ａ上にローカライズされていてもよく、他の実施形態においては、多重のサーバ３１２ａ−３１２ｎのデータ・ストレージ３３０にわたって分配されることを理解されたい。さらに、サーバ３１２ａのデータ・ストレージ３３０内に図示された内容は、随意に、データ処理企業３１０のストレージ・エリア・ネットワーク（ＳＡＮ）３６０上に部分的に又は全体が常駐することができることを理解されたい。図示されるように、ＳＡＮ３６０は、ストレージ要求を受け取り、かつ供給するスイッチ／コントローラ（ＳＷ／Ｃ）と、その各々が１つ又は複数の物理的不揮発性メモリドライブ、ハードディスクドライブ、光記憶ドライブ、テープドライブなどを含むことができる、多重のデータ・ストレージ・ノード３７０ａ−３７０ｋとを含む。いくつかの実施形態において、データ・ストレージ・ノード３７０ａ−３７０ｋは、このような物理ストレージ・リソースの仮想化された抽象を示す論理エンティティとすることができる。
【００２０】
上記の説明を検討すると、データ処理企業３１０が実体化される形態は、例えば、編成の種類、データベース３５０のサイズ、データベース３５０に照会することができる機器３０２ａ−３０２ｄの数などの１つ又は複数の要因に基づいて、実施形態ごとに様々であり得ることが理解されよう。例えば、１つ又は複数の手持ち型、ノートブック型、デスクトップ型又はサーバのコンピュータ・システムを含むことができる、このような実装のすべてが、添付の特許請求の範囲において述べられる本発明の実施形態として企図される。
【００２１】
図６は、図５のデータ処理企業３１０内のデータ・ストレージ・ノード４００（例えば、ＳＡＮ３６０のデータ・ストレージ・ノード３７０又はサーバ３１２のデータ・ストレージ３３０内のデータ・ストレージ・ノード）のより詳細な図を示す。図示された例において、データ・ストレージ・ノード４００は、８つの論理又は物理パーティションをホストし、以後、これらを、それぞれＬＰ０−ＬＰ７と番号付けされた論理パーティションと仮定する。ＲＤＢＭＳにおいて、データ・ブロックＢ０−Ｂ１５の各々は、共通の行キー・ハッシュを有する１つ又は複数のデータベース行に対応することができる。
【００２２】
本開示によれば、データベース・マネージャ３４０は、データ・ブロックＢ０−Ｂ１５のサブセットを仮想パーティションに割り当てる。例えば、データベース・マネージャ３４０は、データ・ブロックＢ０−Ｂ１５の各々を、ＶＰ８−ＶＰ１５と番号付けされた８つの仮想パーティションのうちのそれぞれ１つに割り当てることができる。種々のシナリオにおいて、各仮想パーティションは、好ましくはすべてが共通の論理パーティション上に存在する、１つ又は複数のデータ・ブロックを含むことができる。図９−図１２を参照して以下でさらに論じるように、データベース・マネージャ３４０は、仮想パーティションを参照することによって、データベース３５０を効率的に再分配することができる。
【００２３】
ここで図７を参照すると、１つの実施形態によるパーティション構成データ構造体３５２の例示的な実施形態が示される。図示された実施形態において、例えば１つ又は複数のデータベース構成ファイルに実装することができる、パーティション構成データ構造体３５２は、データベース３５０の複数の論理パーティションを定め、かつ論理パーティションをデータ処理企業３１０の物理ストレージ・リソースに対してマッピングする、複数の構成エントリ５００を含む。
【００２４】
例示的な実施形態において、パーティション構成データ構造体３５２の各構成エントリ５００は、ノード番号フィールド５０２、ホスト名フィールド５０４、論理パーティション番号フィールド５０６及び仮想パーティション・フラグ５０８を含む、多数のフィールドを含む。ノード番号フィールド５０２は、データベース３５０のパーティションを一意に識別する整数を指定する。ノード番号を論理パーティションに限定する従来の区分データベースとは対照的に、ノード番号フィールド５０２は、好ましくは、データベース３５０の論理パーティション及び仮想パーティションの各々に対する一意のノード番号を含む。ホスト名フィールド５０４は、ノード番号フィールド５０２内で識別されたデータベース・パーティションのＴＣＰ／ＩＰホスト名（例えば、「サーバＡ」）を識別する。さらに、論理ポート・フィールド５０６は、ノード番号フィールド５０２内で識別されたデータベース・パーティションに割り当てられた論理ポート（例えば、論理パーティション）を指定し、仮想パーティション・フラグ５０８は、ノード番号フィールド５０２内で指定されたパーティションが仮想パーティションであるかどうかを指定する。構成エントリ５００は、論理パーティションへの通信パス及び／又はオペレーティング・システム固有の情報といった追加の構成情報を提供する、１つ又は複数の追加のフィールドを含むことができることを理解されたい。
【００２５】
図７で示されるパーティション構成データ構造体３５２の例示的な実施形態を想定すると、図６のデータ・ストレージ・ノード４００を記述するパーティション構成データ構造体３５２の部分は、以下の表Ｉに示されるように表すことができる。
【表１】
0005792594.tif 000002
【００２６】
ここで図８を参照すると、１つの実施形態による例示的なパーティション・マップ３５４が示される。図示された実施形態において、データベース・マネージャ３４０は、パーティション・マップ３５４を、その各々がハッシュ値フィールド６０２、仮想パーティション番号フィールド６０４及び論理パーティション番号フィールド６０６を含む複数の行６００を含む、ルックアップ表として実装する。したがって、各行６００は、それぞれのハッシュ値（例えば、データベース３５０の行の行キーに由来するハッシュ値から導出される）を、論理パーティション番号と、適用できる場合には仮想パーティション番号とに関連付ける。例えば、０から４０９５までの範囲のハッシュ値と、図６に示されるような８つの論理パーティションＬＰ０−ＬＰ７を実装するデータ・ストレージ・ノード４００とを仮定すると、パーティション・マップ３５４は、以下の表ＩＩにまとめられる値を格納する４０９６個の行６００を含むことができる。
【表２】
0005792594.tif 000003
【００２７】
ここで図９を参照すると、第１の実施形態による、データベースを再分配する例示的な方法の高次論理フローチャートが示される。図示された方法は、例えば、サーバ３１２の１つ又は複数のプロセッサ３２０によるデータベース・マネージャ３４０の実行を通じて、実施することができる。本明細書で提示される他の論理フローチャートと同様に、ステップは、厳密に経時的な順序ではなく論理的に記述されており、少なくともいくつかの実施形態において、１つ又は複数のステップは、同時に行われることもあり、又は図示されているのとは異なる順序で行われることもあることを理解されたい。
【００２８】
図９に示されたプロセスは、ブロック７００で開始し、その後、ブロック７０２に進み、これは、データベース・マネージャ３４０が、例えば、管理者の入力に応答して又は所定のデフォルトに基づいて自動的に、データベース３５０内で所望の数の仮想パーティションを構成することを示す。表Ｉで示され、かつ図６に描かれた例示的な区分データベース３５０において、データベース・マネージャ３４０は、仮想パーティションＶＰ８−ＶＰ１５をそれぞれ論理パーティションＬＰ０−ＬＰ７内に確立するために、ブロック７０２において、パーティション構成データ構造体３５２の最後から８つのエントリ５００を入力することができる。上記のように、仮想パーティションは、データベース３５０を格納するために割り付けられた物理ストレージ容量が拡張したときに再分配されることになる、データベース３５０のデータを含む。仮想パーティションの数及び位置を構成すると共に、データベース・マネージャ３４０は、データのハッシュ値（例えば、行キー）とパーティション構成データ構造体３５２によって構成された論理及び仮想パーティションとの間ですばやくマッピングするために、随意にパーティション・マップ３５４を確立する（ブロック７０４）。データベース・マネージャ３４０は、代替的に、各ハッシュ値に関連付けられる論理及び仮想パーティションを必要なときに計算することもできるので、ブロック７０４は随意である。
【００２９】
プロセスは、ブロック７０４からブロック７１０に進み、これは、受け取った入力が、拡張された物理ストレージ容量にわたってデータベース３５０を再分配すべきことを指示しているかどうかを、データベース・マネージャ３４０が判断することを示す。理解されるように、データベース３５０を格納するために利用可能な拡張された物理ストレージ容量は、サーバ３１２をデータ処理企業３１０に追加すること、追加のデータ・ストレージ・ノード３７０をＳＡＮ３６０に追加すること、及び／又はデータ処理企業３１０の既存のデータ・ストレージ・ノードを、データベース３５０を格納するように再割り付けすることによって、利用可能となり得る。拡張された物理ストレージ容量にわたってデータベース３５０を再分配すべきであることを指示する入力をデータベース・マネージャ３４０が検出しない場合には、プロセスはブロック７１０に留まる。プロセスがブロック７１０に留まっている間は、データベース・マネージャ３４０は、当該分野で公知のように、データベース３５０の構造化照会言語（ＳＱＬ）クエリに応答するデータを提供すること、及び任意の要求された管理又は構成関数などを実行することを含む、従来のデータベース処理を行う。ブロック７１０におけるデータベース・マネージャ３４０による、拡張された物理ストレージ容量にわたってデータベース３５０を再分配すべきであることを指示する入力（例えば、ユーザ・コマンド）を受け取ったとの判断に応答して、プロセスは、ブロック７１２へと移る。
【００３０】
ブロック７１２は、データベース・マネージャ３４０が、データベース３５０を格納するために割り付けられた新たな物理ストレージ・ノード上に論理パーティションを確立することを示す。プロセスは次に、ブロック７２０−７３０を含むループへと入り、ここで、仮想パーティションが、既存の論理パーティションからブロック７１２で確立された新たな論理パーティションに再分配される。最初にブロック７２０を参照すると、データベース・マネージャ３４０は、例えばパーティション構成データ構造体３５２を参照することにより、データベース３５０のすべての仮想パーティションが処理されたか否かを判断する。データベース３５０のすべての仮想パーティションがすでに処理されたとブロック７２０においてデータベース・マネージャ３４０が判断したことに応答して、プロセスは、ブロック７２０から、後述される７４０に進む。しかしながら、まだデータベース３５０のすべての仮想パーティションが処理されてはいないとブロック７２０においてデータベース・マネージャ３４０が判断した場合には、データベース・マネージャ３４０は、処理のための仮想パーティション、例えば、パーティション構成データ構造体３５２内にリストされた次の仮想パーティションを選択する(ブロック７２２）。
【００３１】
ブロック７２４において、データベース・マネージャ３４０は、例えば、仮想パーティション番号が、新たに割り付けられたストレージ・ノード上に確立された論理パーティションのうちの１つに割り当てられた論理パーティション番号と一致するか否かを判断することによって、処理のために選択された仮想パーティションを移動させるか否かを判断する。現在選択された仮想パーティションを移動させないとの判断に応答して、プロセスは、すでに説明したブロック７２０に戻る。しかしながら、ブロック７２４においてデータベース・マネージャ３４０が、選択された仮想パーティションを移動すべきであると判断した場合、プロセスはブロック７２６へと移る。ブロック７２６は、データベース・マネージャ３４０が、既存の論理パーティションから、一致する論理パーティション番号を有する論理パーティションへの逐次的なアクセス動作を用いて、仮想パーティションのデータを移動させることを示す。データベース・マネージャ３４０は次に、移動されたパーティションに関連してデータ・ストレージ・ノード上に格納されたメタデータを更新し（ブロック７２８）、パーティション構成データ構造体３５２内の関連付けられた構成エントリ５００の仮想パーティション・フラグ５０８をクリアする（ブロック７３０）。結果として、移動されたパーティションは、もはや仮想パーティションではなくなり、新たに割り付けられたデータ・ストレージ・ノード上の論理パーティションのうちの１つのデータ・ブロックへと変換される。プロセスは、ブロック７３０からブロック７２０へと戻り、これは、データベース・マネージャ３４０が、もしあれば次の仮想パーティションを処理することを示す。
【００３２】
ブロック７２０においてデータベース・マネージャ３４０が、すべての仮想パーティションがすでに処理されたと判断したことに応答して、データベース・マネージャ３４０は、ハッシュ値と論理及び仮想パーティション番号との間の修正された関係を反映するようにパーティション・マップ３５４を更新する（ブロック７４０）。ブロック７４０に続いて、図９に示されたプロセスは、ブロック７４２で終了する。
【００３３】
図１０は、図９に示された例示的な方法による、データベース３５０の例示的な再分配を示す。図１０に示される例において、データベース３５０は、図６を参照して先に論じたように、元は、データ・ストレージ・ノード４００の８つの論理パーティション（すなわちＬＰ０−ＬＰ７）上のみに格納されている。論理パーティションＬＰ０−ＬＰ７上で、データベース・マネージャ３４０は、データ・ブロックＢ８−Ｂ１５をそれぞれ仮想パーティションＶＰ８−ＶＰ１５として構成する。
【００３４】
データベース３５０を収容するために利用可能なデータ処理環境３１０の物理データ・ストレージ容量は、その後、追加のデータ・ストレージ・ノード８００を含むように拡張される。ブロック７１２に関して述べたように、データベース・マネージャ３４０は、データ・ストレージ・ノード８００を、８つの論理パーティション番号ＬＰ８−ＬＰ１５で構成する。さらに、図９のブロック７２０−７３０に従って、データベース・マネージャ３４０は、仮想パーティションＶＰ８−ＶＰ１５（それぞれデータ・ブロックＢ８−Ｂ１５に対応する）の各々を、データ・ストレージ・ノード８００上の論理パーティションＬＰ８−ＬＰ１５のそれぞれ１つの上に再分配し、データ・ブロックＢ０−Ｂ７をデータ・ストレージ・ノード４００の論理パーティションＬＰ０−ＬＰ７上に残す。
【００３５】
サーバ３１２上にあるデータ・ストレージ・ノード８００がホスト名「サーバＢ」を有すると仮定すると、データベース・マネージャ３４０は、パーティション構成データ構造体３５２を上記の表Ｉでまとめられた状態から下記の表ＩＩＩに示される状態に更新する。
【表３】
0005792594.tif 000004
さらに、データベース・マネージャ３４０は、パーティション・マップ３５４を上記の表ＩＩにまとめられた状態から下記の表ＩＶに示される状態に更新する。
【表４】
0005792594.tif 000005
【００３６】
図１と図９−図１０とを比較することによって、図９に示される例示的なプロセスが、処理が集中する図１のステップの多くを不要にすることに留意されたい。例えば、図９において、ブロック１０６に示されるようにデータベース３５０の行を再ハッシュする必要はない。さらに、図１のブロック１０２及び１２２に示されるように、データベース３５０の再分配の前又は後にデータベース３５０をバックアップする必要もない。その上、ブロック１２０に示されるようにデータベース３５０の再編成を行う必要もなく、ブロック１２４に示されるようにデータベース統計量を更新する必要もない。最後に、ブロック１２６に示されるようにパーティションを認識するアプリケーションを更新する必要もない。
【００３７】
図１１を参照すると、第２の実施形態による、データベースを再分配する例維持的な方法の高次論理フローチャートが示される。特に、図１１に示されるプロセスは、データベース３５０の仮想パーティションのバックアップ及び復元を通じて、データベース３５０を新たに割り付けられた１つ又は複数の物理ストレージ・ノード上に再分配する。
【００３８】
図１１に示されるプロセスは、ブロック９００で開始し、その後、以前に説明したように、例えば管理者の入力に応答して、データベース３５０内で所望の数の仮想パーティションを構成することを示す、ブロック９０２に進む。仮想パーティションの数及び位置を構成すると共に、データベース・マネージャ３４０は、データのハッシュ値（例えば、行キー）とパーティション構成データ構造体３５２によって構成された論理及び仮想パーティションとの間ですばやくマッピングするために、随意にパーティション・マップ３５４を確立する（ブロック９０４）。プロセスは、ブロック９０４からブロック９１０に進み、これは、受け取った入力が、拡張された物理ストレージ容量にわたってデータベース３５０を再分配すべきことを指示しているかどうかを、データベース・マネージャ３４０が判断することを示す。拡張された物理ストレージ容量にわたってデータベース３５０を再分配すべきであることを指示する入力をデータベース・マネージャ３４０が検出しない場合には、プロセスはブロック９１０に留まる（この時間の間は、データベース・マネージャ３４０は、他の従来のデータベース管理動作を行うことができる）。
【００３９】
ブロック９１０におけるデータベース・マネージャ３４０による、拡張された物理ストレージ容量にわたってデータベース３５０を再分配すべきであることを指示する入力を受け取ったとの判断に応答して、プロセスは、ブロック９１２へと移る。ブロック９１２は、データベース・マネージャ３４０が、データベース３５０を格納するために割り付けられた新たな物理ストレージ・ノード上に論理パーティションを確立することを示す。プロセスは次に、ブロック９２０−９３０を含むループへと入り、ここで、仮想パーティションが、ブロック９１２で確立された既存の論理パーティションからバックアップされる。最初にブロック９２０を参照すると、データベース・マネージャ３４０は、例えばパーティション構成データ構造体３５２を参照することにより、データベース３５０のすべての仮想パーティションが処理されたか否かを判断する。データベース３５０のすべての仮想パーティションがすでに処理されたとブロック９２０においてデータベース・マネージャ３４０が判断したことに応答して、プロセスは、ブロック９２０から、後述される９４０に進む。しかしながら、まだデータベース３５０のすべての仮想パーティションが処理されてはいないとブロック９２０においてデータベース・マネージャ３４０が判断した場合には、データベース・マネージャ３４０は、処理のための仮想パーティション、例えば、パーティション構成データ構造体３５２内にリストされた次の仮想パーティションを選択する(ブロック９２２）。次に、データベース・マネージャ３４０は、選択された仮想パーティションのバックアップを作成するが、好ましくは、そのバックアップから、仮想パーティションをホストする残りの論理パーティションを除外する（ブロック９２６）。データベース・マネージャ３４０は次に、選択された仮想パーティションに関連付けられたパーティション構成データ構造体３５２内の仮想パーティション・フラグ５０８をクリアする（ブロック９３０）。プロセスは、ブロック９３０からブロック９２０へと戻り、これれは、データベース・マネージャ３４０が、もしあれば次の仮想パーティションを処理することを示す。
【００４０】
ブロック９２０においてデータベース・マネージャ３４０が、既存の物理データ・ストレージ・ノード上のデータベース３５０のすべての仮想パーティションがすでに処理されたと判断したことに応答して、データベース・マネージャ３４０は、仮想パーティションの各々を、ブロック９２６で作成したバックアップから、データ処理企業３１０の新たに割り付けられた物理ストレージ・ノードのそれぞれの論理パーティション（例えば、バックアップされた仮想パーティションの仮想パーティション番号と一致する論理パーティション番号を有する論理パーティション）へと復元する。結果として、移動されたパーティションは、もはや仮想パーティションではなくなり、新たに割り付けられたデータ・ストレージ・ノードの論理パーティション上のデータ・ブロックへと変換される。データベース・マネージャ３４０は次に、復元されたパーティションに関連してデータ・ストレージ・ノード上に格納されたメタデータを更新し（ブロック９４２）、移動されたパーティションを既存の物理ストレージ・ノードから削除する（ブロック９４４）。データベース・マネージャ３４０は、もしあれば、ハッシュ値と論理及び仮想パーティション番号との間の修正された関係を反映するようにパーティション・マップ３５４を更新する（ブロック９４６）。ブロック９４６に続いて、図１１に示されたプロセスは、ブロック９５０で終了する。
【００４１】
図１２は、図１１に示される第２の例示的な方法による、データベースの例示的な再分配を示す。図１２に示される例において、データベース３５０は、図６及び図１０を参照して先に論じたように、元は、データ・ストレージ・ノード４００の８つの論理パーティション（すなわちＬＰ０−ＬＰ７）上のみに格納されている。論理パーティションＬＰ０−ＬＰ７上で、データベース・マネージャ３４０は、データ・ブロックＢ８−Ｂ１５をそれぞれ仮想パーティションＶＰ８−ＶＰ１５として構成する。
【００４２】
データベース３５０を収容するため割り付けられたデータ処理環境３１０の物理データ・ストレージ容量は、その後、追加のデータ・ストレージ・ノード８００を含むように拡張され、データベース・マネージャ３４０は、その上でＬＰ８−ＬＰ１５で番号付けされる８つの論理パーティションを構成する。図１１のブロック９２０−９３０に従って、データベース・マネージャ３４０は、仮想パーティションＶＰ８−ＶＰ１５（それぞれ、データ・ブロックＢ８−Ｂ１５に対応する）の各々のバックアップを含み、好ましくは論理パーティションＬＰ０−ＬＰ７上に存在するその他のデータを除外する、仮想パーティション・バックアップ１０００を作成する。ホストの論理パーティションに戻す従来の復元を行うのではなく、データベース・マネージャ３４０は、各仮想パーティションを、仮想パーティション・バックアップ１０００から、データ・ストレージ・ノード８００上の論理パーティションＬＰ８−ＬＰ１５のうちのそれぞれ１つへと復元する。さらに、データベース・マネージャ３４０は、対応する仮想パーティションをデータ・ストレージ・ノード４００から削除し、データ・ブロックＢ０−Ｂ７をデータ・ストレージ・ノード４００上の論理パーティションＬＰ０−ＬＰ７上に残す。この方法において、データベース・マネージャ３４０は、図１０に示すようにデータを直接移動させることによるのではなく、そのバックアップ能力を強化することによって、データベース３５０の仮想パーティションを既存の物理データ・ストレージ・ノード４００から新たに割り付けられた物理データ・ストレージ・ノード８００上に再分配する。しかしながら、得られるパーティション構成データ構造体３５２及びパーティション・マップ３５４は、上記の表ＩＩＩ及び表ＩＶにまとめられたものと同一になる。
【００４３】
説明してきたように、少なくともいくつかの実施形態において、区分データベースは、少なくとも論理的又は物理的な第１データ・ストレージ・ノード上の複数の論理又は物理パーティション内に格納され、複数の論理パーティションの中の第１のパーティションのサブセットは、仮想パーティションとして構成される。区分データベースを格納するように第２の物理データ・ストレージ・ノードの割り付けを指示する入力を受け取る。第２のパーティションが、第２のデータ・ストレージ・ノード上で構成される。入力に応答して、区分データベースは、第１のパーティション上の仮想パーティション内のデータを第２のパーティションに移動させることにより、第１及び第２のデータ・ストレージ・ノードにわたって再分配される。
【００４４】
本発明を、１つ又は複数の好ましい実施形態を参照して説明しながら具体的に示してきたが、当業者であれば、本発明の真意及び範囲から逸脱することなく、その形態及び詳細における種々の変更を行うことができることが理解されよう。例えば、本発明の機能を命令するプログラム・コードを実行するコンピュータ・システムに関して態様を説明してきたが、本発明は代替的に、データ処理システムで処理されて、本発明の機能を実行することができるプログラム・コードを格納した、有形の一過性ではないデータ・ストレージ媒体（例えば、光又は磁気ディスク又はメモリ）を含む、プログラム製品として実装することもできることを理解されたい。
【符号の説明】
【００４５】
２００：データ・ストレージ・システム
２０２：データベース・パーティション
３００：データ処理環境
４００、８００：データ・ストレージ・ノード
３５２：パーティション構成データ構造体
３５４：パーティション・マップ
５００：構成エントリ
【図１】
0005792594.tif 000006
【図２】
0005792594.tif 000007
【図３】
0005792594.tif 000008
【図４】
0005792594.tif 000009
【図５】
0005792594.tif 000010
【図６】
0005792594.tif 000011
【図７】
0005792594.tif 000012
【図８】
0005792594.tif 000013
【図９】
0005792594.tif 000014
【図１０】
0005792594.tif 000015
【図１１】
0005792594.tif 000016
【図１２】
0005792594.tif 000017