IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-507065分散型データベース・システムにおけるテーブルの行を分散させること
<>
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図1
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図2A
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図2B
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図2C
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図2D
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図3
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図4
  • 特表-分散型データベース・システムにおけるテーブルの行を分散させること 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-16
(54)【発明の名称】分散型データベース・システムにおけるテーブルの行を分散させること
(51)【国際特許分類】
   G06F 16/182 20190101AFI20240208BHJP
【FI】
G06F16/182
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023543376
(86)(22)【出願日】2022-02-16
(85)【翻訳文提出日】2023-07-19
(86)【国際出願番号】 EP2022053728
(87)【国際公開番号】W WO2022175293
(87)【国際公開日】2022-08-25
(31)【優先権主張番号】17/178,618
(32)【優先日】2021-02-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100091568
【弁理士】
【氏名又は名称】市位 嘉宏
(72)【発明者】
【氏名】ストルツェ、クヌート
(72)【発明者】
【氏名】オリヴェイラ、ルイス
(72)【発明者】
【氏名】ガイゼルハルト、ラインホルト
(72)【発明者】
【氏名】バイヤー、フェリックス
(57)【要約】
複数の論理ノードを備える分散型データベース・システム内の論理ノードにわたるテーブル行のコピーへのアプローチでは、複数の論理ノードのうちの各論理ノードについて、複数の論理ノードのうちの現在の論理ノードへの接続が行われる。現在の論理ノード上のターゲット・テーブルに格納されることになる1つまたは複数の行が、論理ノードのうちのソース・ノードから選択され、ここで、1つまたは複数の行が、分散型データベース・システムにおけるデータを分散させるための分散ルールに基づいて選択される。行は、ターゲット・テーブルに格納されるが、ここで、行は、ソース・ノードからプルされ、現在の論理ノードに格納される。
【特許請求の範囲】
【請求項1】
分散型データベース・システム内の論理ノードにわたってテーブルの行をコピーするためのコンピュータ実行方法であって、複数の論理ノードのうちの各論理ノードについて、
1つまたは複数のコンピュータ・プロセッサによって、前記複数の論理ノードのうちの現在の論理ノードに接続することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記現在の論理ノード上のターゲット・テーブルに格納されることになる1つまたは複数の行を前記複数の論理ノードのうちの1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための分散ルールに基づいて選択される、前記選択することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記1つまたは複数の行を前記ターゲット・テーブルに格納することであって、前記1つまたは複数の行が、前記1つまたは複数のソース・ノードからプルされ、前記現在の論理ノードに格納される、前記格納することと
を含む、方法。
【請求項2】
前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
前記1つまたは複数のコンピュータ・プロセッサによって、各ノードに関連付けられた前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードからの前記1つまたは複数の行を格納するために、前記複数の論理ノードのうちの各現在の論理ノード内に元のテーブルを作成すること
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項3】
前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
前記1つまたは複数のコンピュータ・プロセッサによって、前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択するための初期の分散ルールを適用することであって、前記1つまたは複数の行は、前記ターゲット・テーブルに格納されていない、前記適用すること
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項4】
前記分散ルールが、前記初期の分散ルールとは異なり、前記初期の分散ルールは、前記分散型データベース・システムの初期の格納に関連付けられている、請求項3に記載のコンピュータ実行方法。
【請求項5】
前記分散ルールは、前記初期の分散ルールと同じであり、前記初期の分散ルールは、前記分散型データベース・システムの初期の格納に関連付けられている、請求項3に記載のコンピュータ実行方法。
【請求項6】
前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システム内の前記データを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
前記1つまたは複数のコンピュータ・プロセッサによって、前記複数の論理ノードのうちの1つまたは複数の候補ソース・ノードを判定することであって、前記候補ソース・ノードが、前記複数の論理ノードのうちのすべての論理ノード、および、前記現在の論理ノードにデータを提供することが予測される前記複数の論理ノードのうちのすべての予測されるノードを含むグループから選択され、さらに、前記複数の論理ノードのうちの前記1つまたは複数の候補ソース・ノードが、前記現在の論理ノードを前記ターゲット・ノードとして識別した、前記判定することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記1つまたは複数の行のそれぞれの行を、前記1つまたは複数の行のそれぞれの行が格納されることになる前記複数の論理ノードのうちの1つの論理ノードに割り当てることであって、前記1つまたは複数の行それぞれの行が、前記分散型データベース・システム内の前記データを分散させるための前記分散ルールを使用して割り当てられる、前記割り当てることと
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項7】
前記1つまたは複数の行を前記ターゲット・テーブルに格納することであって、前記1つまたは複数の行が、前記ソース・ノードからプルされ、前記現在の論理ノードに格納される、前記格納することが、
前記1つまたは複数のコンピュータ・プロセッサによって、前記分散ルールの分散キーの別個の値を含むルックアップ・テーブルを作成することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記ルックアップ・テーブルを使用して、前記ターゲット・ノードおよび1つまたは複数の対応する行を識別することと
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項8】
前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択された前記1つまたは複数の行をソートし、ソート順に従って前記1つまたは複数の行を前記ターゲット・テーブルに格納することをさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項9】
前記分散型データベース・システムが、第1の分散方法に従って前記複数の論理ノードにわたって前記テーブルの前記1つまたは複数の行を分散させるように構成され、さらに、分散が、前記分散ルールを使用して第2の分散方法に従って行を再分散させたいというリクエストを受け取ることに応答して実施される、請求項1に記載のコンピュータ実行方法。
【請求項10】
前記第1の分散方法が、前記分散データベース・システムにおける前記テーブルの行を最初に分散させるように構成された初期の分散方法であり、結果として、前記複数の論理ノードが、前記テーブルのそれぞれの行を有する、請求項9に記載のコンピュータ実行方法。
【請求項11】
前記1つまたは複数のコンピュータ・プロセッサによって、前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
前記1つまたは複数のコンピュータ・プロセッサによって、前記複数の論理ノードのうちの1つまたは複数の候補ソース・ノードを判定することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記現在の論理ノードに格納されることになる行を選択するための選択リクエストを前記複数の論理ノードのうちの各候補ソース・ノードに送ることと、
前記選択リクエストが送られたことに応答して、前記1つまたは複数のコンピュータ・プロセッサによって、1つまたは複数の識別された行を前記候補論理ノードから受け取ることと
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項12】
前記複数の論理ノードのうちの前記1つまたは複数の候補ソース・ノードが、前記複数の論理ノードのうちのすべての論理ノード、および、前記現在の論理ノードにデータを提供することが予測される前記複数の論理ノードのうちのすべての予測されるノードからなるグループから選択され、さらに、前記複数の論理ノードのうちの前記1つまたは複数の候補ソース・ノードが、前記現在の論理ノードを前記ターゲット・ノードとして識別した、請求項11に記載のコンピュータ実行方法。
【請求項13】
前記分散ルールが、前記複数の論理ノードにわたって行を均一に分散させること、同じ論理ノード内の分散キーの指定された範囲内のすべての行をグループ化すること、および前記同じ論理ノード内の前記分散キーの類似の値を有するすべての行をグループ化することのうちの少なくとも1つを含む、請求項1に記載のコンピュータ実行方法。
【請求項14】
分散型データベース・システム内の論理ノードにわたってテーブルの行をコピーするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、1つまたは複数のコンピュータ可読ストレージ媒体、および前記1つまたは複数のコンピュータ可読ストレージ媒体に格納されたプログラム命令を備え、前記プログラム命令が、複数の論理ノードのうちの各論理ノードについて、
前記複数の論理ノードのうちの現在の論理ノードに接続することと、
前記現在の論理ノード上のターゲット・テーブルに格納されることになる1つまたは複数の行を前記複数の論理ノードのうちの1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための分散ルールに基づいて選択される、前記選択することと、
前記1つまたは複数の行を前記ターゲット・テーブルに格納することであって、前記1つまたは複数の行が、前記ソース・ノードからプルされ、前記現在の論理ノードに格納される、前記格納することと
を行うための命令を含む、コンピュータ・プログラム製品。
【請求項15】
前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
各ノードに関連付けられた前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードからの前記1つまたは複数の行を格納するために前記複数の論理ノードのうちの各現在の論理ノード内に元のテーブルを作成すること
を行うための、前記1つまたは複数のコンピュータ可読ストレージ媒体に格納された前記プログラム命令のうちの1つまたは複数をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項16】
前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択するための初期の分散ルールを適用することであって、前記1つまたは複数の行は、前記ターゲット・テーブルに格納されていない、前記適用すること
を行うための、前記1つまたは複数のコンピュータ可読ストレージ媒体に格納された前記プログラム命令のうちの1つまたは複数をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項17】
前記分散ルールが、前記初期の分散ルールとは異なり、前記初期の分散ルールは、前記分散型データベース・システムの初期の格納に関連付けられている、請求項14に記載のコンピュータ・プログラム製品。
【請求項18】
分散型データベース・システム内の論理ノードにわたってテーブルの行をコピーするためのコンピュータ・システムであって、前記コンピュータ・システムが、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読ストレージ媒体と、
前記1つまたは複数のコンピュータ・プロセッサのうちの少なくとも1つによる実行のための、前記1つまたは複数のコンピュータ可読ストレージ媒体に格納されたプログラム命令であって、前記格納されたプログラム命令が、複数の論理ノードの各論理ノードについて、
前記複数の論理ノードのうちの現在の論理ノードに接続すること、
前記現在の論理ノード上のターゲット・テーブルに格納されることになる1つまたは複数の行を前記複数の論理ノードのうちの1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための分散ルールに基づいて選択される、前記選択すること、および
前記1つまたは複数の行を前記ターゲット・テーブルに格納することであって、前記1つまたは複数の行が、前記ソース・ノードからプルされ、前記現在の論理ノードに格納される、前記格納すること
を行うための命令を含む、前記プログラム命令と
を備える、コンピュータ・システム。
【請求項19】
前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
各ノードに関連付けられた前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードからの前記1つまたは複数の行を格納するために前記複数の論理ノードのうちの各現在の論理ノード内に元のテーブルを作成すること
を行うための、前記1つまたは複数のコンピュータ可読ストレージ媒体に格納された前記プログラム命令のうちの1つまたは複数をさらに含む、請求項18に記載のコンピュータ・システム。
【請求項20】
前記現在の論理ノード上の前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための前記分散ルールに基づいて選択される、前記選択することが、
前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択するための初期の分散ルールを適用することであって、前記1つまたは複数の行は、前記ターゲット・テーブルに格納されていない、前記適用すること
を行うための、前記1つまたは複数のコンピュータ可読ストレージ媒体に格納された前記プログラム命令のうちの1つまたは複数をさらに含む、請求項18に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタル・コンピュータ・システムの分野に関し、より詳細には、分散型データベース・システムにおけるテーブルの行を分散させるための方法に関する。
【背景技術】
【0002】
分散型データベース・システムにテーブルを格納することは、テーブルの行が格納されなければならない論理ノードにテーブルの行を割り当てることによって実施され得る。論理ノードに行を割り当てた後、行は、それぞれの論理ノードに格納されてもよい。それでも、このプロセスは、リソース負荷の大きなタスクになり得る。
【発明の概要】
【0003】
本発明の実施形態は、分散型データベース・システムにおけるテーブルの行を分散させるためのコンピュータ実行方法、コンピュータ・プログラム製品、およびシステムを含む。第1の実施形態では、複数の論理ノードのうちの各論理ノードについて、複数の論理ノードのうちの現在の論理ノードへの接続が行われる。1つまたは複数の行は、現在の論理ノード上のターゲット・テーブルに格納されることになる論理ノードのうちのソース・ノードから選択され、ここで、1つまたは複数の行は、分散型データベース・システムにおけるデータを分散させるための分散ルールに基づいて選択される。行は、ターゲット・テーブルに格納され、ここで、行は、ソース・ノードからプルされ、現在の論理ノードに格納される。
【0004】
別の態様では、本発明は、コンピュータ可読プログラム・コードが組み込まれたコンピュータ可読ストレージ媒体を備えるコンピュータ・プログラム製品に関し、コンピュータ可読プログラム・コードは、前述の実施態様による方法のステップのすべてを実行するように構成される。
【0005】
別の態様では、本発明は、複数の論理ノードを備える分散型データベース・システムのためのコンピュータ・システムに関する。コンピュータ・システムは、分散型データベース・システムの各論理ノードに接続すること、並びに、論理ノード上のターゲット・テーブルに格納されることになる複数の論理ノードのうちのソース・ノードから行を識別または選択すること、および識別された行を取り出してこれらをターゲット・テーブルに格納することを行うように、接続先論理ノード(connected-to-logical node)のそれぞれを制御することを行うように構成される。
【0006】
以下では、図面を参照しながら、本発明の実施形態が、ほんの一例として、より詳細に説明される。
【図面の簡単な説明】
【0007】
図1】本主題の例による分散型データベース・システムの図である。
図2A】本主題の例による、分散型データベース・システムにおけるテーブルの行を分散させるための方法のフローチャートである。
図2B】本主題の実例の分散方法による分散型データベース・システムにおけるデータ・フローである。
図2C】本主題の実例の分散方法による分散型データベース・システムにおけるデータ・フローである。
図2D】本主題の実例の分散方法による分散型データベース・システムにおけるデータ・フローである。
図3】本主題の例による方法のフローチャートである。
図4】本主題の例による方法のフローチャートである。
図5】本開示に含まれるような、1つまたは複数の方法ステップを実行するのに適したコンピュータ化システムの図である。
【発明を実施するための形態】
【0008】
本発明の様々な実施形態の説明は、例証のために提示されることになるが、網羅的であること、または開示の実施形態に限定的であることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実用的用途、もしくは市場で見つかる技術に対する技術的改善を最もよく説明するように、または、本明細書で開示された実施形態を他の当業者が理解できるように選ばれた。
【0009】
分散型データベース・システムは、複数のコンピュータまたは機械を備えてもよい。分散型データベース・システムの同じ機械に2つ以上の論理ノードが共存してもよい。同じ機械に共存する論理ノードは、CPUなどの処理リソースを共有してもよく、データを格納するための独自または別個のストレージ・エリアを有してもよい。これは、2つ以上の独立した機械であるかのように、機械を動かすことができる。論理ノードは、数字などの識別子に関連付けられてもよい。
【0010】
分散型データベース・システムは、分散型データベース・システムの論理ノードに1つまたは複数のテーブルを格納するように構成されてもよい。このために、テーブルの各行が格納されることになる論理ノードのうちの1つにテーブルの各行を割り当てるための分散ルールが使用されてもよい。それぞれのノードに行を割り当てた後、それぞれの論理ノードに行を格納するための格納方法が使用されてもよい。行またはレコードは、特定のユーザの名前、生年月日、およびクラスなど、関連するデータ項目の集合体である。行は、エンティティを表し、エンティティは、ユーザ、オブジェクト、または概念を指し、これらについての情報がレコードに格納される。
【0011】
例えば、テーブルが、分散型データベース・システムにまだ格納されていない場合、分散ルールは、テーブルに適用されてもよく、格納方法は、テーブルが現在格納されている場所からそれぞれの論理ノードに行をコピーすることを必要とする。この初期の格納により、複数の論理ノードの少なくとも一部の各論理ノードが、テーブルの行を格納する初期のまたは元のテーブルを有することになり得る。初期の格納方法の分散ルールは、初期の分散ルールと呼ばれてもよい。
【0012】
別の例では、テーブルが、例えば、初期の格納の後、分散型ストレージ・システムに既に格納されており、初期の分散ルールが変化した場合、新しい分散ルールが、論理ノードのそれぞれに格納された元のテーブルに適用されてもよく、格納方法は、都合のよいことに、行がそれぞれの論理ノードにコピーされるように実施されてもよい。このケースでは、新たに分散された行は、新しいテーブルと呼ばれるテーブルに格納される。すなわち、論理ノードは、初期の分散方法による行を備える元のテーブル、および、初期の分散方法とは異なり得る別の分散方法による行を備える新しいテーブルを備えてもよい。分散方法は、分散ルールの適用および格納方法の実行から成ってもよい。テーブルの初期の分散の後またはテーブルの再分散の後に適用された分散方法の分散ルールは、新しい分散ルールと呼ばれてもよい。
【0013】
分散ルールは、分散型ストレージ・システムに格納されることになるテーブルの1つまたは複数の属性についての1つまたは複数の条件を含んでもよい。1つまたは複数の属性は、分散キーと呼ばれてもよい。例えば、分散ルールは、文字Aで始まる名前を有するエンティティを表す行が、論理ノード番号1に格納されることなどを求めることとしてもよい。
【0014】
本主題は、以下のような分散された行を効率的に格納することができる。すべてのローカルに格納された行を処理して、これらを所望のターゲット・ノードに分散させるのではなく、現在のノードに格納されることになる行が、すべての論理ノードから選択され、次いで、現在のノードにプルされる。言い換えれば、行をすべての論理ノードから現在のノードにプッシュするのではなく、行は、ソース・ノードからプルされ、現在の論理ノードが、ターゲット・ノードである。本主題は、プッシュするアプローチに比べて、リソースを節約することができる。例えば、プッシュするアプローチは、1つの論理ノードが再分散をハンドリングする必要がある場合がある。この1つのノードは、すべての論理ノードからすべての行を取り出す。この1つのノードは、各行に対して、ターゲット・ノードを計算し、このターゲット・ノードに行を送る。したがって、ソース・ノード、再分散をハンドリングする現在のノード、およびターゲット・ノードという、3つの論理ノードが、各行に対して関係している。本方法は、ターゲット・ノードと、再分散をハンドリングする現在のノードとが、同じノードであり、行を現在のノードからターゲット・ノードに送る必要がもはやないので、このプッシュするアプローチを改善することができる。行は既に、ターゲット・ノードにある。結果は、再分散をハンドリングする現在のノードが、すべての行を処理せず、このノードにおいて、格納されることになる行のサブセットだけを処理することになり得る。
【0015】
1つの実施形態によれば、テーブルの行は、初期の分散ルールに従って、複数のノードの少なくとも一部の各ノードに関連付けられる。方法は、前記各ノードに関連付けられた行を格納するための物理的なターゲット・テーブルを、複数の論理ノードの少なくとも一部の各ノードにおいて作成することをさらに含み、識別された行を取り出すことは、元のテーブルから実施される。
【0016】
1つの実施形態によれば、初期の分散ルールは、新しい分散ルールとは異なるか、新しい分散ルールと同じである。新しい分散ルールが初期の分散ルールと同じであることは、分散型データベース・システムの構造が変化した場合に有利になることがあり、例えば、初期の分散ルールが、既存のノードにわたる行の均等な分散を必要とする場合、例えば追加のノードによる、変化したシステムに対するこのルールの再適用は、行の異なる分散につながり得る。
【0017】
1つの実施形態によれば、行を識別することは、行を格納することなく、複数の論理ノードの少なくとも一部に関連付けられた行を判定するために、初期の分散ルールを適用することを含む。すなわち、論理ノードのそれぞれの元のテーブルへのテーブルの初期の格納は必要とされなくてもよい。例えば、データが他のテーブルから収集され、新しいテーブルに(新しい分散ルールで)直接格納されてもよいので、第1の場所での物理的な元のテーブルを作成する必要がなくてもよい。
【0018】
1つの実施形態によれば、分散型データベース・システムは、分散方法に従って、複数の論理ノードにわたってテーブル行を分散させるように構成される。分散方法は、複数の論理ノードの各固有の論理ノードにおいて、ターゲット・ノードおよびターゲット・ノードにコピーされることになる固有の論理ノードの行を分散ルールに従って識別することを含む、行をノードに割り当てるステップ、および、行を固有の論理ノードからそれぞれの識別されたターゲット・ノードにコピーすることを含む、プッシュするステップを含む。方法は、分散方法が、各現在の論理ノードにおいて、複数の論理ノードのうちの候補ソース・ノードを判定することと、各候補ソース・ノード上で、行をノードに割り当てるステップの実行をトリガすることであって、識別されたソース・ノードが、現在の論理ノードをターゲット・ノードとして識別した候補ソース・ノードのノードである、トリガすることと、プッシュするステップを、プルするステップで置き換えることであって、プルするステップが、取り出すことを実施するために現在の論理ノードで実行される、置き換えることとを含むように、分散方法を適合させることをさらに含む。
【0019】
本実施形態は、候補ノードのそれぞれの元のテーブルに新しい分散ルールを適用して、どの行がどのノードに行くかを識別することを可能にすることができ、格納方法は、分散方法に従ってデータをコピーするために、(ソース・ノード上ではなく)ターゲット・ノード上で実行される。本実施形態は、既存のシステムにおいてシームレスに統合され得るので、有利な場合がある。例えば、分散ルールが変更されずに維持され、格納方法を適合させることによって、本主題による、改善された分散に従って、既存の分散方法を適合させることができる。
【0020】
1つの実施形態によれば、候補ソース・ノードは、複数の論理ノードのうちのすべての論理ノード、または、分散ルールに従って現在の論理ノードにデータを提供することが予測される複数の論理ノードのうちのノードである。現在の論理ノードは、どの行が現在の論理ノードにコピーされることになるかを識別するために、候補ソース・ノードに問い合わせることができる。候補論理ノードは、分散型データベース・システムのすべての論理ノードであり得る。これは、現在の論理ノードにコピーされることになるデータを有するノードを見落とす確率がほぼゼロになることにより、分散の効率が改善され得るので有利な場合がある。別の例では、候補論理ノードは、現在の論理ノードにコピーされることになるデータを含むことが予想される複数の論理ノードのうちのノードでもよく、例えば、これは、元のテーブルが、すべての論理ノード上に存在するわけではなくが、その真のサブセットにだけ存在し得るということによる。これは、例えば、前のテーブルに対する分散方法の実行から生じたログ・データを含む履歴データを使用することによって、予測され得る。これは、現在の論理ノードにコピーされることになるデータを含まないいくつかのノードに対して分散ルールを不必要に適用するのに別途必要とされる処理リソースを節約し得るので、有利になり得る。
【0021】
1つの実施形態によれば、行をノードに割り当てるステップの実行は、分散ルールの分散キーの別個の値および関連付けられたターゲット・ノードを備えるルックアップ・テーブルを作成することと、ターゲット・ノードおよび対応する行を識別するために、作成されたテーブルを使用することとを含む。例えば、ルックアップ・テーブルは、一度作成されて、その後、各ノードは、これを使用することができる。
【0022】
本実施形態は、ルックアップ・テーブルがずっと少ない列を有することにより、ルックアップ・テーブルを構築することが、すべての行を元のテーブルから新しいテーブルにコピーすることよりずっと速くなり得るので、有利な場合がある。したがって、ルックアップ・テーブルのデータ量は、著しく小さくなり、これは、(2倍のネットワーク通信が各ルックアップ行に対して必要になるとしても)ルックアップ・テーブルを構築するのに必要なリソースが少なくなることを意味する。ルックアップ・テーブルは、新しいテーブルの分散ルールに使用される値が一意ではなく、重複がある場合、著しく少ない行になる場合がある。例えば、各別個の値に対してただ1つの行がルックアップ・テーブルにおいて作成されてもよい。例えば、元のテーブルの列Cにインデックスがあり、この列Cが、新しい分散ルールに使用される場合、インデックスだけをスキャンすることで十分な場合があり、これは、テーブル全体をスキャンするよりずっと速くなり得る。したがって、ルックアップ・テーブル自体を構築することが、全体的に非常に速くなり得る。
【0023】
1つの実施形態によれば、方法は、取り出された行をソートすることと、取り出された行をソート順に従ってターゲット・テーブルに格納することとをさらに含む。本実施形態は、格納レイアウトを最適化するために、行を物理的にソートする/並べることを可能にし得る。本実施形態は、すべてのプルされた行に対して一度にソートが実施されるので、さらに有利になり得る。これは、格納されることになる同じ数の行に対してソートが複数回繰り返されるプッシュ型アプローチとは対照的である。
【0024】
1つの実施形態によれば、分散型データベース・システムは、第1の分散方法に従って複数の論理ノードにわたってテーブル行を分散させるように構成される。方法は、分散ルールを含む第2の分散方法に従って行を再分散させたいというリクエストを受け取ることに応答して実施される。
【0025】
図1は、本主題の例による分散型データベース・システム100を例証的に示す。分散型データベース・システム100は、論理ノード101.1、101.2、および101.3(まとめて、ノード101と呼ばれる)を備える。ノード101は、コンピュータ・ネットワーク(図示せず)を介して互いに通信連結されてもよい。図1には3つのノードが示されているが、図1は、例示的なものにすぎない。実際には、何百ものノードがあってもよい。ノードは、また、論理データベース区画と呼ばれてもよく、データベース区画は、独自のデータ、インデックス、構成ファイル、およびトランザクション・ログから成るデータベースの一部である。したがって、分散型データベース・システム100は、区画化されたデータベース環境を可能にする。論理データベース区画は、機械全体の制御権を与えられないという点で、物理区画とは異なる。機械には共有リソースがあるが、データベース区画は、リソースを共有しなくてもよい。プロセッサは共有されるが、ディスクおよびメモリは共有されない。例えば、2つ以上のデータベース区画が、(プロセッサの数に関わらず)同じ機械上に共存してもよい。
【0026】
分散型データベース・システム100は、IBM Db2(R) AnalyticsAccelerator(IDAA)アプライアンスなどの、アプリケーション103のテーブルTのデータを格納するように構成されてもよい。分散型データベース・システム100は、1つまたは複数のテーブル列の値に応じてテーブルTの行がノード101にわたって分割される初期の分散方法に従って、データ編成スキームを実施するように構成されてもよい。図1に示されているように、ノード101のそれぞれは、初期の分散方法に従ってこのノードに最初に割り当てられた行を格納する(「元のテーブル」と名付けられた)元のテーブルを有する。データの区画化または分散は、性能を改善し、データ管理を簡素化し得る。アプリケーション103は、分散型データベース・システム100におけるデータの格納、管理、およびアクセスを行うように構成されてもよい。例えば、分散型データベース・システム100内で最初に分散されたテーブルは、例えば他の既存のテーブルから、オン・ザ・フライで作成されてもよい。各論理ノードの元のテーブルは、例えば、INSERT INTO <元のテーブル>; SELECT *; FROM (SELECT データ FROM 他のテーブル1, 他のテーブル2 WHERE... ); WHERE <現在の接続先ノードに格納されることになる行を識別する述語>; ORDER BY....というSQL文を使用して、プルするアプローチに基づいて、そのそれぞれの行のセットが入力されてもよい。
【0027】
論理ノードのそれぞれの元のテーブルへのテーブルTのこの初期の格納は、任意選択でもよい。例えば、第1の場所での物理的な「元のテーブル」の作成は、以下で説明されるように、データが他のテーブルから収集され、「新しいテーブル」に(所望の分散で)直接格納され得るので、必要でなくてもよい。このような状況では、「元のテーブル」は仮想でもよく、そのデータは、「(SELECT データ FROM... WHERE...)」という文の結果のセットである。これは、「元のテーブル」を実際のテーブルとして作成させず、これにデータを格納することをさせない。
【0028】
分散型データベース・システム100におけるテーブルTの初期の格納の後、分散型データベース・システム100は、第2の分散方法に従って、複数の論理ノード101.1から101.3にわたってテーブルTの行を(再)分散させるように構成されてもよい。第2の分散方法は、複数の論理ノード101.1から101.3のうちの各論理ノードにおいて実行されてもよい。図1は、論理ノード101.1における第2の分散方法の実行を示しており、論理ノード101.1は、したがって、コーディネータ・ノードと考えられる。第2の分散方法は、行をノードに割り当てるステップおよびプッシュするステップを含んでもよい。固有の論理ノードにおける、行をノードに割り当てるステップの実行は、分散ルールによる、ターゲット・ノードと、ターゲット・ノードにコピーされることになる固有の論理ノードの元のテーブルの行との識別を備える。分散ルールは、例えば、テーブルTの分散キーについての条件を含んでもよい。分散キーは、テーブルTの1つまたは複数の属性を有してもよい。第2の分散方法の分散キーは、初期の分散方法の分散キーとは異なってもよい。プッシュするステップは、元のテーブルの行を固有の論理ノードからそれぞれの識別されたターゲット・ノードにコピーすることを含む。これは、コーディネータ・ノード101.1から新しいテーブルへの3つの矢印で指示されている。したがって、ノード101.1から101.3のそれぞれにおいて第2の分散方法を実行した後、テーブル行は、(「新しいテーブル」とそれぞれ名付けられた)新しいテーブルに、分散ルールに従ってノード101.1から101.3までにわたって格納されてもよい。したがって、論理ノードは、初期の分散方法に従って分散されたテーブルTの行を有する元のテーブル、および、別の異なる分散方法に従って分散されたテーブルTの行を有する新しいテーブルを有してもよい。
【0029】
例えば、第2の分散方法の分散キーが、テーブルTの属性IDであると仮定する。分散ルールは、以下の関数MOD(ID,3)を使用して、分散キーの各値に対してラウンド・ロビン・アルゴリズムを適用してもよく、関数MOD(ID,3)は、属性IDの値と3の割り算の余りを提供し、ここで、3は、ノード101.1から101.3の数を指す。関数MOD(ID,3)の結果は、ノード101.1から101.3のうちの1つを識別する数でもよい。例えば、ノード101.1での第2の分散方法の実行は、ノード101.1、101.2、および101.3に格納される必要がある行の3つのグループをそれぞれ識別することができる。次いで、ノード101.1は、例えばINSERT文を使用して、行の2つのグループを、格納のためのそれぞれのノードに送り、ノード101.1に割り当てられた行の第3のグループを、新しいテーブルにローカルに格納してもよい。同様に、ノード101.2での第2の分散方法の実行は、ノード101.1、101.2、および101.3に格納される必要がある行の3つのグループをそれぞれ識別することができる、などである。図1に指示されたように、再分散された行は、ノード101内の新しいテーブルに格納される。したがって、再分散の後、ノードのそれぞれは、それぞれがテーブルTの異なる行を有する1つの元のテーブルおよび1つの新しいテーブルを備えてもよく、元のおよび新しいテーブルは、例えば、異なる分散キーに関連付けられてもよい。それでも、これらの分散方法は、各ノードへの接続および各ノード上でのINSERT文の実行が、各ノード上でINSERT文をn個同時に動かすことになるので、困難な場合があり、これらのINSERT文のそれぞれが、書き込まれることになる行を格納するために空間(データ・ページ/エクステント)を必要とする。テーブルTの行のこの分散は、図2A図2B図2C、および図2Dを参照しながら説明されるような、別の分散方法を使用することによって、本主題によってさらに改善され得る。
【0030】
図2Aは、分散型データベース・システムにおけるテーブルの行を分散させるための方法のフローチャートである。図2Aで説明される方法は、図1に示されたシステムで実行されてもよいが、この実装形態に限定されない。図2Aの方法は、論理ノード101.1、101.2、および101.3の各論理ノードに対して実施されてもよい。これらの実行の結果は、図2B図2C、および図2Dを用いて示されている。図2Aの方法は、例えば、上記で説明された初期または第2の分散方法の代替実装形態を提供することができる。
【0031】
アプリケーション103は、ステップ201において、現在の論理ノードに接続してもよい。したがって、現在の論理ノードは、コーディネータ・ノードでもよい。すべての論理ノードが、同じデータベース・システムの一部なので、コーディネータ・ノードは、例えばSQL文の一部を他のノードに任せることによって、SQL文の処理全体を担当してもよい。
【0032】
例えば、固有のノードへの接続は、属性「ConnectNode=X」を用いてODBCにおいて達成されることが可能であり、ここで、Xは、固有のノードの数字の識別子である。アプリケーション103からのデータベース・リクエストは、分散型データベース・システム100で使用するのに適した通信プロトコルに変換されてもよい。これらのリクエストは、接続の他のエンドにあるノードによって受け取られ、処理される。これは、アプリケーション103が、ローカル・データベースにアクセスするかのように動作するのを可能にすることができる。
【0033】
現在の論理ノードは、ステップ203において、固有の分散ルールに従って現在の論理ノード上の新しいテーブルに格納されることになる複数の論理ノードのうちのソース・ノードからの行を識別してもよい。例えば、ステップ203は、固有の分散ルールに従って現在の論理ノードに格納されることになる行をすべての論理ノードから選択するだけのSQL文を実行してもよい。図1の例に続いて、各論理ノード内の元のテーブルは、MOD関数を含む分散ルールに従って現在の論理ノードにコピーされる必要がある行を選択するために使用されてもよい。
【0034】
識別された行は、ステップ205において、元のテーブルから取り出され、現在の論理ノードの新しいテーブルに格納されてもよい。これは、ソース・ノードから現在の論理ノードに行をプルすることを可能にすることができる。ステップ203および205の実行は、アプリケーション103によってトリガまたは開始されてもよい。例えば、アプリケーション103は、ステップ203および205を実施するように、(例えば制御信号を通じて)現在の論理ノードを制御してもよい。
【0035】
2つのステップ203および205は、例えば、INSERT INTO 「新しいテーブル」; SELECT * FROM 「元のテーブル」; WHERE <現在の接続先ノードに格納されることになる行を識別する述語>; ORDER BY…というSQL文を使用して実行されてもよい。
【0036】
ORDER BYという最後の文は、ソート順に従って新しいテーブルに挿入または格納される前に、選択された行をソートすることを可能にする。コーディネータ・ノードは、SQL文を準備し、SQL文のクエリ部分(すなわち、WHERE文を含むSELECT文)を各論理ノードに送ってもよい。各論理ノードは、このSELECT文を実行し、データ自体を格納したデータの(部分的な)結果のセットを生み出す。各論理ノードは、その(部分的な)結果のセットをコーディネータ・ノードに送り返す。これらは、図2B図2C、および図2Dの、元のテーブルからコーディネータ・ノードへと指し示す黒い矢印によって指示されている。コーディネータ・ノードは、(自体を生み出したものを含む)すべて部分的な結果のセットを組み合わせ、すべての行をソートし、次いで、すべての行を新しいテーブルに書き出す。
【0037】
WHERE文の述語は、現在の論理ノードにおいてコピーされることになる行を選択することを可能にする。WHERE文の述語は、現在の論理ノードに格納されることになる行すべてを識別する。
【0038】
第1の述語の例では、述語は、以下のような分散ルールを使用して定義されてもよい。MOD関数を含む上記の分散ルールに続いて、述語(およびしたがって、WHERE文)は、WHERE MOD(ID,3) = CURRENT DBPARTITIONNUMのように定義され、ここで、CURRENT DBPARTITIONNUMは、現在の論理ノードの識別子を指す。
【0039】
第2の述語の例では、述語は、以下のように定義されてもよい。ルックアップ・テーブルは、CREATETABLE 「ルックアップ・テーブル」 (<新しい分散キー列>) DISTRIBUTE BY (...); INSERT INTO 「ルックアップ・テーブル」; SELECT UNIQUE <新しい分散キー列>; FROM 「元のテーブル」のように、ノードのそれぞれにおいて構築されてもよい。
【0040】
ルックアップ・テーブルは、行分散が基づく値すべてを含む。ルックアップ・テーブルは、規則的なテーブルであり、同じ分散キーを新しいテーブルとして使用するので、ルックアップ・テーブルに挿入されたすべての行が、ターゲット分散を既に使用することになる。恩恵は、ルックアップ・テーブルは、ずっと少ない列を有するので、ルックアップ・テーブルを構築することは、すべての行を元のテーブルから新しいテーブルにコピーするよりもずっと速くなり得ることである。したがって、ルックアップ・テーブルのデータ量は著しく小さくなり、これは、2倍のネットワーク通信が各ルックアップ行に対して必要になり得るとしても、ルックアップ・テーブルを構築するのに必要なリソースが少なくなることを意味する。
【0041】
ルックアップ・テーブルが存在する場合、WHERE節は、WHERE <分散キー列> IN; (SELECT *; FROM 「ルックアップ・テーブル」;WHERE DBPARTITITONNUM(id) = CURRENT DBPARTITIONNUM)のように定義されてもよい。
【0042】
ここで、idという引数は、「ルックアップ・テーブル」内の列のうちの1つを指す。WHERE節は、新しい分散ルールに従って現在の論理ノードに格納されることになる「元のテーブル」内のすべての行を識別する。これは、現在のノードに実際に格納された分散キーのすべての値(またはその組合せ)を識別することによって行われる。したがって、分散キーに同じ値を有する「元のテーブル」内のすべての行も、現在の論理ノードに格納されることになる。これらの行のそれぞれが、(新しい)分散キーのこれらの列を単に備えるので、これらの行のそれぞれは、現在の論理ノードにコピーされることになる元のテーブル内のすべての行を識別するために使用されることが可能である。
【0043】
ステップ203および205を実行するためのアルゴリズムが、より複雑になる場合、アルゴリズムは、ネイティブSQLではなく、ユーザ定義関数で実行するものと考えられてもよい。したがって、第3の述語の例では、(例えば、getTargetLogicalNodeと名付けられた)ユーザ定義関数が使用されてもよい。分散型データベース・システム100は、既に、分散方法の実行を行っていてもよい。ユーザ定義関数は、これを活用するように書かれることが可能である。ユーザ定義関数は、新しい分散キーに関与する列の値を入力として受け取ってもよい。ユーザ定義関数は、分散キー列のリストと一緒に、値をデータベース・システムに渡す。データベース・システムは、受け取られた値のためのターゲット・ノードを判定する。ターゲット・ノードは、関数によって返される。このケースでは、SQL文は、INSERT INTO 「新しいテーブル」; SELECT * FROM 「元のテーブル」; WHERE getTargetLogicalNode(<分散キー列>)= CURRENT DBPARTITIONNUM; ORDER BY...になる。
【0044】
図1の分散型データベース・システム100の例に続いて、図2の方法は、3つの論理ノード101においてステップ201から205をそれぞれ3回実行することを可能にすることができ、すなわち、ステップ201から205は、3つの論理ノード101のそれぞれにおいて実行されてもよい。これは、図2B図2C、および図2Dに指示されている。図2Bは、コーディネータ・ノードと考えられる論理ノード101.1のためにステップ201から205を実行した結果を指示する。図2Bの元のテーブルからコーディネータ・ノードへと指し示す矢印は、コーディネータ・ノード101.1に格納される必要がある各元のテーブルの選択された行の伝送を指示する。すべての受け取られた行が、コーディネータ・ノード101.1によってソートされ、次いで、コーディネータ・ノード101.1の新しいテーブルに格納される。同様に、図2Cは、コーディネータ・ノードと考えられる論理ノード101.2のためにステップ201から205を実行した結果を指示する。図2Cの元のテーブルからコーディネータ・ノードへと指し示す矢印は、コーディネータ・ノード101.2に格納される必要がある各元のテーブルの選択された行の伝送を指示する。すべての受け取られた行が、コーディネータ・ノード101.2によってソートされ、次いで、コーディネータ・ノード101.2の新しいテーブルに格納される。図2Dは、コーディネータ・ノードと考えられる論理ノード101.3のためにステップ201から205を実行した結果を指示する。図2Dの元のテーブルからコーディネータ・ノードへと指し示す矢印は、コーディネータ・ノード101.3に格納される必要がある各元のテーブルの選択された行の伝送を指示する。すべての受け取られた行が、コーディネータ・ノード101.3によってソートされ、次いで、コーディネータ・ノード101.3の新しいテーブルに格納される。
【0045】
図3は、分散型データベース・システムにおけるテーブルの行を分散させるための方法のフローチャートである。図3で説明される方法は、図1に示されたシステムで実行されてもよいが、この実装形態に限定されない。図3の方法は、論理ノード101.1から101.3の各論理ノードによって実施されてもよく、各論理ノードは、被コーディネート・ノード(coordinated node)と呼ばれてもよい。
【0046】
ステップ301において、被コーディネート・ノードは、コーディネータ・ノードに格納されることになる行を選択したいというリクエストをコーディネータ・ノードから受け取ってもよい。リクエストを受け取ると、被コーディネート・ノードは、ステップ303において、コーディネータ・ノードに格納されることになる行を、被コーディネート・ノードの元のテーブルから選択してもよい。このために、コーディネータ・ノードに割り当てられる行を識別するために、分散方法の分散ルールが元のテーブルの行に適用されてもよい。被コーディネート・ノードは、ステップ305において、選択された行をコーディネータ・ノードに送ってもよい。
【0047】
図4は、分散型データベース・システムにおけるテーブルの行を分散させるための方法のフローチャートである。図4で説明される方法は、図1に示されたシステムで実行されてもよいが、この実装形態に限定されない。図4の方法は、論理ノード101.1から101.3の各論理ノードによって実施されてもよく、各論理ノードは、コーディネータ・ノードと呼ばれてもよい。
【0048】
ステップ401では、コーディネータ・ノードは、アプリケーション103からリクエストを受け取ってもよい。リクエストは、分散方法に従って、コーディネータ・ノードにテーブルの行を格納したいというものでよい。受け取られたリクエストは、例えば、INSERT INTO <新しいテーブル>; SELECT * FROM<古いテーブル>; WHERE <現在の接続先ノードに格納されることになる行を識別する述語>; ORDER BY...というSQL文を含んでもよい。
【0049】
コーディネータ・ノードは、ステップ403において、SQL文を実行してもよい。すべての論理ノードが、同じデータベース・システムの一部なので、コーディネータ・ノードは、SQL文の全体処理を担当する。コーディネータ・ノードは、他のノードにこの一部を任せる。より詳細には、コーディネータ・ノードは、SQL文を準備し、クエリ部分(「SELECT * FROM... WHERE...」というラインだけ)を各論理ノードに送る。各論理ノードは、このSELECT文を実行し、これ自体を格納したデータのための(部分的な)結果のセットを生み出す。各ノードは、その(部分的な)結果のセットをコーディネータ・ノードに送り返す。コーディネータは、また、独自の部分的な結果を生み出すために、SELECT文をローカルに実行してもよい。
【0050】
コーディネータ・ノードは、ステップ405において、(これ自体を生み出したものを含む)すべての部分的な結果のセットを組み合わせ、すべての行をソートし、次いで、すべての行を新しいテーブルに書き出す。
【0051】
図5は、本開示に含まれるような、方法ステップの少なくとも一部を実行するのに適した一般的なコンピュータ化システム700を表す。
【0052】
本明細書で説明された方法は、少なくとも部分的に双方向ではなく、サーバまたは組込みシステムなどの、コンピュータ化システムによって自動化されることが理解されよう。だが、例示的な実施形態では、本明細書で説明された方法は、(部分的に)双方向システムにおいて実行されることが可能である。これらの方法は、さらに、ソフトウェア712、722(ファームウェア722を含む)、ハードウェア(プロセッサ)705、または、その組合せで実行されることが可能である。例示的な実施形態では、本明細書で説明された方法は、実行可能プログラムのようなソフトウェアで実行され、パーソナル・コンピュータ、ワークステーション、ミニコンピュータ、またはメインフレーム・コンピュータなどの、特殊または汎用デジタル・コンピュータによって実行される。したがって、最も一般的なシステム700は、汎用コンピュータ701を含む。
【0053】
例示的な実施形態では、図5に示されているような、ハードウェア・アーキテクチャの観点から、コンピュータ701は、プロセッサ705、メモリ・コントローラ715に連結されたメモリ(メイン・メモリ)710、および、ローカル入出力コントローラ735を介して通信するように連結された1つまたは複数の入出力(I/O)デバイス10、745を含む。入出力コントローラ735は、当技術分野で知られているような、1つまたは複数のバスまたは他の有線もしくはワイヤレス接続であることが可能であるがこれらに限定されない。入出力コントローラ735は、通信を可能にするために、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバなどの追加の要素を有してもよいが、これらの要素は、簡潔さのために省略される。さらに、ローカル・インターフェースは、前述の構成要素間の適切な通信を可能にするための、アドレス、制御、またはデータ接続、あるいはその組合せを含む。本明細書で説明されるように、I/Oデバイス10、745は、一般に、当技術分野で知られた任意の一般的な暗号カードまたはスマート・カードを含んでもよい。
【0054】
プロセッサ705は、特にメモリ710に格納されたソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ705は、任意の特注もしくは市販のプロセッサ、中央処理ユニット(CPU)、コンピュータ701に関連付けられたいくつかのプロセッサ間の補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップもしくはチップ・セットの形式)、または、一般にソフトウェア命令を実行するための任意のデバイスであることが可能である。
【0055】
メモリ710は、揮発性メモリ要素(例えば、ランダム・アクセス・メモリ(DRAM、SRAM、SDRAMなどの、RAM))および不揮発性メモリ要素(例えば、ROM、消去可能プログラマブル・リード・オンリ・メモリ(EPROM)、電子的消去可能プログラマブル・リード・オンリ・メモリ(EEPROM)、プログラマブル・リード・オンリ・メモリ(PROM))のうちのいずれか1つまたは組合せを含むことができる。メモリ710は、様々な構成要素が互いにリモートに置かれる分散型アーキテクチャを有することができるが、プロセッサ705によってアクセスされることが可能であることに留意されたい。
【0056】
メモリ710内のソフトウェアは、1つまたは複数の別個のプログラムを含んでもよく、プログラムのそれぞれは、特に本発明の実施形態に含まれる機能といった、論理機能を実行するための実行可能命令の並べられたリストを備える。図5の例では、メモリ710内のソフトウェアは、例えばデータベース管理システムなどのデータベースを管理するための命令といった、命令を含む。
【0057】
メモリ710内のソフトウェアは、また、典型的には、適切なオペレーティング・システム(OS)711を含むことになる。OS711は、本質的に、場合によっては本明細書で説明されるような方法を実行するためのソフトウェア712などの、他のコンピュータ・プログラムの実行を制御する。
【0058】
ソフトウェア712での本明細書で説明された方法は、ソース・プログラム、実行可能プログラム(オブジェクト・コード)、スクリプト、または、実施されることになる命令のセットを備える任意の他のエンティティの形式でもよい。ソース・プログラムのとき、プログラムは、OS711と接続して適切に動作するように、コンパイラ、アセンブラ、インタープリタ、または同様のものを介して翻訳される必要があり、これらは、メモリ710内に含まれても含まれなくてもよい。さらに、方法は、データおよび方法のクラスを有するオブジェクト指向プログラミング言語、あるいは、ルーチン、サブルーチン、もしくは関数、またはその組合せを有する手続き型プログラミング言語として書かれることが可能である。
【0059】
例示的な実施形態では、従来のキーボード750およびマウス755は、入出力コントローラ735に連結されることが可能である。I/Oデバイス745などの他の出力デバイスは、例えば、プリンタ、スキャナ、マイクロフォン、および同様のものであるがこれらに限定されない、入力デバイスを含んでもよい。最終的に、I/Oデバイス10、745は、例えば、(他のファイル、デバイス、システム、またはネットワークにアクセスするための)ネットワーク・インターフェース・カード(NIC)または変調器/復調器、無線周波数(RF)または他のトランシーバ、電話インターフェース、ブリッジ、ルータ、および同様のものであるがこれらに限定されない、入力と出力両方を通信するデバイスをさらに含んでもよい。I/Oデバイス10、745は、当技術分野で知られた任意の一般的な暗号カードまたはスマート・カードであることが可能である。システム700は、ディスプレイ730に連結されたディスプレイ・コントローラ725をさらに含むことができる。例示的な実施形態では、システム700は、ネットワーク765に連結するためのネットワーク・インターフェースをさらに含むことができる。ネットワーク765は、ブロードバンド接続を介して、コンピュータ701と、任意の外部サーバ、クライアント、および同様のものとの間の通信のための、IPベースのネットワークであることが可能である。ネットワーク765は、本明細書で論じられる方法のステップの一部またはすべてを実施するために含まれることが可能な、コンピュータ701と外部システム30との間でデータを送受信する。例示的な実施形態では、ネットワーク765は、サービス・プロバイダによって運営された、管理されたIPネットワークであることが可能である。ネットワーク765は、例えば、WiFi、WiMAXなどの、ワイヤレス・プロトコルおよび技術を使用して、ワイヤレスで実行されてもよい。ネットワーク765は、また、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット・ネットワーク、または他の類似のタイプのネットワーク環境などの、パケット交換型ネットワークであることが可能である。ネットワーク765は、固定型ワイヤレス・ネットワーク、ワイヤレス・ローカル・エリア・ネットワーク(WLAN)、ワイヤレス・ワイド・エリア・ネットワーク(WWAN)、パーソナル・エリア・ネットワーク(PAN)、仮想プライベート・ネットワーク(VPN)、イントラネットまたは他の適切なネットワーク・システムでもよく、信号を送受信するための機器を含む。
【0060】
コンピュータ701が、PC、ワークステーション、インテリジェント・デバイス、または同様のものである場合、メモリ710内のソフトウェアは、ファームウェア722に含まれる基本入出力システム(BIOS:basic input output system)をさらに含んでもよい。BIOSは、スタート・アップ時にハードウェアを初期化およびテストし、OS711をスタートし、ハードウェア・デバイス間のデータ転送をサポートする、根本的なソフトウェア・ルーチンのセットである。BIOSは、コンピュータ701がアクティブにされたときにBIOSを実行できるようにROMに格納される。
【0061】
コンピュータ701が動作中のとき、プロセッサ705は、メモリ710内に格納されたソフトウェア712を実行し、メモリ710との間でデータを通信し、ソフトウェアに従ってコンピュータ701の動作を全体的に制御するように構成される。本明細書で説明された方法およびOS711は、全体的または部分的に、しかし典型的には後者で、プロセッサ705によって読み込まれ、場合によってはプロセッサ705内にバッファされ、その後実行される。
【0062】
本明細書で説明されるシステムおよび方法が、図5に示されたように、ソフトウェア712で実装されるとき、方法は、任意のコンピュータ関連のシステムもしくは方法によってまたはこれらと共に使用するために、ストレージ720などの任意のコンピュータ可読媒体に格納されることが可能である。ストレージ720は、HDDストレージなどのディスク・ストレージを含めてもよい。
【0063】
本発明は、統合の任意の可能な技術詳細レベルにおける、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せでもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含んでもよい。
【0064】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持し、格納することができる有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せでもよいがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令を記録したパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。本明細書で使用されるようなコンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの、本質的に一時的な信号であると解釈されるべきではない。
【0065】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して、外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてもよい。各計算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれの計算/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0066】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器用の構成データ、または、Smalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードでもよい。コンピュータ可読プログラム命令は、全面的にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で、スタンド・アロンのソフトウェア・パッケージとして、あるいは、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラム可能論理回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
【0067】
本発明の態様は、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行可能であることが理解されよう。
【0068】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するための手段を作り出すべく、機械を生み出すためにコンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供されてもよい。これらのコンピュータ可読プログラム命令は、また、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実行する命令を含む製品を、命令を格納したコンピュータ可読ストレージ媒体が備えるべく、コンピュータ可読ストレージ媒体に格納されてもよく、特定の様式で機能するように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指図することができる。
【0069】
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するべく、コンピュータ実行処理を生み出すために、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップが実施されるように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてもよい。
【0070】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、流れ図またはブロック図の中の各ブロックは、指定の論理機能を実行するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態では、ブロックに記された機能は、図に記された順序からはずれて行われてもよい。例えば、連続して示された2つのブロックは、実際には、同時に、実質的に同時に、部分的もしくは全面的に時間重複した様式で実行される1つのステップとして遂行されてもよく、または、ブロックは、時には、含まれる機能に応じて、逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、および、ブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定の機能もしくは行為を行うか、または、専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェア・ベースのシステムによって実行できることも指摘されることになる。
図1
図2A
図2B
図2C
図2D
図3
図4
図5
【手続補正書】
【提出日】2023-09-03
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
分散型データベース・システム内の論理ノードにわたってテーブルの行をコピーするためのコンピュータ実行方法であって、複数の論理ノードのうちの各論理ノードについて、1つまたは複数のコンピュータ・プロセッサによって、
記複数の論理ノードのうちの現在の論理ノードに接続することと、
記現在の論理ノード上のターゲット・テーブルに格納されることになる1つまたは複数の行を前記複数の論理ノードのうちの1つまたは複数のソース・ノードから選択することであって、前記1つまたは複数の行が、前記分散型データベース・システムにおけるデータを分散させるための分散ルールに基づいて選択される、前記選択することと、
記1つまたは複数の行を前記ターゲット・テーブルに格納することであって、前記1つまたは複数の行が、前記1つまたは複数のソース・ノードからプルされ、前記現在の論理ノードに格納される、前記格納することと
を含む、方法。
【請求項2】
記選択することが、
ノードに関連付けられた前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードからの前記1つまたは複数の行を格納するために、前記複数の論理ノードのうちの各現在の論理ノード内に元のテーブルを作成すること
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項3】
記選択することが、
前記1つまたは複数のコンピュータ・プロセッサによって、前記ターゲット・テーブルに格納されることになる前記1つまたは複数の行を前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択するための初期の分散ルールを適用することであって、前記1つまたは複数の行は、前記ターゲット・テーブルに格納されていない、前記適用すること
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項4】
前記分散ルールが、前記初期の分散ルールとは異なり、前記初期の分散ルールは、前記分散型データベース・システムの初期の格納に関連付けられている、請求項3に記載のコンピュータ実行方法。
【請求項5】
前記分散ルールは、前記初期の分散ルールと同じであり、前記初期の分散ルールは、前記分散型データベース・システムの初期の格納に関連付けられている、請求項3に記載のコンピュータ実行方法。
【請求項6】
記選択することが、
記複数の論理ノードのうちの1つまたは複数の候補ソース・ノードを判定することであって、前記候補ソース・ノードが、前記複数の論理ノードのうちのすべての論理ノード、および、前記現在の論理ノードにデータを提供することが予測される前記複数の論理ノードのうちのすべての予測されるノードを含むグループから選択され、さらに、前記複数の論理ノードのうちの前記1つまたは複数の候補ソース・ノードが、前記現在の論理ノードを前記ターゲット・ノードとして識別した、前記判定することと、
記1つまたは複数の行のそれぞれの行を、前記1つまたは複数の行のそれぞれの行が格納されることになる前記複数の論理ノードのうちの1つの論理ノードに割り当てることであって、前記1つまたは複数の行それぞれの行が、前記分散型データベース・システム内の前記データを分散させるための前記分散ルールを使用して割り当てられる、前記割り当てることと
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項7】
記格納することが、
記分散ルールの分散キーの別個の値を含むルックアップ・テーブルを作成することと、
記ルックアップ・テーブルを使用して、前記ターゲット・ノードおよび1つまたは複数の対応する行を識別することと
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項8】
前記複数の論理ノードのうちの前記1つまたは複数のソース・ノードから選択された前記1つまたは複数の行をソートし、ソート順に従って前記1つまたは複数の行を前記ターゲット・テーブルに格納することをさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項9】
前記分散型データベース・システムが、第1の分散方法に従って前記複数の論理ノードにわたって前記テーブルの前記1つまたは複数の行を分散させるように構成され、さらに、分散が、前記分散ルールを使用して第2の分散方法に従って行を再分散させたいというリクエストを受け取ることに応答して実施される、請求項1に記載のコンピュータ実行方法。
【請求項10】
前記第1の分散方法が、前記分散データベース・システムにおける前記テーブルの行を最初に分散させるように構成された初期の分散方法であり、結果として、前記複数の論理ノードが、前記テーブルのそれぞれの行を有する、請求項9に記載のコンピュータ実行方法。
【請求項11】
記選択することが、
記複数の論理ノードのうちの1つまたは複数の候補ソース・ノードを判定することと、
記現在の論理ノードに格納されることになる行を選択するための選択リクエストを前記複数の論理ノードのうちの各候補ソース・ノードに送ることと、
前記選択リクエストが送られたことに応答して、1つまたは複数の識別された行を前記候補論理ノードから受け取ることと
をさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項12】
前記複数の論理ノードのうちの前記1つまたは複数の候補ソース・ノードが、前記複数の論理ノードのうちのすべての論理ノード、および、前記現在の論理ノードにデータを提供することが予測される前記複数の論理ノードのうちのすべての予測されるノードからなるグループから選択され、さらに、前記複数の論理ノードのうちの前記1つまたは複数の候補ソース・ノードが、前記現在の論理ノードを前記ターゲット・ノードとして識別した、請求項11に記載のコンピュータ実行方法。
【請求項13】
前記分散ルールが、前記複数の論理ノードにわたって行を均一に分散させること、同じ論理ノード内の分散キーの指定された範囲内のすべての行をグループ化すること、および前記同じ論理ノード内の前記分散キーの類似の値を有するすべての行をグループ化することのうちの少なくとも1つを含む、請求項1に記載のコンピュータ実行方法。
【請求項14】
分散型データベース・システム内の論理ノードにわたってテーブルの行をコピーするためのコンピュータ・プログラムであって、複数の論理ノードのうちの各論理ノードについて、1つまたは複数のコンピュータ・プロセッサに、請求項1ないし13のいずれかに記載の方法の各手順を実行させるためのコンピュータ・プログラム。
【請求項15】
1つまたは複数のコンピュータ・プロセッサと、1つまたは複数のコンピュータ可読ストレージ媒体とを含むコンピュータ・システムであって
前記1つまたは複数のコンピュータ可読ストレージ媒体に、請求項14に記載のコンピュータ・プログラムが格納され、
前記1つまたは複数のコンピュータ・プロセッサのうちの少なくとも1つによって、前記コンピュータ・プログラムの前記各手順が実行されて、前記分散型データベース・システム内の前記論理ノードにわたって前記テーブルの前記行がコピーされる、
コンピュータ・システム。
【国際調査報告】