(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-29
(45)【発行日】2024-09-06
(54)【発明の名称】分散知識ベースのためのオントロジーに基づくデータ・ストレージ
(51)【国際特許分類】
G06F 16/901 20190101AFI20240830BHJP
G06F 16/27 20190101ALI20240830BHJP
【FI】
G06F16/901
G06F16/27
(21)【出願番号】P 2022520219
(86)(22)【出願日】2020-09-30
(86)【国際出願番号】 IB2020059141
(87)【国際公開番号】W WO2021070013
(87)【国際公開日】2021-04-15
【審査請求日】2023-02-24
(32)【優先日】2019-10-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】カーマー、アブドゥル
(72)【発明者】
【氏名】オズカン、ファトマ
(72)【発明者】
【氏名】アロタイビ、ラナ
(72)【発明者】
【氏名】リー、チュアン
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】特開2013-033452(JP,A)
【文献】中国特許出願公開第108984308(CN,A)
【文献】米国特許出願公開第2017/0075953(US,A1)
【文献】米国特許出願公開第2015/0347480(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 40/00-40/58
(57)【特許請求の範囲】
【請求項1】
コンピュータ可読プログラム命令によって実行される方法であって、コンピュータ・プロセッサによって実行されたときに動作を実行する前記コンピュータ可読プログラム命令を含んでいるメモリとを備えているシステムで実行される前記方法であって、
データ・オーケストレータによって、領域に対応するクエリ・ワークロード情報を決定することと、
前記クエリ・ワークロード情報をハイパーグラフとしてモデル化することであって、前記ハイパーグラフが頂点のセットおよびハイパーエッジのセットを含み、前記頂点のセット内の各頂点が、前記領域に関連付けられたオントロジーにおける概念に対応する、前記モデル化することと、
前記ハイパーグラフに基づいて、かつ
複数のデータ・ノードの各々の事前に定義された能力にさらに基づいて、概念と
前記複数のデータ・ノードの間のマッピングを生成することと、
前記生成されたマッピングに基づいて分散知識ベースを確立することとを含む、方法。
【請求項2】
前記クエリ・ワークロード情報を決定することが、
前のオントロジー・クエリのセットを受信することと、
前記前のオントロジー・クエリのセット内の第1のクエリによってアクセスされる概念の第1のセットを生成することと、
前記第1のクエリによって実行される動作の第2のセットを生成することと、
第1の要約されたクエリを、
前記前のオントロジー・クエリのセットから、対応する一致している第1のセットを含むクエリのグループを識別し、
前記クエリの識別されたグループ内のクエリごとに、対応する第2のセットに基づいて、動作の集約セットを決定し、
前記第1の要約されたクエリを、前記対応する一致している第1のセットに反映された動作および概念の前記集約セットに関連付ける
ことによって、生成することとを含む、請求項1に記載の方法。
【請求項3】
前記クエリ・ワークロード情報をハイパーグラフとしてモデル化することが、
前記オントロジーにおける概念ごとに頂点を作成することと、
前記第1の要約されたクエリの第1のハイパーエッジを作成することであって、前記第1のハイパーエッジが、前記ハイパーグラフ内の頂点の第1のセットを接続し、前記頂点の第1のセットが、前記一致する第1のセットに反映された前記概念に対応する、前記作成することと、
前記第1のハイパーエッジに前記動作の集約セットでラベルを付けすることとを含む、請求項2に記載の方法。
【請求項4】
前記マッピングを生成することが、
前記ハイパーグラフに含まれている第1の動作の第1のクラスタを作成することと、
前記ハイパーグラフ内の第1のハイパーエッジによって接続された概念の第1のセットを識別することと、
前記第1のハイパーエッジによって示された動作の第1のセットを識別することと、
前記動作の第1のセットが前記第1の動作を含むということを決定したときに、前記概念の第1のセットを前記第1のクラスタに割り当てることとを含む、請求項1に記載の方法。
【請求項5】
前記マッピングを生成することが、
前記第1の動作を実行できるデータ・ノードのセットを識別し、
前記概念の第1のセット内の各概念を前記データ・ノードの識別されたセット内の各データ・ノードにマッピングする
ことによって、前記概念の第1のセットを1つまたは複数のデータ・ノードにマッピングすることをさらに含む、請求項4に記載の方法。
【請求項6】
前記マッピングを生成することが、
前記ハイパーグラフ内の第1のハイパーエッジによって接続された概念の第1のセットを識別することと、
前記第1のハイパーエッジによって示された動作の第1のセットを識別することと、
前記動作の第1のセットを集合的に実行できるデータ・ノードの最小セットを決定することと、
前記概念の第1のセットを含んでいるクラスタを生成することと、
前記クラスタに前記データ・ノードの最小セットでラベルを付けることとを含む、請求項1に記載の方法。
【請求項7】
前記マッピングを生成することが、前記概念の第1のセット内の各概念を、前記データ・ノードの最小セット内の各データ・ノードにマッピングすることをさらに含む、請求項6に記載の方法。
【請求項8】
前記分散知識ベースを確立することが、前記オントロジーにおける概念ごとに、
前記マッピングによって示された各データ・ノードを識別することと、
前記各概念に対応するデータを識別することと、
前記各データ・ノード内の前記識別されたデータの格納を容易にすることとを含む、請求項1に記載の方法。
【請求項9】
コンピュータ・プログラムであって、請求項1ないし8のいずれか1項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
【請求項10】
請求項9に記載のコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【請求項11】
1つまたは複数のコンピュータ・プロセッサと、
前記1つまたは複数のコンピュータ・プロセッサによって実行されたときに動作を実行するプログラムを含んでいるメモリとを備えているシステムであって、前記動作が、
データ・オーケストレータによって、領域に対応するクエリ・ワークロード情報を決定することと、
前記クエリ・ワークロード情報をハイパーグラフとしてモデル化することであって、前記ハイパーグラフが頂点のセットおよびハイパーエッジのセットを含み、前記頂点のセット内の各頂点が、前記領域に関連付けられたオントロジーにおける概念に対応する、前記モデル化することと、
前記ハイパーグラフに基づいて、かつ
複数のデータ・ノードの各々の事前に定義された能力にさらに基づいて、概念と
前記複数のデータ・ノードの間のマッピングを生成することと、
前記生成されたマッピングに基づいて分散知識ベースを確立することとを含む、システム。
【請求項12】
前記クエリ・ワークロード情報を決定することが、
前のオントロジー・クエリのセットを受信することと、
前記前のオントロジー・クエリのセット内の第1のクエリによってアクセスされる概念の第1のセットを生成することと、
前記第1のクエリによって実行される動作の第2のセットを生成することと、
第1の要約されたクエリを、
前記前のオントロジー・クエリのセットから、対応する一致している第1のセットを含むクエリのグループを識別し、
前記クエリの識別されたグループ内のクエリごとに、対応する第2のセットに基づいて、動作の集約セットを決定し、
前記第1の要約されたクエリを、前記対応する一致している第1のセットに反映された動作および概念の前記集約セットに関連付ける
ことによって、生成することとを含む、請求項11に記載のシステム。
【請求項13】
前記クエリ・ワークロード情報をハイパーグラフとしてモデル化することが、
前記オントロジーにおける概念ごとに頂点を作成することと、
前記第1の要約されたクエリの第1のハイパーエッジを作成することであって、前記第1のハイパーエッジが、前記ハイパーグラフ内の頂点の第1のセットを接続し、前記頂点の第1のセットが、前記一致する第1のセットに反映された前記概念に対応する、前記作成することと、
前記第1のハイパーエッジに前記動作の集約セットでラベルを付けすることとを含む、請求項12に記載のシステム。
【請求項14】
前記マッピングを生成することが、
前記ハイパーグラフに含まれている第1の動作の第1のクラスタを作成することと、
前記ハイパーグラフ内の第1のハイパーエッジによって接続された概念の第1のセットを識別することと、
前記第1のハイパーエッジによって示された動作の第1のセットを識別することと、
前記動作の第1のセットが前記第1の動作を含むということを決定したときに、前記概念の第1のセットを前記第1のクラスタに割り当てることとを含む、請求項11に記載のシステム。
【請求項15】
前記マッピングを生成することが、
前記ハイパーグラフ内の第1のハイパーエッジによって接続された概念の第1のセットを識別することと、
前記第1のハイパーエッジによって示された動作の第1のセットを識別することと、
前記動作の第1のセットを集合的に実行できるデータ・ノードの最小セットを決定することと、
前記概念の第1のセットを含んでいるクラスタを生成することと、
前記クラスタに前記データ・ノードの最小セットでラベルを付けることとを含む、請求項11に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、知識ベースに関し、より詳細には、分散知識ベースにおける効果的なデータ配置のためのオントロジーの使用に関する。
【背景技術】
【0002】
ますます多くの企業が、知識ベース(KB:Knowledge Bases)を利用して、分析を強化し、企業のシステムの意思決定、効率、および有効性を改善している。多くの場合、KBは、企業の領域内で相対的に特殊化される。例えば、金融機関は、金融市場の政府規制に関連するデータなどの重要な金融知識を含むKBに依存する。反対に、医療企業は、医学文献から収集されたかなりの量のデータを含むKBを維持することがある。これらのKBを管理するために、深い領域の特殊化、効果的システム、および効果的技術に対する大きな必要性が存在する。領域スキーマの実体中心の視野を提供する領域オントロジーを認識しない既存のシステムは、KBに対するクエリを効果的に管理し、ルーティングすることができない。
【0003】
さらに、KBは、動作を改善するために、さまざまな能力およびコストを有する複数のデータ・サイトにわたって分散されることがある。連合データベースなどの既存のアーキテクチャは、そのような各ソースからデータを集約するために、集中型メディエータに依存する。これは非効率的であり、大きさの変更を十分に行うことができない。さらに、既存のシステムは、基礎になるオントロジーおよび各データ・ソースの能力を理解せず、したがってクエリを効率的にルーティングすることができない。そのため、そのようなシステムの効率が低下し、標準的なクエリに応答するために、かなりの量の計算リソースが必要になる。
【発明の概要】
【0004】
本発明の態様によれば、データ・オーケストレータによって、領域に対応するクエリ・ワークロード情報を決定することを含む方法が提供されている。この方法は、クエリ・ワークロード情報をハイパーグラフとしてモデル化することをさらに含み、このハイパーグラフは頂点のセットおよびハイパーエッジのセットを含み、頂点のセット内の各頂点は、領域に関連付けられたオントロジーにおける概念に対応する。さらに、この方法は、ハイパーグラフに基づいて、かつ複数のデータ・ノードの各々の事前に定義された能力にさらに基づいて、概念と複数のデータ・ノードの間のマッピングを生成することと、生成されたマッピングに基づいて分散知識ベースを確立することとを含む。この方法は、有利に、データ・オーケストレータが、既存のワークロードおよび各データ・ノードの能力に基づいて、分散環境内でデータを効率的に配置し、格納できるようにする。このようにして、効率的なデータ・マップを提供することによって、データを格納するために必要な計算費用を減らし、システム応答性をさらに改善する。
【0005】
本開示の別の実施形態によれば、クエリ・ワークロード情報を決定することは、前のオントロジー・クエリのセットを受信することを含む。この実施形態に従う方法は、前のオントロジー・クエリのセット内の第1のクエリによってアクセスされる概念の第1のセットを生成することと、第1のクエリによって実行される動作の第2のセットを生成することとを含む。第1の要約されたクエリは、前のオントロジー・クエリのセットから、対応する一致している第1のセットを含むクエリのグループを識別し、クエリの識別されたグループ内のクエリごとに、対応する第2のセットに基づいて、動作の集約セットを決定することによって生成される。次に、第1の要約されたクエリが、対応する一致している第1のセットに反映された動作および概念の集約セットに関連付けられる。そのような実施形態では、予想される必要性を満たすために、前のクエリを効果的に要約し、データに適したストレージ計画を決定することによって、データ・オーケストレータが既存のシステムを上回って改善される。これによって、やはり、効率を改善し、実行時の計算の無駄を減らす。
【0006】
本開示のさらに別の実施形態によれば、クエリ・ワークロード情報をハイパーグラフとしてモデル化することは、オントロジーにおける概念ごとに頂点を作成することと、第1の要約されたクエリの第1のハイパーエッジを作成することとを含み、第1のハイパーエッジが、ハイパーグラフ内の頂点の第1のセットを接続し、頂点の第1のセットが、一致する第1のセットに反映された概念に対応する。1つのそのような実施形態では、この方法は、第1のハイパーエッジに動作の集約セットでラベルを付けすることをさらに含む。そのような実施形態は、有利に、データ・オーケストレータがワークロードをグラフの形態で効果的に表すことができるようにし、オーケストレータが、データをより適切かつ効率的に評価し、改善された配置決定を推進できるようにする。これによって、実行時の性能を劇的に改善する。
【0007】
本開示のさらに別の実施形態によれば、マッピングを生成することは、ハイパーグラフに含まれている第1の動作の第1のクラスタを作成することを含む。次に、実施形態は、ハイパーグラフ内の第1のハイパーエッジによって接続された概念の第1のセットを識別することと、第1のハイパーエッジによって示された動作の第1のセットを識別することとを含む。この方法は、動作の第1のセットが第1の動作を含むということを決定したときに、概念の第1のセットを第1のクラスタに割り当てることを含む。そのような実施形態の1つの利点は、ハイパーグラフを効率的に評価できるようにし、実行時に最小限の移動を必要とする信頼性の高いデータ配置をもたらすということである。
【0008】
本開示の別の実施形態によれば、マッピングを生成することは、第1の動作を実行できるデータ・ノードのセットを識別し、概念の第1のセット内の各概念をデータ・ノードの識別されたセット内の各データ・ノードにマッピングすることによって、概念の第1のセットを1つまたは複数のデータ・ノードにマッピングすることをさらに含む。これによって、有利に、システムが、前のワークロードを考慮しながら、ノードの能力に基づいてデータ・マッピングを生成できるようにする。これによって、最小限の待ち時間およびリソース消費で将来のクエリに応答するように、システムが適切に配置される可能性を高める。
【0009】
本開示の別の実施形態によれば、マッピングを生成することは、ハイパーグラフ内の第1のハイパーエッジによって接続された概念の第1のセットを識別することと、第1のハイパーエッジによって示された動作の第1のセットを識別することと、動作の第1のセットを集合的に実行できるデータ・ノードの最小セットを決定することとを含む。次に、この方法は、概念の第1のセットを含んでいるクラスタを生成することと、クラスタにデータ・ノードの最小セットでラベルを付けることとを含む。そのような実施形態は、システム内のデータの複製を最小限に抑え、ストレージ・コストを減らし、さらに、システム内のデータ移動に起因する待ち時間およびリソース消費を減らすことによって、既存の解決策を上回って改善される。
【0010】
本開示のさらなる実施形態によれば、マッピングを生成することは、概念の第1のセット内の各概念を、データ・ノードの最小セット内の各データ・ノードにマッピングすることをさらに含む。これによって、同様に、システムのストレージ・コストおよび待ち時間を減らす。
【0011】
本開示のさらに別の実施形態によれば、分散知識ベースを確立することは、オントロジーにおける概念ごとに、マッピングによって示された各データ・ノードを識別することと、各概念に対応するデータを識別することと、各データ・ノード内の識別されたデータの格納を容易にすることとを含む。そのような実施形態は、有利に、オーケストレータがマッピングを効果的に生成し、データを効率的な方法で適切なノードに配置できるようし、実行前および実行中の両方の計算を減らす。
【0012】
本開示の異なる実施形態によれば、前述の実施形態は、いずれも、コンピュータ可読ストレージ媒体によって実装されることができる。コンピュータ可読ストレージ媒体はコンピュータ・プログラム・コードを含み、コンピュータ・プログラム・コードは、1つまたは複数のコンピュータ・プロセッサの動作によって実行されたときに動作を実行する。実施形態では、実行される動作は、上記の方法および実施形態の任意の組み合わせに対応することができる。
【0013】
本開示のさらに別の異なる実施形態によれば、前述の実施形態は、いずれも、システムによって実装されることができる。システムは、1つまたは複数のコンピュータ・プロセッサ、およびプログラムを格納しているメモリを含み、プログラムは、1つまたは複数のコンピュータ・プロセッサによって実行されたときに、動作を実行する。実施形態では、実行される動作は、上記の方法および実施形態の任意の組み合わせに対応することができる。
【図面の簡単な説明】
【0014】
【
図1】本明細書で開示された一実施形態に従って、知識ベースのデータを配置し、オントロジー・クエリをルーティングするように構成されたアーキテクチャを示す図である。
【
図2】本明細書で開示された一実施形態に従って、オントロジー・クエリを処理してルーティングするためのワークフローを示す図である。
【
図3A】本明細書で開示された一実施形態に従って、クエリを評価し、ルーティングするために使用されることができる例示的なオントロジーを示す図である。
【
図3B】本明細書で開示された一実施形態に従って、クエリを評価し、ルーティングするために使用されることができる例示的なオントロジーを示す図である。
【
図4A】本明細書で開示された一実施形態に従って、例示的なオントロジー・クエリを構文解析してルーティングするためのワークフローを示す図である。
【
図4B】本明細書で開示された一実施形態に従って、例示的なオントロジー・クエリを構文解析してルーティングするためのワークフローを示す図である。
【
図5】本明細書で開示された一実施形態に従って、オントロジー・クエリをルーティングするように構成されたクエリ処理オーケストレータ(query processing orchestrator)を示すブロック図である。
【
図6】本明細書で開示された一実施形態に従って、オントロジー・クエリを処理してルーティングするための方法を示すフロー図である。
【
図7】本明細書で開示された一実施形態に従って、オントロジー・クエリを処理してクエリ・ブロックを効率的にルーティングするための方法を示すフロー図である。
【
図8】本明細書で開示された一実施形態に従って、オントロジー・クエリを効率的にルーティングするために可能性のあるクエリ・ルーティング計画を評価するための方法を示すフロー図である。
【
図9】本明細書で開示された一実施形態に従って、オントロジー・クエリをルーティングするための方法を示すフロー図である。
【
図10】本明細書で開示された一実施形態に従って、ワークロードを評価して知識ベース・データを格納するためのワークフローを示す図である。
【
図11】本明細書で開示された一実施形態に従って、ワークロードを評価して知識ベース・データを格納するために使用される例示的なハイパーグラフである。
【
図12】本明細書で開示された一実施形態に従って、ワークロードを評価してデータを格納するように構成されたデータ配置オーケストレータ(data placement orchestrator)を示すブロック図である。
【
図13】本明細書で開示された一実施形態に従って、クエリ・ワークロードを評価して要約し、データ配置の決定を知らせるための方法を示すフロー図である。
【
図14】本明細書で開示された一実施形態に従って、オントロジーのワークロードをモデル化し、データ配置の決定を知らせるための方法を示すフロー図である。
【
図15】本明細書で開示された一実施形態に従って、ハイパーグラフを評価し、データ配置の決定を推進するための方法を示すフロー図である。
【
図16】本明細書で開示された一実施形態に従って、ハイパーグラフを評価し、データ配置の決定を推進するための方法を示すフロー図である。
【
図17】本明細書で開示された一実施形態に従って、オントロジーの概念をストレージ・ノードにマッピングするための方法を示すフロー図である。
【発明を実施するための形態】
【0015】
本開示の実施形態は、複数のデータ・ストアまたはノードを使用してさまざまなクエリの種類のサポートを実現するオントロジー主導のアーキテクチャを提供し、それらのデータ・ストアまたはノードの各々は、異なる能力を有してよい。本開示の実施形態は、有利に、既存のオントロジーに基づいて、クエリが効率的に処理され、多様なデータ・ストアにルーティングされることを可能にし、システムの待ち時間を改善し、関連するデータを識別して返すために必要な計算リソースを減らす。実施形態では、本明細書に記載された技術は、自然言語および会話インターフェイスを含むさまざまな照会アプリケーションをサポートするために使用されることができる。本明細書に記載されたシステムは、ユーザが領域オントロジーに対する情報の必要性を表すことができるようにする抽象的なオントロジー・クエリ言語(OQL:ontology query language)を介して、基礎になるバックエンド・ストアへの透過的アクセスを提供することができる。
【0016】
1つの実施形態では、さまざまなクエリの種類の性能を改善するために、システムは、最初に、バックエンド・ストアの能力に従ってデータのサブセットを適切なバックエンド・ストアに配置することによって、さまざまなストアへのKBデータの配置を最適化する。一部の実施形態では、実行時に、システムが、OQLクエリを構文解析してコンパイルし、さまざまなバックエンド・データ・ノードのクエリ言語またはAPIあるいはその両方に変換する。1つの実施形態では、本明細書に記載されたシステムは、関連するデータの配置に従ってクエリを1つまたは複数のバックエンド・ストアにルーティングするクエリ・オーケストレータも採用する。この効率的なルーティングによって、結果を生成して要求元の実体に返すために必要な待ち時間を減らす。
【0017】
実施形態では、照会されるKBデータは、構造化データ、非構造化データ、または半構造化データ、あるいはその組み合わせを含む、任意の情報を含むことができる。深い領域の特殊化をサポートするために、本明細書で開示された実施形態は、領域オントロジーを活用する。特に、1つの実施形態では、領域オントロジーは、メタデータ・レベルのみで実体および実体の関係を定義し、インスタンス・レベルの情報を提供しない。すなわち、1つの実施形態では、領域オントロジーが領域スキーマを提供し、一方、インスタンス・レベルのデータが、さまざまなバックエンド・データ・ストア(データ・サイトおよびデータ・ノードとも呼ばれる)に格納される。実施形態では、データ・ノードは、リレーショナル・データベース、転置インデックス・ドキュメント・ストア(index document store(s))、JSON(Java(R)Script Object Notation)ストア、グラフ・データベースなどを含む任意のストア・アーキテクチャを含むことができる。
【0018】
一部の実施形態では、システムは、クエリの種類をサポートするために必要な能力を提供する任意のバックエンドで、KBデータを移動し、格納し、インデックスを付与することができる。言い換えると、システムは、既存の動作可能なデータ・ストアにわたってデータを連合させる必要がない。これは、連合データベースおよびメディエータに基づく手法とは明らかに異なっている。一部の実施形態では、システムは、能力に基づくデータ配置ステップを実行し、特定のオントロジーに従う知識ベース・データが、さまざまなバックエンドのリソースに格納される。少なくとも1つの実施形態では、データ移動が、データ転送コストだけでなく、高いデータ変換コストを招くため、多ストア・アーキテクチャが、異なるデータ・ストア間のデータ移動を最小限に抑えるように構成される。データ移動コストを最小限に抑えるための1つの解決策は、すべてのバックエンド・ノード内でデータを複製し、データ移動を伴わずに、単一のストアによってクエリに回答できることを保証することである。しかし、これは、無駄な重複も必要とし、多ストア・アーキテクチャを使用して複数のデータ・ストアのさまざまな能力を活用するという目的を無効化する。本開示の実施形態では、KBデータが、任意の数のバックエンドのリソースに格納されてよく、システムが、クエリをインテリジェントにルーティングして、最適なデータ・ストアを選択し、データ移動コストを最小限に抑える。
【0019】
本明細書に記載された一部の実施形態では、システム・アーキテクチャは、データが複数のデータ・ストアに格納されてインデックスを付与される方法を知らずにデータを照会するための適切な抽象化を提供する。1つの実施形態では、この目的を達成するために、オントロジー・クエリ言語(OQL)が導入される。OQLは、企業の領域オントロジーに対して表される。システムのユーザは、実体および実体の関係を定義する領域オントロジーに関してのみ、知る必要がある。実施形態では、システムは、バックエンド・データ・ストアへのさまざまなオントロジーの概念のマッピング、ならびにそれらに対応するスキーマを理解し、OQLから基礎になるシステムのターゲット・クエリ言語へのクエリ・トランスレータを提供する。
【0020】
実施形態では、いずれかの特定のクエリに、1つまたは複数のデータ・ノードが関与してよい。本開示の実施形態は、関与するストアを識別し、最終的なクエリ結果を計算するための適切なサブクエリを生成する手法を提供する。一部の実施形態では、システムは、全体的な(global query)クエリが複数のサブクエリに分割され、最終結果がメディエータにおいて組み立てられる、メディエータ手法を使用しない。代わりに、データ・ストアのうちの1つまたは複数がメディエータとして使用され、バックエンド・データ・ストアがクエリの回答を完成させる。例えば、1つの実施形態では、リレーショナル・ストアが結合動作を素早く完了することができる可能性が高いため、クエリの応答を完成させるためにリレーショナル・データベースが使用される。
【0021】
図1は、本明細書で開示された一実施形態に従って、オントロジー・クエリをルーティングするように構成されたアーキテクチャ100を示している。示されている実施形態では、クエリ処理オーケストレータ115が、対応するオントロジー・スキーマ110を有している、OQLを使用して構築されたオントロジー・クエリ105を受信する。オントロジー・クエリ105は、クエリ処理オーケストレータ115によって、関連するデータを識別して返すために処理される。実施形態では、クエリ処理オーケストレータ115は、クエリを、さまざまなデータ・ノード130A~Nを含んでいるバックエンド125にルーティングする。示されている実施形態では、このルーティングは、概念マッピング140および能力135のセットに少なくとも部分的に基づいて実行される。
【0022】
示されている実施形態では、オントロジー・クエリ105は、OQLに基づいて書式設定され、OQLは、オントロジー・スキーマ110における概念および関係のセットに対して動作するクエリを表すために使用される。実施形態では、OQLは、集約、ユニオン、ネストされたサブクエリなどを含んでいるクエリを表すことができる。一部の実施形態では、OQLは、全文検索およびフィールド検索の述語、ならびにパス・クエリを表すこともできる。OQLクエリは、通常、単一のクエリ・ブロックまたは複数のOQLクエリ・ブロックのユニオンから成り、各OQLクエリ・ブロックは、SELECT句またはFROM句から成る。一部の実施形態では、OQLブロックは、WHERE句、GROUP BY句、ORDER BY句、FETCH FIRST句、またはHAVING句、あるいはその組み合わせを含むこともできる。実施形態では、OQLクエリは、FROM句において参照された概念のデカルト積によって構築されたタプルのセットに対して動作する。
【0023】
実施形態では、オントロジー・スキーマ110は、データがバックエンドのリソースに実際にどのように格納されるかに関わりなく、KB内の実体および実体の関係を意味的レベルで記述する。1つの実施形態では、オントロジー・スキーマ110は、領域に関連する実体、さまざまな実体に関連付けられる可能性があるプロパティ、およびさまざまな実体間の可能性がある関係を記述する。オントロジー・スキーマ110は、機能、継承、ユニオンなどの、実体間のさまざまな現実世界の関係を捕らえる表現豊かなデータ・モデルを提供することができる。一部の実施形態では、オントロジー・スキーマ110は、インスタンス・データを含まない。すなわち、オントロジー・スキーマ110は、実体および関係を定義するが、KB内の特定の実体または関係に関連するデータを含まない。例えば、オントロジー・スキーマ110は、「company」という実体が、「name」および「address」などの複数のプロパティを有することができるということを定義してよいが、オントロジー・スキーマ110は、「Main Street Grocer」というnameおよび「123 Main Street」というaddressを有するcompanyなどの、特定のインスタンスのデータを含まない。代わりに、このインスタンス・データは、バックエンド125内で独立して維持される。
【0024】
実施形態では、概念マッピング140は、オントロジー・スキーマ110によって表された論理スキーマと、バックエンド125内の基礎になるデータ・ノード130の物理スキーマとの間の対応関係を示す。例えば、オントロジー・スキーマ110がO(C,R,P)として定義され、C={Cn|1≦n≦N}が概念(実体とも呼ばれる)のセットを示し、R={rk|1≦k≦K}が概念/実体間の関係のセットを示し、P={pm|1≦m≦M}がデータ・プロパティのセットであると仮定する。1つの実施形態では、各関係は、2つ以上の概念間に存在するが、各データ・プロパティは、概念の特性に対応する。示されている実施形態では、概念マッピング140は、概念、関係、およびプロパティ(オントロジー・スキーマ110内で定義される)と、基礎になるデータ・ノード130の間のマッピングを示す。すなわち、1つのそのような実施形態では、概念マッピング140は、特定の概念(例えば、実体)、関係、またはプロパティ、あるいはその組み合わせを格納する各データ・ノード130を示す。例えば、概念マッピング140は、「company」という実体のインスタンスがデータ・ノード130Aおよび130Mに格納されており、「company」という実体間の特定の種類の関係に関連するデータがデータ・ノード130Bに格納されているということを示してよい。
【0025】
1つの実施形態では、能力135は、各データ・ノード130によって提供される動作および能力を示す。一部の実施形態では、データ・ノード130の能力は、データ・ストアによって処理/回答されることができるすべての可能性のあるクエリを列挙するビュー(ビュー定義)として表される。この手法は、柔軟であるが、ビュー定義の数が非常に多くなることがあり、無限大の数のビューを使用するクエリの書き換えの問題につながる可能性があるため、拡張可能ではない。拡張性を改善するために、本開示の一部の実施形態は、データ・ストアによって回答され得る可能性のあるすべてのクエリを列挙するのではなく、バックエンド・データ・ノード130がサポートする動作(例えば、結合、グループ化、集約、ファジーテキスト・マッチング、パス表現など)に関して、バックエンド・データ・ノード130の能力を記述する。さらに、本開示の少なくとも1つの実施形態は、任意の関連する制限を表すためのメカニズムを利用することによって、サポートされている各動作のよりきめの細かい記述を提供する。例えば、1つのそのような実施形態では、MAX型の集約機能は、数値型に対してのみサポートされてよい。
【0026】
したがって、1つの実施形態では、能力135は、特定のデータ・ノード130ごとに、ノードが完了できる動作のセット(および一部の実施形態では、その能力に対する関連する制限)を示す。実施形態では、クエリ処理オーケストレータ115は、能力135および概念マッピング140を評価し、受信されたオントロジー・クエリ105のルーティング先になるべき1つまたは複数のデータ・ノード130を選択する。これを実行するために、1つの実施形態では、クエリ処理オーケストレータ115は、(例えば、概念マッピング140に基づいて)必要なデータを含んでいるか、(例えば、能力135に基づいて)必要な動作を完了できるか、またはその両方であるデータ・ノード130を識別する。次に、クエリ処理オーケストレータ115は、選択されたデータ・ノード130ごとにサブクエリを生成することができる。
【0027】
実施形態では、クエリ処理オーケストレータ115は、必要に応じて、トランスレータ120A~Nのセットを使用してサブクエリを変換する。示されている実施形態では、各種類のデータ・ノード130が、対応するトランスレータ120を有している。一部の実施形態では、各トランスレータ120A~Nは、OQLクエリのすべてまたは一部を受信し、対応するデータ・ノード130A~Nの言語または構文あるいはその両方で、同等のクエリを生成する。例えば、トランスレータ120Aは、データ・ノード130Aに含まれているリレーショナル・データベース用のSQLクエリを生成してよく、トランスレータ120Bは、データ・ノード130Bに含まれているグラフ・ストア用のグラフ・クエリを出力する。
【0028】
実施形態では、トランスレータ120はスキーマ・マッピングに依存し、スキーマ・マッピングは、領域オントロジーによって表された概念および関係を、ターゲットの物理スキーマで、適切なスキーマ・オブジェクトにマッピングする。例えば、リレーショナル・バックエンド・データ・ノード130の場合、スキーマ・マッピングは、対応関係を提供できる。(1)オントロジーにおける概念およびリレーショナル・スキーマにおけるテーブル、(2)オントロジーにおける概念のデータ・プロパティもしくは属性および物理スキーマにおけるテーブル列、または(3)オントロジーにおける概念間の関係およびデータベース内の概念に対応するテーブル間の主キーと外部キーの間の制約、あるいはその組み合わせの間の対応関係を提供することができる。同様に、JSONドキュメント・ストアの場合、スキーマ・マッピングは、オントロジーにおいて表された概念、データ・プロパティ、および関係を、JSONドキュメント内の適切なフィールド・パスにマッピングしてよい。
【0029】
一部の実施形態では、トランスレータ120は、通常はオントロジーの概念間の結合条件を表す概念間のユニオン、継承、およびトラバースなどの、オントロジーにおいて表されることができる特殊な概念および関係も処理する。物理的データ・レイアウトに応じて、これらの概念および関係は、バックエンド125のデータ・ノード130によってサポートされる適切な動作に変換される。
【0030】
実施形態では、各データ・ノード130は、サブクエリを受信し、クエリ処理オーケストレータ115に対する応答を生成する。データ・ノード130が必要なデータをすべてローカルに含んでおり、示された動作を完了することができる場合、このノードはクエリを実行して結果を返す。一部の実施形態では、サブクエリは、クエリを完了するために必要なデータを取り出すために、データ・ノード130がクエリを1つまたは複数の他のデータ・ノード130に送信するべきであるということを示すことができる。例えば、一部の実施形態では、リレーショナル・システムが結合動作のため少ない待ち時間を有する傾向があるため、リレーショナル・データ・ノードによって結合動作が実行されるのが好ましい。さらに、一部の動作は、特定のノード上でのみ可能である。例えば、データ・ノード130Aが結合動作を完了できる唯一のノードであるが、結合されるデータがデータ・ノード130Bのみに存在すると仮定する。1つの実施形態では、データ・ノード130Aは、関連するデータを結合するようデータ・ノード130Aに指示するサブクエリに加えて、データを取り出すためにデータ・ノード130Bに転送される1つまたは複数の他のサブクエリを受信する。
【0031】
すなわち、1つのそのような実施形態では、クエリ処理オーケストレータ115は、データ・ノード130B用に変換されたサブクエリを準備し、それらのサブクエリをデータ・ノード130Aに送信する。これによって、データ・ノード130Aは、単にそれらのサブクエリをデータ・ノード130Bに転送することができる。次に、データ・ノード130Bによってデータがデータ・ノード130Aに返され、データ・ノード130Aが動作を完了し、その結果をクエリ処理オーケストレータ115に返す。別の実施形態では、クエリ処理オーケストレータ115は、サブクエリをデータ・ノード130Bに送信し、得られたデータを、処理するためにデータ・ノード130Aに転送してよい。さらに別の実施形態では、クエリ処理オーケストレータ115は、結合をローカルに実行する。
【0032】
示されている実施形態では、アーキテクチャ100がデータ配置オーケストレータ150をさらに含み、データ配置オーケストレータ150は、データを知識ベースに格納するためにどのデータ・ノード130A~Nが使用されるべきかを決定する。図に示されているように、データ配置オーケストレータ150は、データ・ノード130の能力155の同様の指示およびクエリ・ワークロード160の指示を受信する。1つの実施形態では、クエリ・ワークロード160は、知識ベースに対するクエリの平均的なセットまたは予想されるセットを示す。例えば、1つの実施形態では、クエリ・ワークロード160は、時間をかけて知識ベースとのユーザの対話を観察することによって生成される。システムは、これらの対話を集約し、システムの平均的なワークロード、予想されるワークロード、または標準的なワークロードを決定することができる。一部の実施形態では、クエリ・ワークロード160は、どの概念が一緒に照会されるか、どの動作が各概念に適用されるかなどの指示を含む。
【0033】
実施形態では、ノード能力155および既知のクエリ・ワークロード160に基づいて、データ配置オーケストレータ150が、オントロジー・スキーマ110における概念/実体ごとに、どのデータ・ノード130が概念のインスタンスレベルのデータを格納するべきかを決定する。例えば、データ配置オーケストレータ150は、特定のデータ・ノード130Aが実行できる動作に基づき、さらにクエリ・ワークロード160に基づいて、「company」という実体および「public metric」という実体が一緒に照会されることが多いため、データ・ノード130Aがこれらの実体のすべてのデータを格納するべきであるということを決定してよい。同様に、データ配置オーケストレータ150は、クエリが「document」データに対するファジー・マッチ動作を実行することを頻繁に含み、データ・ノード130Bがファジー・マッチをサポートしているということの決定に基づいて、「document」という概念のインスタンスをデータ・ノード130Bに配置することを決定してよい。
【0034】
このインテリジェントなデータ配置は、実行中のその後のデータ転送を減らすことができる。実施形態では、データ配置オーケストレータ150が、(例えば、初期配置を提供するために)開始時に、または(例えば、クエリ・ワークロード160が時間と共にどの程度発達したかに基づいて、配置決定を修正するために)実行中に定期的に、あるいはその両方で利用されてよい。実施形態では、概念を明確にするために個別のコンポーネントとして示されているが、クエリ処理オーケストレータ115およびデータ配置オーケストレータ150の動作は、結合されるか、または任意の数のコンポーネントにわたって分散されてよい。
【0035】
図に示されているように、データ配置オーケストレータ150は、配置決定165のセットを、バックエンド125、または抽出、変換、および読み込み(ETL:extract, transform, and load)サービスなどの1つまたは複数の仲介サービス、あるいはその両方に出力する。次に、知識ベース内のインスタンスレベルのデータが、これらの選択に基づいて、適切なデータ・ノード130に格納される。概念マッピング140は、データの現在の配置を反映する。一実施形態では、データ配置オーケストレータ150が、更新されたクエリ・ワークロード160に基づいてデータの配置を修正するために使用された場合、概念マッピング140が同様に更新される。以下では、
図2~
図9を使用して、クエリ処理オーケストレータ115についてさらに詳細に説明し、データがすでに配置されていると仮定する。データ配置オーケストレータ150および効率的なデータの配置を保証するためのさまざまな技術が、
図10~17を参照してさらに詳細に説明される。
【0036】
図2は、本明細書で開示された一実施形態に従って、オントロジー・クエリを処理してルーティングするためのワークフロー200を示している。図に示されているように、ワークフロー200は、OQLクエリ205が受信されたときに開始する。OQLクエリ205がOQLパーサー210に提供され、OQLパーサー210が、クエリを構文解析し、クエリの意味を決定する。矢印215によって示されているように、この構文解析されたOQLクエリが、次にクエリ・グラフ・モデル(QGM:Query Graph Model)コンストラクタ220に提供される。実施形態では、QGMコンストラクタ200が、クエリの論理的表現をクエリ・グラフ・モデルの形態で生成する。これによって、クエリのコンパイルおよび最適化の複雑さを低減する。以下では、
図4Aおよび4Bに関して、例示的なクエリ・グラフ・モデルがさらに詳細に説明される。実施形態では、QGMが、SELECT、GROUP BY、SETOPなどの演算子ボックスを使用してクエリ内のデータ・フローおよび依存関係を捕捉する。実施形態では、ボックス内の動作の順序は、それらの動作間で自由に変更されることができるが、クエリ実行計画を生成するときに、ボックスの境界が順守される。すなわち、クエリ実行計画は、クエリ・ボックスの順序に従わなければならない。
【0037】
1つの実施形態では、クエリ・ボックス間のデータ・フローが、数量詞を使用して表される。この書式は、システムがクエリの等価性について推論し、書き換えの最適化を適用できるようにする。実施形態では、クエリのQGM表現は、システムがクエリの実行中に異なるデータ・ストア間のデータ・フローを最適化することに集中できるようにし、一方、実際の物理的実行計画の選択は、クエリ・ボックスまたはフラグメントの実行の責任を負う基礎になるデータ・ノード130に延期される。実施形態では、QGM225は、異なるバックエンドにわたるデータ移動およびデータ変換を最小限に抑える最適化された複数ストアの実行計画を生成するために使用される。
【0038】
一部の実施形態では、QGM225は、下部に、入力概念のセットをクエリに提供する数量詞のセットを含み、QGM内の各クエリ・ブロックは、先頭部および本体を含んでいる。各ブロックの本体は、入力概念のセットに対して実行される設定された動作(結合など)を記述する述語のセットを含み、先頭部の式は、結果の概念の出力プロパティが計算される方法を記述する。言い方を変えると、実施形態では、各ボックスの本体が述語(動作とも呼ばれる)のセットを含み、述語の各々がボックスの入力数量詞に適用される。一部の実施形態では、単一の数量詞を参照する述語/動作が、局所的な述語として分類され、一方、複数の数量詞を参照する述語/動作が、結合の述語を表す。
【0039】
示されたワークフロー200では、QGM225が演算子配置コンポーネント230に渡され、演算子配置コンポーネント230がクエリ・ルーティング・プロセスを続行する。図に示されているように、演算子配置コンポーネント230は、概念マッピング235およびノード能力240のセットをさらに受信し、能力および概念マッピングに基づいてQGM225内のクエリ・ブロックに注釈を付ける。1つの実施形態では、演算子配置コンポーネント230は、QGMを下から上までたどり、クエリ内の各動作に、その動作を実行できる可能性のあるストアのセットで注釈を付ける。一部の実施形態では、注釈は、局所的な述語および結合の述語に対して異なって生成される。一部の実施形態では、単一の数量詞に関連付けられたすべての先頭部の式が、局所的な述語と同じ方法で扱われるということを思い出す。
【0040】
1つの実施形態では、クエリ・ブロックが局所的な述語/動作(例えば、単一の数量詞)を含んでいる場合、演算子配置コンポーネント230は、数量詞が基本概念であるかどうかを判定する。基本概念である場合、述語に、(i)概念を含んでおり、かつ(ii)述語を実行する能力を有しているデータ・ノード130の指示で注釈が付けられる。実施形態では、数量詞が別のQGMブロックから来ている(すなわち、別のブロックによって計算された)場合、演算子配置コンポーネント230は、述語に、(i)この数量詞のQGMボックスを完了し、(ii)述語を実行することができるデータ・ストアのセットで、注釈を付ける。一部の実施形態では、この述語への入力を含んでいるデータ・ノード130が、いずれもこの述語を実行する能力を有していない場合、演算子配置コンポーネント230は、この述語に、この述語を実行できるストアのセットで注釈を付ける。
【0041】
例えば、述語がファジー検索を含んでいるが、データがリレーショナル・バックエンド・データ・ノード130のみに格納されている場合、演算子配置コンポーネント230は、そのファジー検索を計算できるドキュメント・ストアにデータが格納されていなくても、述語に、そのドキュメント・ストアで注釈を付けることができる。そのような場合、クエリの実行中にデータを移動する必要があるということに注意する。
【0042】
一部の実施形態では、クエリ・ブロックが結合の述語/動作を含んでいる場合、演算子配置コンポーネント230は、結合の種類および結合の述語を調べる。実施形態では、各結合の述語は、結合入力の各々について1つの、2つ以上の数量詞に関連付けられる。実施形態では、演算子配置コンポーネント230は、これらの数量詞を識別し、識別された数量詞が計算された入力であるか、または基本概念であるかに加えて、数量詞がどこから来るか(例えば、数量詞が、ローカルに計算されるか、もしくは格納されるか、またはその両方であるか、あるいは別のノードから受信されるか)に基づいて、続行する。
【0043】
数量詞のすべてが基本概念にわたって広がる場合、演算子配置コンポーネント230は、基本概念のいずれかが存在するデータ・ノード130のセットを評価し、そのようなストアごとに、ストアが結合動作をサポートするかどうかを判定する。次に、演算子配置コンポーネント230は、結合動作に、必要な概念のうちの1つまたは複数を含んでおり、この種類の結合動作をサポートするストアの指示で注釈を付ける。一部の実施形態では、ストアのうちの1つがリレーショナル・ノードである場合、演算子配置コンポーネント230は、動作に、残りのノードではなくこのリレーショナル・データ・ノード130の指示で注釈を付ける。
【0044】
一部の実施形態では、数量詞が両方ともQGMクエリ・ブロックによって生成される場合、演算子配置コンポーネント230は、結合動作に、この結合動作の種類をサポートする(一部の実施形態では、リレーショナル・ストアのみを含んでいる)データ・ノード130で注釈を付ける。実施形態では、演算子配置コンポーネント230は、数量詞を生成するデータ・ストアがJOINを実行できる場合、動作に、それらのデータ・ストアの指示でさらに注釈を付ける。
【0045】
さらなる実施形態では、数量詞のうちの1つが基本概念であり、別の数量詞が別のQGMクエリ・ブロックから計算される場合、結合動作の配置決定は、数量詞が両方とも他のQGMブロックによって計算される場合の上記の説明に類似している。実施形態では、演算子配置コンポーネント230は、結合動作に、結合の種類をサポートし、結合入力のうちの少なくとも1つに対して局所的であるデータ・ストアのセットで注釈を付ける。
【0046】
図に示されているように、次に、注釈付きQGM245がブロック配置コンポーネント250に渡される。実施形態では、ブロック配置コンポーネント250は、演算子配置コンポーネント230によって生成された注釈を利用して、クエリ内のクエリ・ボックスの可能性のある配置の選択肢を決定する。
【0047】
1つの実施形態では、「select」クエリ・ボックスの配置の選択肢を決定することは、最小集合被覆を決定する問題としてモデル化される。すなわち、ブロック配置コンポーネント250は、特定のselectボックス内のすべての演算子の配置を満たすために必要とされる最小の数のデータ・ノード130を決定する。一部の実施形態では、ブロック配置コンポーネント250は、述語-ストアのグループ化を実行するために、各述語が単一のストアに配置され、クエリ・ボックスが広がるストアの総数が最小限に抑えられることを保証する、貪欲な発見的手法を利用する。各述語に、述語が配置される適切なストアで注釈が付けられた後に、ブロック配置コンポーネント250は、クエリ・ブロックが分割される必要があるかどうかを判定する。
【0048】
実施形態では、selectクエリ・ボックス内のすべての述語が同じデータ・ノード130に配置された場合、そのストアに配置されるように、クエリ・ボックスに注釈が付けられる。これに対して、selectクエリ・ボックス内の述語が、2つ以上のデータ・ノード130に配置される場合(クエリ・ボックスが複数のストアによって処理される必要があるということを示す)、ブロック配置コンポーネント250は、ブロックが複数のクエリ・ボックスに分割されなければならないということを決定する。その場合、ブロック配置コンポーネント250は、得られる各(サブ)ブロックが、単一のデータ・ノードに割り当てられた述語を含むように、ブロックを分割する。
【0049】
一部の実施形態では、「group by」クエリ・ボックスの場合、ブロック配置コンポーネント250は、この種類の集約動作をサポートするストア、およびgroup byボックスにデータを供給する先行するクエリ・ボックスを処理するストアに基づいて、配置を決定する。実施形態では、これらの入力を供給するストアもgroup byおよび集約機能をサポートする場合、ブロック配置コンポーネント250は、選択された「group by」ボックスを同じストアに配置する。しかし、そのストアがこれらの動作をサポートしない場合、ブロック配置コンポーネント250は、ボックスに、group by動作を実行できるデータ・ノード130のリストで注釈を付ける。そのような配置が、供給元のストアからボックスを処理できるストアへのデータ移動を必要とするということに注意する。
【0050】
ブロック配置コンポーネント250が、各クエリ・ブロックに、各クエリ・ブロックの可能性のあるすべての配置(例えば、ブロックを実行できるすべてのデータ・ノード130)で注釈を付けた後に、コスト・コンポーネント255が、配置の各組み合わせのコストを決定する。1つの実施形態では、データ移動およびデータ変換のコストが多ストア環境における実行計画の全体的コストを支配する可能性が高いため、クエリ・ルーティングのためのコスト・モデルは、代替のクエリ実行計画から選択するためのデータ転送コストおよびデータ変換コストのみに重点を置く。したがって、少なくとも一部の実施形態では、特定の実行計画の実行のコストが、クエリ実行計画におけるソース・データ・ストアとターゲット・データ・ストアの対ごとにデータ移動のコストを集約することによって決定される。一部の実施形態では、結合動作およびグラフ操作などのさまざまな動作が、異なるデータ・ノード130上で非常に異なる性能で実行されてよいということに注意する。例えば、結合動作はさまざまなデータ・ストア(JSONストアなど)によってサポートされることができるが、通常はリレーショナル・データベースが結合動作の最良の性能を実現する。
【0051】
一部の実施形態では、コスト・モデルは、異なるストアの動作の実行コストにおけるこの相違をさらに考慮する。他の実施形態では、コスト・モデルは、これらの因子を含まない。1つのそのような実施形態では、基礎になるストアの能力を表す宣言メカニズムを使用してそのような事例が処理される。例えば、JSONストアでの結合動作の実行を回避するために、システムは、能力記述においてJSONストアの結合能力を完全に隠すか、または特定のデータ型に対する適用可能性を制限するための制限を追加することができる。
【0052】
実施形態では、コスト・コンポーネント255は、すべてのクエリ・ブロックにわたって可能性のあるすべての配置の組み合わせを列挙し、特定のクエリ・ボックスを一緒にグループにグループ化することによって、そのような組み合わせごとに実行計画を生成する。1つの実施形態では、クエリ計画における各グループは、(i)(例えば、単一のホップによって分離された)QGMにおける結果であり、かつ(ii)同じデータ・ノード130によって処理されることができる、クエリ・ボックスを含む。次に、コスト・コンポーネント255は、QGMのフローに基づいてこれらのブロックのグループを接続し、データ・ノード130間のデータ・フローを表すエッジ定義する。実施形態では、コスト・コンポーネント255は、生成された計画におけるグループ間のエッジに基づいて、実行計画ごとにデータ移動記述子のセットをさらに生成する。
【0053】
一部の実施形態では、コスト・コンポーネント255は、計画ごとにこれらの移動記述子を使用し、前述のデータ移動コスト・モデルを利用して、実行計画ごとのコストを求め、最小コストを有する実行計画を選択する。例えば、1つの実施形態では、コスト・コンポーネント255は、可能性のある実行計画ごとに、対応する移動記述子の各々のコストを決定する。このコストは、待ち時間、計算コストなどを含んでよい。次に、どの実行計画が最低のコストを有しているかを決定するために、これらの値が各実行計画内で集約されることができる。図に示されているように、次に、この最小コストの計画が選択され、データ・ノード130用の1つまたは複数の変換されたクエリ260を生成するために使用される。
【0054】
図3Aおよび3Bは、本明細書で開示された一実施形態に従って、クエリを評価し、ルーティングするために使用されることができる例示的なオントロジー300を示している。示されている実施形態では、各概念305A~Iが、楕円を使用して描かれており、一方、各プロパティ310A~Nが、角丸長方形を使用して描かれている。さらに、概念305とプロパティ310の間の関連性を示すために矢印が使用されており、一方、太い矢印が概念305間の関係を示している。さらに、関係の種類に基づいて、各関係の矢印にラベルが付けられている。例えば、図に示されているように、「Company」の概念305Bは、「PublicCompany」の概念305Dのサブクラスである。さらに、Companyの概念305Bは、「name」プロパティ310Eおよび識別子プロパティ310Dを含む複数のプロパティ310に関連付けられており、これらのプロパティは両方とも文字列である。
【0055】
前述したように、実施形態では、知識ベース内のデータがオントロジー300に従う。言い方を変えると、オントロジー300は、知識ベース内の概念および実体に加えて、実体と各概念に関連付けられたプロパティとの間の関係を定義する。特に、オントロジー300は、どのインスタンス・データ(例えば、特定の企業に関するデータ)も含まず、代わりにデータの構造を定義する。一部の実施形態では、概念305、プロパティ310、または関係、あるいはその組み合わせは、任意の数のデータ・ノード130にわたって分散されてよい。1つの実施形態では、データは、データの種類に少なくとも部分的に基づいてデータ・ノード130に配置される。
【0056】
1つのそのような実施形態では、概念マッピングが、特定の概念305が特定のデータ・ノード130に格納されるということを示している場合、その概念305に対応するすべてのインスタンス・データがデータ・ノード130に格納される。例えば、マッピングが、データ・ノード130Aが「PublicMetric」の概念305Fを含むということを示している場合、クエリ処理オーケストレータ115は、「PublicMetric」の任意のインスタンスに関するデータ(例えば、任意の企業に関する任意の指標)をデータ・ノード130Aから取り出すことができる。したがって、受信されたクエリが「PublicMetric」のデータにアクセスすることを必要とする場合、クエリ処理オーケストレータ115は、クエリの少なくとも一部をデータ・ノード130Aに(または概念305Fをやはり提供する別のノードに)ルーティングする。
【0057】
図4Aおよび4Bは、本明細書で開示された一実施形態に従って、例示的なオントロジー・クエリを構文解析してルーティングするためのワークフロー400を示している。示されている実施形態では、入力405が受信され、データ・ノード130から関連するデータを取り出すために評価される。示されている実施形態では、入力405は、(例えば、ユーザからの)自然言語テキストである。しかし、さまざまな実施形態では、入力405は、クエリまたはその他のデータを含んでよい。さらに、入力405は、自動化されたアプリケーション、ユーザ向けアプリケーション、ユーザから直接などを含む、任意の数のソースから受信されてよい。一部の実施形態では、入力405は、ユーザが知識ベースを検索して調査することを可能にするチャットボットまたはその他の対話型アプリケーションの一部として受信される。
【0058】
示されている例では、入力405は、「過去5年以内に技術的特許を出願したすべての企業の総収入を見せてください(Show me the total revenue of all companies that filed technology patents in the last 5 years)」という語句である。示されているワークフロー400では、入力405が、意味解析、キーワード検索、情緒解析、意図解析などの1つまたは複数の自然言語処理(NLP:natural language processing)技術を使用して構文解析され、評価される。これによってシステムは、入力405に基づいてOQLクエリ410を生成することができる。当然ながら、一部の実施形態では、入力405自体がOQLクエリである。
【0059】
図に示されているように、入力405に対応するOQLクエリ410は、「select」動作および「group by」動作に加えて、関連するテーブルまたは概念に関する指示、およびクエリに対する制限を示す「where」句を含んでいる。次に、このOQLクエリ410が、クエリ処理オーケストレータ115によって構文解析され、QGM435Aを生成し、QGM435Aはクエリの論理的表現であり、複数のクエリ・ブロックを含んでいる。示されている実施形態では、QGMは、「select」クエリ・ブロック415Bおよび「group by」クエリ・ブロック415Aを含んでいる。
【0060】
図に示されているように、QGM435Aは、入力概念のセットをクエリに提供する数量詞430A~Eのセットを、下部に含んでいる。示されている実施形態では、これらの数量詞は、「PublicMetricData」、「PublicMetric」、「PublicCompany」、「Document」、および「CompanyInfo」を含んでいる。実施形態では、QGM435A内の各クエリ・ブロック415は、先頭部420および本体425を含んでいる。本体425は、通常、入力概念のセットに対して実行される設定された動作(結合など)を含み、一方、先頭部420の式は、結果の概念の出力プロパティが計算される方法を記述する。例えば、示されている実施形態では、「select」クエリ・ブロック415Bの先頭部420Bは、出力プロパティ「oPMD.value」、「oPMD.year_calendar」、および「oCI.id」を指定する。本体425Bは、入力数量詞430A~Eに適用される述語のセットを含んでいる。前述したように、実施形態では、単一の数量詞を参照する述語が、局所的な述語であり、一方、複数の数量詞を参照する述語が、結合の述語を表す。
【0061】
図4Bに示されているように、クエリ処理オーケストレータ115は、「select」クエリ・ブロック415Bが、異なるデータ・ノード130によって実行されなければならない述語を含んでいるということを認識する。特に、クエリ・ブロック415B内の述語の大部分は、リレーショナル・データ・ストアによって実行されることができるが、クエリ処理オーケストレータ115は、述語「oD -> companyInfo = oCI」および「oD.selfMATCH(‘Tech Patent Filed’)」が、リレーショナル・データベース・ノードがサポートしていないエラスティックサーチを使用して実行される動作に対応するということを決定した。したがって、クエリ処理オーケストレータ115は、これらの述語を新しいクエリ・ブロック415Cに分離することによって、クエリ・ブロック415Bを分割した。図に示されているように、クエリ・ブロック415Cは、クエリ・ブロック415Bへの入力として機能する。
【0062】
示されている実施形態では、クエリ・ブロック415Bを分割することによって、クエリ処理オーケストレータ115は、各ブロックが単一のデータ・ノード130内で完全に実行されることができるということを保証した。例えば、クエリ・ブロック415Aおよび415Bは、両方ともリレーショナル・データ・ノード130内で実行されることができるが、クエリ・ブロック415Cは、エラスティックサーチをサポートしているデータ・ノード130によって実行されるべきである。したがって、一実施形態では、クエリ処理オーケストレータ115は、クエリ・ブロック415Aおよび415Bに対応するサブクエリを識別または生成し、このサブクエリをリレーショナル・ノードの適切な言語または形式あるいはその両方に変換し、変換されたサブクエリをリレーショナル・ノードに送信する。
【0063】
示されている実施形態では、クエリ処理オーケストレータ115は、クエリ・ブロック415Cを達成するためのサブクエリをさらに識別または生成し、エラスティックサーチ・ノードによってサポートされている言語または形式あるいはその両方に変換する。1つの実施形態では、クエリ処理オーケストレータ115は、このサブクエリを、アグリゲータとして機能するリレーショナル・データ・ストアにさらに送信する。次に、リレーショナル・ノードは、サブクエリをエラスティック・ノードに転送し、エラスティック・ノードによって返された結果を使用してリレーショナル・ノード自身のサブクエリを完了することができる。
【0064】
図5は、本明細書で開示された一実施形態に従って、オントロジー・クエリをルーティングするように構成されたクエリ処理オーケストレータ115を示すブロック図である。実施形態では、物理デバイスとして示されているが、クエリ処理オーケストレータ115は、仮想デバイスを使用して、または複数のデバイスにわたって(例えば、クラウド環境内で)、あるいはその両方で、実装されてよい。図に示されているように、クエリ処理オーケストレータ115は、プロセッサ510、メモリ515、ストレージ520、ネットワーク・インターフェイス525、および1つまたは複数のI/Oインターフェイス530を含んでいる。示されている実施形態では、プロセッサ510は、メモリ515に格納されたプログラミング命令を取り出し、実行するだけでなく、ストレージ520に存在するアプリケーション・データを格納し、取り出す。プロセッサ510は、一般に、単一のCPUまたはGPUあるいはその両方、複数のCPUまたはGPUあるいはその両方、複数のプロセッシング・コアを含んでいる単一のCPUまたはGPUあるいはその両方などを代表している。メモリ515は、一般に、ランダム・アクセス・メモリを代表するために含まれている。ストレージ520は、ディスク・ドライブ、フラッシュベースのストレージ・デバイスなどの任意の組み合わせであってよく、固定されたディスク・ドライブ、取り外し可能なメモリ・カード、キャッシュ、光ストレージ、ネットワーク接続ストレージ(NAS:network attached storage)、またはストレージ・エリア・ネットワーク(SAN:storage area networks)などの、固定されたストレージ・デバイスまたは取り外し可能なストレージ・デバイスあるいはその両方を含んでよい。
【0065】
一部の実施形態では、入力デバイスおよび出力デバイス(キーボード、モニタなど)が、I/Oインターフェイス530を介して接続される。さらに、ネットワーク・インターフェイス525を介して、クエリ処理オーケストレータ115は、(例えば、インターネット、ローカル・ネットワークなどを含んでよいネットワーク580を介して)1つまたは複数の他のデバイスおよびコンポーネントに通信可能に結合されることができる。図に示されているように、プロセッサ510、メモリ515、ストレージ520、ネットワーク・インターフェイス525、およびI/Oインターフェイス530は、1つまたは複数のバス575によって通信可能に結合される。さらに、クエリ処理オーケストレータ115は、ネットワーク580を介して複数のデータ・ノード130A~Nに通信可能に結合される。当然ながら、実施形態では、データ・ノード130A~Nは、クエリ処理オーケストレータ115に直接接続される、ローカル・ネットワークを介してアクセス可能である、クエリ処理オーケストレータ115に統合される、などであってよい。示された実施形態には含まれていないが、一部の実施形態では、クエリ処理オーケストレータ115は、データ配置オーケストレータ150にさらに通信可能に結合される。
【0066】
示されている実施形態では、ストレージ520は、オントロジー560、能力データ565、およびデータ・マッピング570を含んでいる。実施形態では、ストレージ520に存在するように示されているが、オントロジー560、能力データ565、およびデータ・マッピング570は、任意の適切な位置および方法で格納されてよい。実施形態では、前述したように、オントロジー560は、クエリ処理オーケストレータ115が動作している領域に関連する実体または概念に加えて、各概念/実体の可能性のあるプロパティおよび実体/概念間の関係を示している。少なくとも1つの実施形態では、オントロジー560は、インスタンスレベルのデータを含まない。代わりに、KB内の実際のデータは、データ・ノード130A~Nに格納される。
【0067】
実施形態では、前述したように、能力データ565は、各データ・ノード130A~Nの能力を示す。能力データ565は、例えば、各データ・ノード130A~Nがサポートする動作に関する指示、およびそのサポートに対する対応する制限を含んでよい。例えば、能力データ565は、データ・ノード130Aが「結合」動作を、整数データ型の場合にのみサポートするということを示してよい。実施形態では、前述したように、データ・マッピング570は、オントロジー560で定義された実体/概念ごとのインスタンス・データが格納されるデータ・ノード130を示す。例えば、データ・マッピング570は、「Company」の概念のすべてのインスタンスがデータ・ノード130Aおよび130Bに格納され、一方、「Document」の概念のすべてのインスタンスがデータ・ノード130Bおよび130Nに格納されるということを示してよい。
【0068】
示されている実施形態では、メモリ515は、クエリ・アプリケーション535を含んでいる。実施形態では、メモリ515に存在するソフトウェアとして示されているが、クエリ・アプリケーション535は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせを使用して実装されてよい。図に示されているように、クエリ・アプリケーション535は、構文解析コンポーネント540、ルーティング・コンポーネント545、およびトランスレータ120のセットを含んでいる。実施形態では、概念を明確にするために個別のコンポーネントとして示されているが、構文解析コンポーネント540、ルーティング・コンポーネント545、およびトランスレータ120の動作は、結合されるか、または任意の数のコンポーネントにわたって分散されることができる。
【0069】
実施形態では、構文解析コンポーネント540は、OQLクエリを受信し、構文解析して、それらの意味を決定し、クエリの論理的表現(QGMなど)を生成する。前述したように、一部の実施形態では、論理的表現はクエリ・ブロックのセットを含み、各クエリ・ブロックは、ブロックの入力数量詞に対して実行される動作を定義する1つまたは複数の述語を指定する。実施形態では、これらの数量詞は、1つまたは複数のデータ・ノード130に格納されている基本概念または別のクエリ・ブロックによって計算されるデータあるいはその両方であってよい。実施形態では、この論理的表現は、クエリ・アプリケーション535が、クエリの構造およびデータがブロック間をどのように流れるかについて理解し、推論することができるようにする。これによって、ルーティング・コンポーネント545は、クエリ(またはクエリのサブクエリ)を効率的にルーティングすることができる。
【0070】
示されている実施形態では、ルーティング・コンポーネント545は、構文解析コンポーネント540から論理的表現(例えば、クエリ・グラフ・モデル)を受信して評価し、クエリのルーティング先になるべき1つまたは複数のデータ・ノード130を識別する。一部の実施形態では、この評価は、論理的表現内の各クエリ・ブロックに含まれている述語を分析することを含む。1つの実施形態では、ルーティング・コンポーネント545は、述語を完了できるデータ・ノード130に基づいて、特定のクエリ・ブロック内の各述語にラベルまたは注釈を付ける。一部の実施形態では、このデータ・ノード130は、関連する数量詞を含んでいるか、または示された動作を実行できるか、あるいはその両方であるデータ・ノード130を含む。さらに、少なくとも1つの実施形態では、ブロック内の各述語が処理された後に、ルーティング・コンポーネント545は、注釈を評価し、ブロックの配置の位置を決定することができる。すなわち、ルーティング・コンポーネント545は、クエリ・ブロックを単一のデータ・ノード130に配置できるかどうかを判定する。配置できる場合、1つの実施形態では、ルーティング・コンポーネント545は、ブロックをそのストアに割り当てる。さらに、実施形態では、単一のデータ・ノード130によってブロックを処理できない場合、ルーティング・コンポーネント545は、ブロックを2つ以上のクエリ・ブロックに分割し、各クエリ・ブロックについてルーティング・プロセスを繰り返す。
【0071】
実施形態では、各クエリ・ブロックが単一のデータ・ノード130に割り当てられた後に、トランスレータ120が1つまたは複数の対応する変換されたクエリを生成する。実施形態では、各トランスレータ120は、特定のデータ・ノード130のアーキテクチャに対応し、OQLクエリ(またはサブクエリ)を対応するデータ・ストアのアーキテクチャに適したクエリに変換するように構成される。例えば、1つのそのような実施形態では、システムは、OQLをリレーショナル・ストア用のクエリ(例えば、SQL)に変換するための第1のトランスレータ120、OQLをJSONクエリに変換するための第2のトランスレータ120、ドキュメント検索用のクエリに変換するための第3のトランスレータ120、およびOQLをグラフ・クエリに変換するための第4のトランスレータ120を含んでよい。
【0072】
実施形態では、クエリまたはサブクエリを実行するデータ・ノード130に基づいて、クエリ(またはサブクエリ)が適切なトランスレータ120にルーティングされる。一部の実施形態では、次に、各クエリ(またはサブクエリ)が(例えば、アプリケーション・プログラミング・インターフェイス(API:application programming interface)を介して)そのデータ・ノード130に直接送信される。一部の実施形態では、クエリを完了することが(例えば、2つ以上のストアからのデータを結合するために)データ・ノード130間のデータ移動を必要とする場合、クエリ・アプリケーション535は、生成された論理的表現に基づいてデータの流れを決定し、クエリを適切に送信することができる。すなわち、クエリ・アプリケーション535は、QGMを使用して、どのストアが他のストアからデータを受信する必要があるかを決定し、必要とされるクエリをこれらの結合しているストアに送信する。例えば、データ・ノード130Aがデータをデータ・ノード130Nから受信し、データ・ノード130A上で1つまたは複数の動作を完了する場合、クエリ・アプリケーション535は、データ・ノード130Aからデータを取り出すための第1のクエリに加えて、データ・ノード130N用に構成された第2のクエリを、データ・ノード130Aに送信することができる。次に、データ・ノード130Aは、提供されたクエリを使用して、データ・ノード130Nに対するそれ自身の照会を実行することができる。
【0073】
図6は、本明細書で開示された一実施形態に従って、オントロジー・クエリを処理してルーティングするための方法600を示すフロー図である。方法600はブロック605で開始し、ブロック605で、クエリ処理オーケストレータ115が、知識ベースに対して実行するためのオントロジー・クエリを受信する。実施形態では、オントロジー・クエリは、事前に定義された領域オントロジーに関連して表され、オントロジーは、領域に関連する概念、プロパティ、および関係を指定する。ブロック610で、クエリ処理オーケストレータ115は、受信されたクエリを構文解析し、クエリの論理的表現を生成する。一部の実施形態では、クエリ処理オーケストレータ115は、クエリのクエリ・グラフ・モデル表現を生成する。実施形態では、論理的表現は、クエリによって暗示された基礎になる概念、データに対して実行される動作、およびデータ・フローを示す1つまたは複数のクエリ・ブロックを含む。
【0074】
次に、方法600はブロック615に進み、ブロック615で、クエリ処理オーケストレータ115が、事前に定義された概念マッピングまたはデータ・ストアの能力あるいはその両方に基づいて、論理的表現内の各クエリ・ブロックを1つまたは複数のデータ・ストアにマッピングする。例えば、1つの実施形態では、クエリ処理オーケストレータ115は、クエリ・ブロックごとに、どの概念が関連しているか(例えば、クエリ・ブロックがどのデータにアクセスするか)を決定する。次に、クエリ処理オーケストレータ115は、概念マッピングを使用して、必要なデータを提供できるデータ・ストアを識別することができる。さらに、1つの実施形態では、クエリ処理オーケストレータ115は、クエリ・ブロックごとに、どの動作が必要とされるかを決定する。次に、クエリ処理オーケストレータ115は、事前に定義されたストアの能力を使用して、必要な動作を実行できるデータ・ノードを識別することができる。次に、クエリ処理オーケストレータ115は、ストア間のデータ移動を最小限に抑えるよう努力しながら、クエリ・ブロックをデータ・ノードにマッピングする。
【0075】
ブロック620で、クエリ処理オーケストレータ115は、マッピングされたクエリ・ブロックのうちの1つを選択する。次に、方法600はブロック625に進み、ブロック625で、クエリ処理オーケストレータ115が、マッピングされたデータ・ストアに基づいて、クエリ・ブロックに対応する変換されクエリを生成する。1つの実施形態では、この生成は、選択されたクエリ・ブロックを実行するためのサブクエリを、受信されたクエリから識別または生成することを含む。次に、クエリ処理オーケストレータ115は、クエリ・ブロックを実行するデータ・ノードの構成を決定する。すなわち、1つの実施形態では、クエリ処理オーケストレータ115は、クエリの言語または形式あるいはその両方を決定し、これらの言語または形式あるいはその両方を処理するようにノードが構成されている。別の実施形態では、クエリ処理オーケストレータ115は、マッピングされたデータ・ストアに対応するトランスレータを識別する。次に、クエリ処理オーケストレータ115は、このトランスレータを使用してストアに適したクエリを生成する。
【0076】
次に、方法600はブロック630に進み、ブロック630で、クエリ処理オーケストレータ115が、まだ処理されていない少なくとも1つの追加のクエリ・ブロックが存在するかどうかを判定する。存在する場合、方法600がブロック620に戻る。存在しない場合、方法600がブロック635に進み、ブロック635で、クエリ処理オーケストレータ115が変換された1つまたは複数のクエリを1つまたは複数のデータ・ノードに送信する。1つの実施形態では、クエリ処理オーケストレータ115は、各クエリを対応するノードに送信する。別の実施形態では、クエリ処理オーケストレータ115は、論理的表現におけるデータの流れに基づいてクエリを送信する。例えば、クエリ処理オーケストレータ115は、ノードがクエリを適切なストアに転送してデータを取り出すことができるように、複数のクエリを単一のノードに送信してよい。次に、ノードは、結果を完成させるためのメディエータとして機能することができる。
【0077】
有利に、データ・ノードのうちの1つをメディエータとして使用することによって、クエリ処理オーケストレータ115は、計算費用を減らし、システムの拡張性を拡大することができる。ブロック640で、クエリ処理オーケストレータ115は、メディエータとして機能しているデータ・ストアから(または、受信されたクエリが単一のバックエンドのリソースで実行されることができる場合は、クエリの送信先だったデータ・ストアのみから)、完成したクエリ結果を受信する。次に、クエリ処理オーケストレータ115は、結果を要求元の実体に返す。
【0078】
図7は、本明細書で開示された一実施形態に従って、オントロジー・クエリを処理してクエリ・ブロックを効率的にルーティングするための方法700を示すフロー図である。方法700は、一部の実施形態では、クエリ・ブロックのルーティングに関する追加の詳細を提供する。方法700はブロック705で開始し、ブロック705で、クエリ処理オーケストレータ115が、前述したように、受信されたクエリを表す1つまたは複数のクエリ・ブロックを生成する。1つの実施形態では、各クエリ・ブロックは、ブロックの入力データを示す1つまたは複数の数量詞を指定する。これらの数量詞は、基本概念(例えば、知識ベース内のインスタンス・データ)または計算された暫定的データ(例えば、ストアから取り出され、何らかの方法で処理または変換あるいはその両方を実行されたデータ)あるいはその両方に対応してよい。さらに、実施形態では、各クエリ・ブロックは、数量詞に対して実行される動作を指定する。
【0079】
ブロック710で、クエリ処理オーケストレータ115は、生成されたブロックのうちの1つを選択する。さらに、ブロック715で、クエリ処理オーケストレータ115は、選択されたブロックによって定義された動作を満たすことができるデータ・ノードのセットを識別する。1つの実施形態では、クエリ処理オーケストレータ115は、そのような識別を、各データ・ストアが完了できる動作のセットを定義する事前に定義された能力定義、およびこの能力に対する対応する制限にアクセスすることによって、実行する。次に、方法700はブロック720に進み、ブロック720で、クエリ処理オーケストレータ115が、クエリ・ブロックに列挙された数量詞を満たすことができるノードのセットを識別する。すなわち、基本概念に対応する数量詞ごとに、クエリ処理オーケストレータ115は、基本概念を格納しているノードを識別する。
【0080】
1つの実施形態では、別のクエリ・ブロックによって計算される数量詞ごとに、クエリ処理オーケストレータ115が、そのクエリ・ブロックに割り当てられたデータ・ノードを識別する。実施形態では、クエリ処理オーケストレータ115が、QGMを下から上にたどることによって、クエリ・ブロックをノードにマッピングするということを思い出す。したがって、第1のブロックが第2のブロックで計算されたデータに依存する場合、必然的に、クエリ処理オーケストレータ115が第1のクエリ・ブロックの評価を開始する前に、第2のブロックが評価され、1つまたは複数のデータ・ノードを割り当てられている。
【0081】
次に、方法700はブロック725に進み、ブロック725で、クエリ処理オーケストレータ115が、数量詞を提供することができ、かつ動作を実行することができる少なくとも1つのデータ・ノードが存在するかどうかを判定する。1つの実施形態では、この判定は、識別されたセット間に重複が存在するかどうかを判定することを含む。例えば、数量詞がすべて基本概念である場合、2つのセット間の重複は、必要な動作のすべてを実行することができ、概念のすべてを格納しているノードのセットを示す。数量詞が、他のクエリ・ブロックによって計算される項目を含んでいる場合、重複するセットは、動作を実行することができ、他のブロックを実行する(可能性がある)ノードを示す。
【0082】
実施形態では、セット間に重複が存在する場合、方法700はブロック730に進み、ブロック730で、クエリ処理オーケストレータ115が、選択されたクエリ・ブロックに、重複において識別されたノードで注釈を付ける。この注釈は、指定されたノードがクエリ・ブロックを実行する可能性を有しているが、このノードへのブロックの最終的な割り当ての状態に達していないということを示す。実施形態では、クエリ・ブロックが、注釈に含まれている複数のノードを有している場合、クエリ処理オーケストレータ115は、下でさらに詳細に説明されているように、コスト分析を実行し、ストア間のデータ転送を最小限に抑えようと努力して各代替案を評価する。次に方法700は、ブロック740に進む。
【0083】
示されている実施形態では、セット間に重複が存在しない場合、クエリ処理オーケストレータ115は、クエリ・ブロックを完了できる単一のデータ・ノードが存在しないということを決定する。一部の実施形態では、動作のすべてが単一のストアによって実行されることができる場合、クエリ処理オーケストレータ115は、ブロックに、ブロックの動作を実行できるストアで注釈を付ける。次に、数量詞を提供するために、1つまたは複数の他のストアが割り当てられることができる。示されている実施形態では、次に方法700がブロック735に進み、ブロック735で、クエリ処理オーケストレータ115が、単一のノード内で完全に実行されることができるクエリ・ブロックを作成しようと努力して、選択されたクエリ・ブロックを2つ以上のブロックに分割する。1つの実施形態では、選択されたクエリ・ブロックを分割することは、単一のストアによって実行されることができる数量詞のサブセットまたは動作あるいはその両方を識別することを含む。例えば、クエリ処理オーケストレータ115は、注釈を共有する指定された述語(例えば、同じストアによって実行されることができる述語)のサブセットを識別してよい。次に、述語が属しているサブセットに基づいて述語を対応するボックスに分離することによって、クエリ・ブロックが分割されることができる。例えば、クエリ・ブロックが従来のリレーショナル・データベースの動作およびファジー・マッチ動作を必要とする場合、クエリ処理オーケストレータ115は、ファジー・マッチが分離したボックスに分割されるべきであるということを決定してよい。これによって、クエリ処理オーケストレータ115が各分割されたブロックを単一のデータ・ストアに割り当てることを可能にしてよい(例えば、リレーショナル動作がリレーショナル・ストアに割り当てられることができ、ファジー・マッチ動作が、ファジー・マッチ動作を実行できる異なるバックエンドに割り当てられることができる)。
【0084】
示されている実施形態では、これらの新たに生成されたクエリ・ブロックが、既存のブロックと同様に、評価されるキューに配置される。次に方法700は、ブロック740に進む。ブロック740で、クエリ処理オーケストレータ115が、評価されていない少なくとも1つの追加のクエリ・ブロックが存在するかどうかを判定する。存在する場合、方法700がブロック710に戻り、各ブロックを反復する。すなわち、クエリ処理オーケストレータ115は、各クエリ・ブロックを反復し続け、クエリ・ブロックのすべてに少なくとも1つのデータ・ノードで注釈が付けられるまで、必要に応じてボックスを分割する。
【0085】
すべてのクエリ・ブロックに注釈が付けられた場合、方法700がブロック745に進み、ブロック745で、クエリ処理オーケストレータ115がクエリを実行する。一部の実施形態では、この実行は、下でさらに詳細に説明されているように、データ転送を最小限に抑えるために割り当ての代替の組み合わせを評価することを含む。一部の実施形態では、クエリ・ブロックのうちの1つまたは複数の注釈が単一のデータ・ノードを示している場合、クエリ処理オーケストレータ115は、検討され得る代替案がないため、単にブロックを、その示されたノードに割り当てる。
【0086】
図8は、本明細書で開示された一実施形態に従って、オントロジー・クエリを効率的にルーティングするために可能性のあるクエリ・ルーティング計画を評価するための方法800を示すフロー図である。示されている実施形態では、方法800は、クエリ・ブロックに可能性のある割り当て(例えば、ブロック全体を実行し、必要なすべての数量詞を提供できるノード)で注釈が付けられた後に、開始する。方法800はブロック805で開始し、ブロック805で、クエリ処理オーケストレータ115が、ノード割り当ての可能性のある組み合わせのうちの1つを選択する。すなわち、実施形態では、クエリ処理オーケストレータ115が、対応する注釈に基づいて、ブロックのストアの可能性のあるすべての組み合わせを生成する。これを実行するために、クエリ処理オーケストレータ115は、可能性のあるすべての選択が生成されるまで、ブロックごとに異なる選択肢を反復的に選択することができる。
【0087】
例えば、第1のブロックに「ノードA」および「ノードB」で注釈が付けられ、第2のブロックに「ノードA」で注釈が付けられたと仮定する。実施形態では、クエリ処理オーケストレータ115が、可能性のあるルーティング計画が、第1のブロックおよび第2のブロックを「ノードA」に割り当てるか、または第1のブロックを「ノードB」に割り当て、第2のブロックを「ノードA」に割り当てることを含むということを決定する。ブロック805で、クエリ処理オーケストレータ115は、評価のために識別された組み合わせのうちの1つを選択する。次に方法800は、ブロック810に進む。
【0088】
ブロック810で、クエリ処理オーケストレータ115は、選択された計画に従って必要とされるデータ移動を識別する。実施形態では、この移動は、計画におけるストアの選択またはクエリ・グラフ・モデルあるいはその両方に基づいて決定される。上記の例を続けると、クエリ・ブロックの両方が単一のノードにグループ化されることができるため、クエリ処理オーケストレータ115は、両方のブロックを「ノードA」に割り当てる計画が移動を必要としないということを決定してよい。すなわち、ブロックが(例えば、間に他のブロックが存在せずに、直接接続された/単一のホップによって分離された)モデルにおける結果であり、同じノードを割り当てられるため、それらのブロックは一緒にグループ化され、データ移動が不要である。これに対して、QGMが、データが第2のブロックから第1のブロックへ流れ、これらのブロックが異なるストアに割り当てられることを示しているため、第1のブロックを「ノードB」に割り当てることは、「ノードA」と「ノードB」の間のデータの転送を必要とする。
【0089】
次に、方法800はブロック815に進み、ブロック815で、クエリ処理オーケストレータ115が、選択されたクエリ計画によって必要とされる識別されたデータ転送のうちの1つを選択する。ブロック820で、クエリ処理オーケストレータ115が、選択された移動の計算コストを決定する。実施形態では、この決定は、事前に定義されたコスト・モデルに基づいて行われる。一部の実施形態では、このモデルは、データ・ノードの順序付けられた対ごとに、第1のノードから第2のノードへのデータの転送の計算コストを示してよい。このコストは、例えば、データを実際に転送するため、または行き先ノードがデータに対して動作できるように、必要に応じてデータを変換するため、あるいはその両方のために導入される待ち時間、転送/変換のための処理時間またはメモリ要件あるいはその両方などを含んでよい。
【0090】
ブロック825で、クエリ処理オーケストレータ115は、選択された組み合わせが追加のデータ転送を必要とするかどうかを判定する。必要とする場合、方法800がブロック815に戻る。必要としない場合、方法800はブロック830に進み、ブロック830で、クエリ処理オーケストレータ115が、各移動の個別のコストを集約することによって、選択された計画の総コストを計算する。ブロック835で、クエリ処理オーケストレータ115が、評価されていない少なくとも1つの代替の計画が存在するかどうかを判定する。存在する場合、方法800がブロック805に戻る。存在しない場合、方法800はブロック840に進み、ブロック840で、クエリ処理オーケストレータ115が、計画の集約コストに基づいて、計画を順位付けする。実施形態では、クエリ処理オーケストレータ115は、最低の決定されたコストを有する計画を選択する。次に、クエリ処理オーケストレータ115は、最小コストの計画のノード割り当てに基づいて、サブクエリを変換し、ルーティングすることによって、計画を実行する。
【0091】
図9は、本明細書で開示された一実施形態に従って、オントロジー・クエリをルーティングするための方法900を示すフロー図である。方法900はブロック905で開始し、ブロック905で、クエリ処理オーケストレータ115がオントロジー・クエリを受信する。ブロック910で、クエリ処理オーケストレータ115が、オントロジー・クエリに基づいて1つまたは複数のクエリ・ブロックを生成し、各クエリ・ブロックは、1つまたは複数の動作およびクエリ・ブロック間のデータ・フローを表す1つまたは複数の数量詞を示す。次に、方法900はブロック915に進み、ブロック915で、クエリ処理オーケストレータ115が、1つまたは複数のクエリ・ブロックの各々について、1つまたは複数の数量詞および1つまたは複数の動作に基づいて少なくとも1つのデータ・ノードを識別する。さらに、ブロック920で、クエリ処理オーケストレータ115が、事前に定義されたコスト基準に基づいて、識別されたデータ・ノードのうちの1つまたは複数のデータ・ノードを選択する。さらに、ブロック925で、次にクエリ処理オーケストレータ115は、1つまたは複数のサブクエリを選択された1つまたは複数のデータ・ノードに送信する。
【0092】
図10は、本明細書で開示された一実施形態に従って、ワークロードを評価して知識ベース・データを格納するためのワークフロー1000を示している。前述したように、企業のアプリケーションは、多くの場合、アプリケーションのクエリ・ワークロードに応じて、さまざまなクエリの種類のサポートを必要とする。これらのさまざまなクエリの種類をサポートするために、本開示の実施形態は、リレーショナル・データベース、ドキュメント・ストア、グラフ・ストアなどの、複数のバックエンド・ストアを利用する。本開示の実施形態では、システムは、サポートされているクエリの種類に必要な能力を提供する任意のバックエンドで、知識ベース・データを移動し、格納し、知識ベース・データにインデックスを付与する能力を有する。データを編成するこの柔軟性によって、複数のバックエンド・ストアにわたる初期データ配置が、効率的なクエリの実行において重要な役割を果たすことができる。
【0093】
複製のオーバーヘッドを最小限に抑えて効率的な実行時の実行を実現するために、本開示の一部の実施形態は、インテリジェントなデータ配置を含む、オフラインのデータの準備および読み込みの段階を提供する。一般に、複数のバックエンド・ストアへのデータの取り込み、配置、および読み込みは、一連の動作を伴う。最初に、領域に固有の知識ベースのデータが、構造化データ、半構造化データ、および非構造化データを含む多種多様なソースから取り込まれる。一部の実施形態では、これらのデータ・ソースからのデータの取り込みの第1の段階は、情報の抽出、実体の解決、データの統合および変換を含む、データ・エンリッチメント/キュレーション・プロセスである。このステップによって生成された、領域オントロジーに従う出力データが、次に、複数のバックエンド・データ・ストアに適したデータ配置を生成するために、データ配置オーケストレータ150に供給される。一部の実施形態では、データは、データ配置オーケストレータ150が適用される前にすでにキュレートされており、クエリに応答することにすでに使用されていることがある。十分なデータ配置が決定された後に、データ読み込みモジュールが、データ配置計画に従ってインスタンス・データを適切なデータ・ストアに配置する。
【0094】
一部の実施形態では、すべてのデータ・ノードにわたってデータのセット全体を複製することによって、クエリの実行中のデータ移動を回避することができる。しかし、この解決策は、非常に大きい複製のオーバーヘッドにつながり、ストレージ空間要件を著しく増やす。さらに、多くの実施形態では、すべてのストアが、クエリによって必要とされるすべての必要な能力を提供するわけではなく、完全な複製でさえ、データ移動を完全に取り除くことはできない。不要なストレージ・コストおよびデータ移動を最小限に抑えるために、本開示の一部の実施形態は、予想されるワークロードおよび(例えば、格納されたデータに対してバックエンド・データ・ストアが実行できる動作に関する)バックエンド・データ・ストアの能力の両方を考慮しながらデータをデータ・ストアに割り当てる、能力に基づくデータ配置技術を提供する。
【0095】
実施形態では、データ配置オーケストレータ150は、知識ベースに格納されたデータのスキーマを表す領域オントロジーの概念すべてにわたって、クエリの動作のレベルでデータ配置について推論する。一部の実施形態では、オーケストレータは、知識ベースに対する特定のワークロードに加えて、基礎になるストアの能力に基づいて、オントロジーの異なる、重複している可能性があるサブセットを識別し、データの識別されたサブセットと、データが格納されるべきであるターゲット・データ・ストアの間のマッピングを出力する。
【0096】
示されている実施形態では、OQLクエリ1005のセットが受信されたときに、ワークフロー1000が開始する。一部の実施形態では、OQLクエリ1005は、知識ベースに対して以前にサブミットされたクエリである。例えば、一部の実施形態では、知識ベースは、ユーザおよびアプリケーションが照会して調査することができる既存のデータのコーパスである。そのような実施形態では、OQLクエリ1005は、ユーザ、アプリケーション、およびその他の実体が知識ベースと対話しているときに以前にサブミットしたクエリに対応することができる。
【0097】
実施形態では、OQLクエリ1005は、通常、知識ベースの平均的なワークロード、標準的なワークロード、予想されるワークロード、または過去のワークロード、あるいはその組み合わせを表す。言い方を変えると、OQLクエリ1005は、通常、動作の実行中に知識ベースが受信するクエリ(または受信すると予想されるクエリ)を代表し、一緒に照会されることが多い概念、各概念に対して通常は実行される動作などのセットを識別するために使用されることができる。図に示されているように、これらの代表的なOQLクエリ1005がOQLクエリ・アナライザ1010に提供され、OQLクエリ・アナライザ1010は、これらのOQLクエリ1005を分析して評価し、要約されたワークロード1015を生成する。
【0098】
実施形態では、OQLクエリ・アナライザ1010は、OQLクエリ1005を、概念および概念に対して実行される対応する動作との関係のセットとして表す。アナライザは、このセットに基づいて、要約されたワークロード1015を生成する。言い方を変えると、要約されたワークロード1015は、提供されたOQLクエリ1005の要約を反映し、データにおいてパターンを識別するためのより深い分析を可能にする。1つの実施形態では、要約されたワークロード1015は、OQLクエリ1005に基づいて生成された、要約されたクエリのセットを含む。特に、一部の実施形態では、要約されたクエリは、知識ベースに対して実行されることができる完全に書式設定されたクエリではない。代わりに、要約されたクエリは、概念の各クラスタに適用される可能性が高い動作のセットと共に、実行中に一緒に照会される可能性が高い概念のクラスタを示す。
【0099】
一部の実施形態では、OQLクエリ・アナライザ1010は、領域オントロジーに対して表されたOQLクエリ1005のセットを入力として受け取り、クエリごとに2つのセットを作成する。1つのそのような実施形態では、1つは、クエリがアクセスする概念のセットであり、もう1つは、クエリがそれらの概念すべてにわたって実行する動作(例えば、結合、集約など)のセットである。少なくとも1つの実施形態では、特定のOQLクエリ1005の要約されたワークロード1015の表現を生成するために、OQLクエリ・アナライザ1010は、概念の同じセットにアクセスするクエリをグループにグループ化し、その後、グループ内の各クエリの関連する動作を結合するセットを作成する。以下では、これがさらに詳細に説明される。
【0100】
示されている実施形態では、次に、要約されたワークロード1015がハイパーグラフ・モデラー(Hypergraph Modeler)1020に提供され、ハイパーグラフ・モデラー1020は、提供された要約されたクエリを評価してハイパーグラフ1025を生成する。実施形態では、ハイパーグラフ1025は、頂点のセットおよびエッジ(ハイパーエッジとも呼ばれる)のセットを含んでいるグラフであり、各エッジは、任意の数の頂点に接続することができる。一部の実施形態では、ハイパーグラフ1025内の各頂点は、領域オントロジーからの概念に対応し、各ハイパーエッジは、要約されたワークロード1015からの要約されたクエリに対応する。例えば、各ハイパーエッジは、対応する要約されクエリによって示された概念のセットにわたって広がる。1つの実施形態では、各ハイパーエッジに、対応する要約されたクエリによって示された動作のセットの指示で注釈またはラベルがさらに付けられる。
【0101】
図に示されているように、ハイパーグラフ1025は、オントロジー・スキーマ110およびノード能力155と共に、データ配置コンポーネント1030によって評価される。1つの実施形態では、データ配置コンポーネント1030は、ハイパーグラフ1025内の概念および関係を、クエリの動作に基づいて、重複している可能性があるサブセットにグループ化する。次に、これらのサブセットに対応するデータが、サポートされている動作に基づいて個別のバックエンド・データ・ノードに配置されることができる。一部の実施形態では、データ配置の決定は、識別されたオントロジーのサブセットの粒度で行われ、すべてのオントロジーの概念のすべてのデータを全体として配置する。言い換えると、配置決定165は、異なるストアにわたる概念を水平に分割しない。例えば、データ配置コンポーネント1030が「company」の概念を第1のデータ・ノードに配置した場合、「company」の概念に対応するすべてのインスタンスレベルのデータが第1のデータ・ノードに配置される。
【0102】
一部の実施形態では、オントロジーに基づくデータ配置コンポーネント1030は、データ配置のための2つのステップの手法に従う。最初に、データ配置コンポーネント1030は、概念に対して実行される動作の類似性に基づいて、領域オントロジー・スキーマ110内の概念をグループ化するために、要約されたワークロード1015を表すハイパーグラフ1025に対してグラフ分析アルゴリズムを実行する。次に、基礎になるデータ・ストアの各能力に基づいて、必要な複製の量を最小限に抑えながら、オントロジーのこれらの識別されたグループまたはサブセットに対応するデータが、基礎になるデータ・ストアにマッピングされる。実施形態では、結果として得られる能力に基づくデータ配置は、クエリの処理時の特定のワークロードに関するデータ移動(およびデータ変換)を最小限に抑え、多ストア環境におけるクエリ処理の効率を大幅に高める。図に示されているように、データ配置コンポーネント1030の最終的な出力は、オントロジーの概念を適切なデータ・ノードにマッピングする概念とストアの間のマッピング(例えば、配置決定165)である。
【0103】
示されたワークフロー1000には描かれていないが、実施形態では、次にシステムは、配置決定165を利用してデータをさまざまなバックエンドのリソースに格納する。1つの実施形態では、システムは、データを関連するデータ・ノード130に格納できるようにするために必要な変換を実行する抽出、変換、および読み込み(ETL)サービスを呼び出すことによって、そのような格納を実行する。
【0104】
一部の実施形態では、ワークフロー1000は、データ配置を定期的に再評価して改良し、システムの効率を維持するために使用される。例えば、混雑していない時間の間(例えば、業務時間でない間)に、システムは、発達するワークロードを反映するように配置が更新されるべきかどうかを判定するために、(例えば、最後のデータ配置の決定の後に受信されたクエリを含んでいる)OQLクエリ1005の更新されたセットに基づいて、ワークフロー1000を呼び出してよい。このようにして、データ位置が古くなるのを防ぐことによって、システムの有効性を改善することができる。
【0105】
図11は、本明細書で開示された一実施形態に従って、ワークロードを評価して知識ベース・データを格納するために使用される例示的なハイパーグラフ1100を示している。示された実施形態では、各概念1105A~Gが楕円として描かれており、各ハイパーエッジ1110A~Dが、概念1105を取り囲む破線として描かれており、ハイパーエッジはこれらの概念1105に対応している。例えば、ハイパーエッジ1110Aは、概念1105A(「Company」)、1105B(「PublicCompany」)、1105C(「PublicMetric」)、および1105D(「PublicMetricData」)を結合する。図に示されているように、各ハイパーエッジ1110は、概念1105の互いに素なサブセット(例えば、ハイパーエッジ1110Aおよび1110Cは重複していない)と、重複しているサブセット(例えば、ハイパーエッジ1110Aおよび1110Bは、「Company」の概念1105Aに関して重複している)との両方を含むことができる。
【0106】
さらに、図に示されているように、各ハイパーエッジ1110に、そのエッジに関連する動作1115A~Cでラベルが付けられている。前述したように、1つの実施形態では、ラベルは、ハイパーエッジ1110によって接続された概念1105に適用されるか、または適用されていてよい動作のセットを示す。例えば、図に示された例では、ハイパーエッジ1110Aが、動作1115A(「結合」)、1115B(「集約」)、および1115C(「ファジー」マッチング)に関連付けられている。特に、各動作1115は、任意の数のハイパーエッジ1110または概念1105あるいはその両方に関連付けられることができる。示されている実施形態では、「結合」動作1115Aがハイパーエッジ1110Aおよび1110Bに関連付けられ、「集約」動作1115Bがハイパーエッジ1110Aおよび1110Dに関連付けられ、「ファジー」動作1115Cがハイパーエッジ1110A、1110D、および1110Cに関連付けられている。
【0107】
図12は、本明細書で開示された一実施形態に従って、ワークロードを評価してデータを格納するように構成されたデータ配置オーケストレータ150を示すブロック図である。実施形態では、物理デバイスとして示されているが、データ配置オーケストレータ150は、仮想デバイスを使用して、または複数のデバイスにわたって(例えば、クラウド環境内で)、あるいはその両方で、実装されてよい。図に示されているように、データ配置オーケストレータ150は、プロセッサ1210、メモリ1215、ストレージ1220、ネットワーク・インターフェイス1225、および1つまたは複数のI/Oインターフェイス1230を含んでいる。示されている実施形態では、プロセッサ1210は、メモリ1215に格納されたプログラミング命令を取り出し、実行するだけでなく、ストレージ1120に存在するアプリケーション・データを格納し、取り出す。プロセッサ1210は、一般に、単一のCPUまたはGPUあるいはその両方、複数のCPUまたはGPUあるいはその両方、複数のプロセッシング・コアを含んでいる単一のCPUまたはGPUあるいはその両方などを代表している。メモリ1215は、一般に、ランダム・アクセス・メモリを代表するために含まれている。ストレージ1220は、ディスク・ドライブ、フラッシュベースのストレージ・デバイスなどの任意の組み合わせであってよく、固定されたディスク・ドライブ、取り外し可能なメモリ・カード、キャッシュ、光ストレージ、ネットワーク接続ストレージ(NAS)、またはストレージ・エリア・ネットワーク(SAN)などの、固定されたストレージ・デバイスまたは取り外し可能なストレージ・デバイスあるいはその両方を含んでよい。
【0108】
一部の実施形態では、入力デバイスおよび出力デバイス(キーボード、モニタなど)が、I/Oインターフェイス1230を介して接続される。さらに、ネットワーク・インターフェイス1225を介して、データ配置オーケストレータ150は、(例えば、インターネット、ローカル・ネットワークなどを含んでよいネットワーク1280を介して)1つまたは複数の他のデバイスおよびコンポーネントに通信可能に結合されることができる。図に示されているように、プロセッサ1210、メモリ1215、ストレージ1220、ネットワーク・インターフェイス1225、およびI/Oインターフェイス1230は、1つまたは複数のバス1275によって通信可能に結合される。さらに、データ配置オーケストレータ150は、ネットワーク1280を介してデータ・ノード130A~Nに通信可能に結合される。当然ながら、実施形態では、データ・ノード130A~Nは、データ配置オーケストレータ150に直接接続される、ローカル・ネットワークを介してアクセス可能である、データ配置オーケストレータ150に統合される、などであってよい。示された実施形態には含まれていないが、一部の実施形態では、データ配置オーケストレータ150は、クエリ処理オーケストレータ115にさらに通信可能に結合される。
【0109】
示されている実施形態では、ストレージ1220は、領域オントロジー1260、能力データ1265、およびデータ・マッピング1270のコピーを含んでいる。実施形態では、ストレージ1220に存在するように示されているが、オントロジー1260、能力データ1265、およびデータ・マッピング1270は、任意の適切な位置および方法で格納されてよい。1つの実施形態では、オントロジー1260、能力データ1265、およびデータ・マッピング1270は、クエリ処理オーケストレータ115を参照して上で説明されたオントロジー560、能力データ565、およびデータ・マッピング570に対応する。
【0110】
例えば、前述したように、オントロジー1260は、領域に関連する実体または概念に加えて、各概念/実体の可能性のあるプロパティおよび実体/概念間の関係を示すことができ、インスタンスレベルのデータを含んでいない。同様に、前述したように、能力データ1265は、各データ・ノード130A~Nの能力を示す。能力データ1265は、例えば、各データ・ノード130A~Nがサポートする動作に関する指示、およびそのサポートに対する任意の対応する制限を含んでよい。
【0111】
実施形態では、データ・マッピング1270は、配置アプリケーション1235によって生成され、オントロジー1260で定義された実体/概念ごとのインスタンス・データを格納するデータ・ノード130を示す。例えば、データ・マッピング1270は、「Company」の概念のすべてのインスタンスがデータ・ノード130Aおよび130Bに格納され、一方、「Document」の概念のすべてのインスタンスがデータ・ノード130Bおよび130Nに格納されるということを示してよい。
【0112】
示されている実施形態では、メモリ1215は、配置アプリケーション1235を含んでいる。実施形態では、メモリ1215に存在するソフトウェアとして示されているが、配置アプリケーション1235は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせを使用して実装されてよい。図に示されているように、配置アプリケーション1235は、要約コンポーネント1240、ハイパーグラフ・コンポーネント1245、および配置コンポーネント1250を含んでいる。実施形態では、概念を明確にするために個別のコンポーネントとして示されているが、要約コンポーネント1240、ハイパーグラフ・コンポーネント1245、および配置コンポーネント1250の動作は、結合されるか、または任意の数のコンポーネントにわたって分散されることができる。
【0113】
実施形態では、要約コンポーネント1240は、システム上の前のワークロード、現在のワークロード、期待されるワークロード、標準的なワークロード、平均的なワークロード、予想されるワークロード、または一般的なワークロード、あるいはその組み合わせを反映する、以前のOQLクエリ(またはサンプル・クエリ)を受信する。次に、要約コンポーネント1240は、提供されたクエリを評価し、ワークロードを要約されたクエリの形態で要約する。実施形態では、要約されたクエリは、一般に、一緒に照会される概念のセットを、概念に対して実行される動作と共に示すが、実行されることができる実際のクエリに対応していない。以下では、要約コンポーネント1240の機能が、
図13を参照してさらに詳細に説明される。
【0114】
実施形態では、ハイパーグラフ・コンポーネント1245が、要約コンポーネント1240から要約されたワークロード情報を受信して構文解析し、クエリ・ワークロードを表すハイパーグラフを生成する。前述したように、一部の実施形態では、ハイパーグラフは、オントロジー1260における概念ごとに頂点を含む。さらに、実施形態では、要約されたクエリ・ワークロードを表すハイパーエッジによって、概念の頂点が接続される。以下では、ハイパーグラフ・コンポーネント1245の動作が、
図14を参照してさらに詳細に説明される。
【0115】
1つの実施形態では、配置コンポーネント1250が、ハイパーグラフを評価して、データ配置の決定(例えば、データ・マッピング1270)を生成する。次に、これらの決定が、データを適切なノードにルーティングするために使用されることができる。例えば、1つの実施形態では、システムは、知識ベースを通って反復し、データを配置する。システムは、データ項目ごとに、対応する概念を決定し、対応するデータ・ノード130を検索し、データを示されたノードに格納することができる。一部の実施形態では、システムは、行き先ストアに適した任意の変換も実行する。以下では、配置コンポーネント1250の機能が、
図15および16を参照してさらに詳細に説明される。
【0116】
図13は、本明細書で開示された一実施形態に従って、クエリ・ワークロードを評価して要約し、データ配置の決定を知らせるための方法1300を示すフロー図である。方法1300はブロック1305で開始し、ブロック1305で、データ配置オーケストレータ150が、知識ベースのワークロードを代表している1つまたは複数のクエリを受信する。ブロック1310で、データ配置オーケストレータ150は、評価のために受信されたクエリのうちの1つを選択する。次に、方法1300はブロック1315に進み、ブロック1315で、データ配置オーケストレータ150が、選択されたクエリに含まれている概念を識別する。同様に、ブロック1320で、データ配置オーケストレータ150が、クエリに含まれている動作を識別する。
【0117】
1つの実施形態では、データ配置オーケストレータ150は、クエリによって指定された概念の決定されたセットを、クエリに含まれている動作のセットに関連付ける。一部の実施形態では、粒度の細かい概念/動作レベルで、動作と概念の対が決定される。一部の他の実施形態では、データ配置オーケストレータ150は、どの動作がどの概念にリンクされるかを決定するのではなく、全体としての動作のセットを、全体としての概念のセットにリンクする。すなわち、データ配置オーケストレータ150は、クエリの実際の実行の詳細/望ましい結果を無視し、変換の特定の適用ではなく、含まれているデータ/動作に基づいて、関連する概念および動作のセットを定義する。
【0118】
次に、方法1300はブロック1325に進み、ブロック1325で、データ配置オーケストレータ150が、まだ評価されていない少なくとも1つの追加のクエリが存在するかどうかを判定する。存在する場合、方法1300がブロック1310に戻る。存在しない場合、方法1300がブロック1330に進む。グループ1330で、データ配置オーケストレータ150が、各受信されたクエリに対応する概念のセットに基づいて、受信されたクエリをグループ化する。1つの実施形態では、このグループ化は、概念の一致するセットを指定するすべてのクエリをグループ化またはクラスタ化することを含む。例えば、データ配置オーケストレータ150は、「Company」の概念および「PublicMetric」の概念を両方とも指定するすべてのクエリを第1のグループにグループ化することができる。特に、そのような実施形態では、「Company」の概念または「PublicMetric」の概念のみを単独で指定するクエリは、異なるグループに配置される。同様に、「Company」および「PublicMetric」を指定するが、「Document」の概念も含んでいるクエリは、第1のグループに配置されない。
【0119】
すなわち、実施形態では、データ配置オーケストレータ150は、概念の正確に一致するセットを指定するクエリをグループ化する。追加の概念またはより少ない概念を指定するクエリは、他のグループに配置される。1つの実施形態では、各グループに対応する概念のセットは、各要約されたクエリを形成するために使用される。すなわち、示されている実施形態では、データ配置オーケストレータ150は、各クエリが実行する動作に関わらず、同一の概念にアクセスするクエリをクラスタにグループ化することによって、受信された前のクエリを集約する。
【0120】
次に、方法1300はブロック1335に進み、ブロック1335で、データ配置オーケストレータ150が、これらの定義されたクエリ・グループのうちの1つを選択する。ブロック1340で、データ配置オーケストレータ150は、選択されたグループに関連付けられたクエリのうちの1つを選択する。さらに、ブロック1345で、データ配置オーケストレータ150は、選択されたクエリによって指定された対応する動作を、選択されたクエリ・グループを表す要約されたクエリに関連付ける。1つの実施形態では、動作が要約されたクエリにすでに反映されている場合、データ配置オーケストレータ150は、その動作を再び追加しない。すなわち、実施形態では、要約されたクエリに関連付けられた動作のセットは、特定の動作の存在または欠如のいずれかを示す2進値である。
【0121】
実施形態では、要約されたクエリに関連付けられた動作は、任意のレベルの粒度であることができる。例えば、一部の実施形態では、データ配置オーケストレータ150は、特定の種類の動作(例えば、内部結合)、動作に対する制限、または動作の仕様(例えば、文字列の結合または整数の結合などの、データの種類)をいずれも考慮することなく、動作レベル(例えば、「結合」)で要約されたクエリを定義する。他の実施形態では、より豊富な詳細をその後の処理に提供するために、これらの詳細が要約されたクエリの記述に含まれる。
【0122】
次に、方法1300はブロック1350に進み、ブロック1350で、データ配置オーケストレータ150が、少なくとも1つの追加のクエリが選択されたグループに存在するかどうかを判定する。存在する場合、方法1300がブロック1340に戻る。存在しない場合、ブロック1355で、データ配置オーケストレータ150が、まだ評価されていない少なくとも1つの追加のクエリのグループが存在するかどうかを判定する。存在する場合、方法1300がブロック1335に戻る。存在しない場合、方法1300がブロック1360に進む。ブロック1360で、データ配置オーケストレータ150は、要約されたワークロードを格納し、ハイパーグラフを生成するために要約されたワークロードが使用され、評価されることができるようにする。
【0123】
図14は、本明細書で開示された一実施形態に従って、オントロジーのワークロードをモデル化し、データ配置の決定を知らせるための方法1400を示すフロー図である。方法1400はブロック1405で開始し、ブロック1405で、データ配置オーケストレータ150が、オントロジーの概念のうちの1つを選択する。ブロック1410で、データ配置オーケストレータ150は、この選択された概念のハイパーグラフの頂点を生成する。次に、方法1400はブロック1415に進み、ブロック1415で、データ配置オーケストレータ150が、ハイパーグラフ内の頂点をまだ有していない任意の追加の概念がオントロジーに残っているかどうかを判定する。残っている場合、方法1400がブロック1405に戻る。残っていない場合、方法1400がブロック1420に進む。
【0124】
ブロック1420で、データ配置オーケストレータ150は、要約されたクエリのうちの1つを選択する。前述したように、実施形態では、各要約されたクエリは、概念のセット、および前のワークロードで概念に適用された動作の対応するセットを示す。ブロック1425で、データ配置オーケストレータ150は、選択された要約されたクエリによって示された概念の各々をリンクするハイパーエッジを生成する。次に、方法1400はブロック1430に進み、ブロック1430で、データ配置オーケストレータ150が、新たに生成されたハイパーエッジに、選択された要約されたクエリによって示された動作の指示でラベルを付ける。このようにして、データ配置オーケストレータ150は、その後、ハイパーグラフを評価し、知識ベースのための関係および使用パターンを識別することができる。
【0125】
次に、方法1400はブロック1435に進み、ブロック1435で、データ配置オーケストレータ150が、評価されてハイパーグラフに組み込まれるべき少なくとも1つの追加の要約されたクエリが存在するかどうかを判定する。存在する場合、方法1400がブロック1420に戻る。存在しない場合、方法1400はブロック1440に進み、ブロック1440で、データ配置オーケストレータ150が、生成されたハイパーグラフを、その後使用するために格納する。
【0126】
図15および16は、本明細書で開示された一実施形態に従って、ハイパーグラフを評価し、データ配置の決定を推進するための方法を示すフロー図を示している。
図15を参照して説明される方法1500は、概念マッピングを生成するための動作に基づくクラスタ化技術の1つの実施形態を示しており、一方、
図16を参照して下で説明される方法1600は、最小被覆技術の1つの実施形態を示している。
【0127】
1つの実施形態では、動作に基づくクラスタ化技術は、概念が受ける動作に基づいて、概念をグループ化する。1つのそのような実施形態では、ハイパーグラフ内の動作記述ごとに、データ配置オーケストレータ150が各クラスタを作成する。次に、データ配置オーケストレータ150は、各ハイパーエッジに関連付けられた動作記述のセットすべてにわたって反復し、そのような動作記述ごとに、ハイパーエッジが広がるすべての概念を、対応する動作のクラスタに割り当てる。実施形態では、概念が一緒にクラスタ化された後に、データ配置オーケストレータ150は、各ノードが、クラスタの動作記述に一致する能力記述を有する(例えば、クラスタの対応する動作を実行することができる)ように、各概念クラスタをデータ・ノードのセットに割り当てる。最後に、動作に基づくシステムでは、データ配置オーケストレータ150が、各クラスタ内の各概念を識別されたデータ・ストアの対応するセットにマッピングするマッピングを生成する。
【0128】
動作に基づくクラスタ化技術の1つの実施形態の例として、
図11に示されているハイパーグラフ1100について考える。最初に、データ配置オーケストレータ150は、動作1115A~CごとにクラスタC(例えば、C
Join、C
Agg、およびC
Fuzzy)を生成する。次にシステムは、ハイパーエッジごとに、ハイパーエッジに関連付けられた動作のセットを決定する。示された動作ごとに、システムは、ハイパーエッジ1110によって指定された概念を対応するクラスタに割り当てる。上記の例を続けると、C
Joinは、ハイパーエッジ1110Aからの概念1105A、1105B、1105C、および1105Dに加えて、ハイパーエッジ1110Bからの概念1110Eおよび1105Fを含む。さらに、C
Aggは、ハイパーエッジ1110Aからの概念1105A、1105B、1105C、および1105Dに加えて、ハイパーエッジ1110Dからの概念1105Gを含む。最後に、C
Fuzzyは、ハイパーエッジ1110Aからの概念1105A、1105B、1105C、および1105Dに加えて、ハイパーエッジ1110Cからの概念1105Hを含む。
【0129】
多くの実施形態では、これらの動作に基づくクラスタは、有意な重複を含んでいる。例えば、概念1105A、1105B、1105C、および1105Dがすべてのクラスタに含まれているということに注意する。マッピングを完成させるために、1つの実施形態では、データ配置オーケストレータ150は、クラスタごとに、対応する動作を実行できるすべてのデータ・ノード130を識別する。次に、データ配置オーケストレータ150は、クラスタ内のすべての概念1105を、識別されたデータ・ノード130のすべてにマッピングする。一部の実施形態では、動作に基づく技術は、データを対応する動作をサポートしているすべてのストアに配置することによって、クエリの処理時のデータ移動を最小限に抑えるか、または減らすことができるが、複数のストアがクラスタの動作を満たす能力を有している場合、概念の同じクラスタがそれらの複数のストアに配置される可能性があるため、ある程度の複製のオーバーヘッドを導入する。
【0130】
一部の実装では、複製のオーバーヘッドさらに減らすために、最小被覆技術の実施形態が利用される。1つの実施形態では、最小被覆の実施形態は、クエリの処理時のデータ移動をまだ最小限に抑えながら、データの複製の量をさらに最小限に抑えることによって、動作に基づく技術を上回って改善する。実施形態では、この技術は、最小集合被覆アルゴリズムを活用して、クエリ・ワークロードのハイパーグラフ内の各ハイパーエッジによって必要とされる動作の完全なセットをサポートするために必要な最小の数のデータ・ストアを見つける。一部の実施形態では、最小被覆技術は、ハイパーエッジによって必要とされる動作のセットを満たすデータ・ストアのセットにわたる各ハイパーエッジの距離を最小限に抑える。
【0131】
最小被覆技術の1つの実施形態例では、ハイパーグラフ内のハイパーエッジごとに、データ配置オーケストレータ150が、示された動作のすべてを覆う最小の数のデータ・ノードを見つける。例えば、動作のすべてが、単一のデータ・ノード130Aによって完了されることができる場合、最小セットはこのノードのみを含む。動作のうちの1つまたは複数が、データ・ノード130Aによって完了されることができない場合、すべての動作が満たされるまで、1つまたは複数の他のデータ・ノード130B~Nが最小セットに追加される。ハイパーエッジに対して最小セットが決定された後に、ハイパーエッジ内の各概念が、対応する最小セット内のノードの各々にマッピングされる。
【0132】
最小被覆クラスタ化技術の1つの実施形態の例として、
図11に示されているハイパーグラフ1100について考える。データ・ノード130が、動作1115Aおよび1115Bをサポートするように構成された第1のデータ・ノード130A、動作1115Bおよび1115Cをサポートするように構成された第2のデータ・ノード130B、および動作115Bのみをサポートするように構成された第3のデータ・ノード130Cを含んでいると仮定する。ハイパーエッジ1110Aについて、データ配置オーケストレータ150は、示された3つの動作をすべてサポートできる単独のノードはないが、データ・ノード130Aおよび130Bのセットがそれらの動作をサポートできるということを、決定することができる。これらの2つのノードはハイパーエッジ全体をサポートすることができるため、データ・ノード130Cをセットに追加する必要はない。
【0133】
同様に、ハイパーエッジ1110Bがデータ・ノード130A(結合動作を提供するように構成された唯一のノード)に割り当てられ、一方、ハイパーエッジ1110Cがデータ・ノード130B(ファジー・マッチングを提供するように構成された唯一のノード)に割り当てられる。最後に、ハイパーエッジ1110Dが、データ・ノード130Aおよび130Bまたはデータ・ノード130Bおよび130Cのいずれかに割り当てられることができる。一部の実施形態では、データ配置オーケストレータ150は、各々の待ち時間または計算リソース、事前に定義された優先性などのその他の基準に基づいて、これらのその他の点では等価な代替案から選択する。次に、データ配置オーケストレータ150は、各ハイパーエッジ1110の概念1105を、割り当てられたデータ・ノード130にマッピングする。
【0134】
図15は、本明細書で開示された一実施形態に従って、ハイパーグラフを評価し、データ配置の決定を推進するための演算子に基づく方法1500を示すフロー図である。方法1500はブロック1505で開始し、ブロック1505で、データ配置オーケストレータ150が、ハイパーグラフによって示された動作のうちの1つを選択する。ブロック1510で、データ配置オーケストレータ150は、選択された動作のクラスタを生成する。次に、方法1500はブロック1515に進み、ブロック1515で、データ配置オーケストレータ150が、クラスタがまだ関連付けられていない、ハイパーグラフに反映された少なくとも1つの追加の動作が存在するかどうかを判定する。存在する場合、方法1500がブロック1505に戻る。存在しない場合、方法1500がブロック1520に進む。
【0135】
ブロック1520で、データ配置オーケストレータ150は、ハイパーグラフ内のハイパーエッジのうちの1つを分析のために選択する。ブロック1525で、データ配置オーケストレータ150が、選択されたエッジに関連付けられた概念および動作を識別する。次に、方法1500はブロック1530に進み、ブロック1530で、データ配置オーケストレータ150が、これらの示された動作のうちの1つを選択する。さらに、ブロック1535で、データ配置オーケストレータ150が、選択された動作に対応するクラスタを識別し、選択されたハイパーエッジによって示された概念のすべてをこのクラスタに追加する。次に、方法1500はブロック1540に進み、ブロック1540で、データ配置オーケストレータ150が、選択されたエッジがまだ処理されていない少なくとも1つの追加の動作を示しているかどうかを判定する。示している場合、方法1500がブロック1530に戻る。
【0136】
選択されたハイパーエッジに関連付けられた追加の動作がない場合、方法1500はブロック1545に進み、ブロック1545で、データ配置オーケストレータ150が、ハイパーグラフがまだ評価されていない少なくとも1つの追加のエッジを含んでいるかどうかを判定する。含んでいる場合、方法1500がブロック1520に戻る。含んでいない場合、方法1500はブロック1550に進み、ブロック1550で、データ配置オーケストレータ150が動作クラスタを、各動作を処理するように構成された対応するデータ・ノードにマッピングする。例えば、1つの実施形態では、データ配置オーケストレータ150は、クラスタごとに、対応する動作を実行できるデータ・ノードのセットを識別する。実施形態では、データ配置オーケストレータ150は、次に、クラスタ内のすべての概念を識別されたデータ・ノードのセットの各ノードにマッピングする。データ配置オーケストレータ150は、これらのマッピングを使用して、知識ベース内のデータをさまざまなデータ・ノードにわたって分散することができる。
【0137】
図16は、本明細書で開示された一実施形態に従って、ハイパーグラフを評価し、データ配置の決定を推進するための最小被覆に基づく方法1600を示すフロー図である。方法1600はブロック1605で開始し、ブロック1605で、データ配置オーケストレータ150が、ハイパーグラフ内のハイパーエッジのうちの1つを選択する。ブロック1610で、データ配置オーケストレータ150が、選択されたエッジに関連付けられた対応する概念および動作を識別する。さらに、ブロック1615で、データ配置オーケストレータ150は、示された動作のすべてを集合的に満たすことができるデータ・ノードの最小セットを決定する。
【0138】
1つの実施形態では、データ配置オーケストレータ150は、データ・ノードの各組み合わせを反復的に評価し、組み合わせが示された動作を満たすかどうかを判定することによって、最小セットを決定する。すなわち、選択されたエッジによって示されたすべての動作が、組み合わせ内の少なくとも1つのデータ・ノードによって実行されることができるかどうかを判定する。満たさない場合、組み合わせが破棄されることができ、テストのための別のノードまたは組み合わせが選択されることができる(または、別のノードが現在の組み合わせに追加されることができる)。データ配置オーケストレータ150は、各組み合わせが完成しており、すべての必要な動作を実行できるという点において十分であるかどうかを判定し、最小の数のデータ・ノードを含む組み合わせが実行中の最小のデータ移動につながる可能性が高いため、そのような組み合わせを識別してよい。1つの実施形態では、2つ以上の組み合わせが等しく小さい場合、データ配置オーケストレータ150は、事前に定義された基準または優先性を利用して、最良の組み合わせを選択することができる。例えば、事前に定義されたルールが、少なくとも1つのリレーショナル・データ・ストアを含んでいる組み合わせが、リレーショナル・データ・ストアを含んでいない組み合わせよりも優先されるということを示してよい。別の例として、ルールが、特定の種類のストアまたは特定のデータ・ノード130あるいはその両方の重みまたは優先度を示してよい。そのような実施形態では、データ配置オーケストレータ150は、またはその他の方法で組み合わせごとにこれらの重みを集約し、どのストアを使用するべきかを決定してよい。次に、選択されたエッジに、データ・ノードの決定されたセットの指示でラベルが付けられてよい。
【0139】
データ・ノードの最小セットが決定された後に、方法1600がブロック1620に進み、ブロック1620で、データ配置オーケストレータ150が、少なくとも1つの追加のハイパーエッジがハイパーグラフに存在するかどうかを判定する。存在する場合、方法1600がブロック1605に戻る。存在しない場合、方法1600がブロック1625に進む。ブロック1625で、データ配置オーケストレータ150は、システム内の使用可能なデータ・ノードのうちの1つを選択する。ブロック1630で、データ配置オーケストレータ150は、選択されたデータ・ノードを含んでいるラベルを有するハイパーグラフ内のすべてのハイパーエッジを識別する。次に、データ配置オーケストレータ150は、これらのハイパーエッジ(または各ハイパーエッジが含んでいる概念)を一緒にグループ化またはクラスタ化し、選択されたノードに格納される概念のグループ/クラスタを形成する。次に、方法1600はブロック1635に進み、ブロック1635で、データ配置オーケストレータ150が、グループ/クラスタをまだ割り当てられていない少なくとも1つの追加のデータ・ノードがシステムに存在するかどうかを判定する。存在する場合、方法1600がブロック1625に戻る。
【0140】
存在しない場合、方法1600がブロック1640に進み、ブロック1640で、データ配置オーケストレータ150が、データ・ノードごとに、対応するクラスタに含まれている概念のすべてをストアにマッピングする。データ配置オーケストレータ150は、その後、これらのマッピングを使用して、知識ベース内のデータをさまざまなデータ・ノードにわたって分散することができる。
【0141】
図17は、本明細書で開示された一実施形態に従って、オントロジーの概念をストレージ・ノードにマッピングするための方法1700を示すフロー図である。方法1700はブロック1705で開始し、ブロック1705で、データ配置オーケストレータ150が、領域に対応するクエリ・ワークロード情報を決定する。ブロック1710で、データ配置オーケストレータ150は、クエリ・ワークロード情報をハイパーグラフとしてモデル化し、このハイパーグラフは頂点のセットおよびハイパーエッジのセットを含み、頂点のセット内の各頂点は、領域に関連付けられたオントロジーにおける概念に対応する。次に、方法1700はブロック1715に進み、ブロック1715で、データ配置オーケストレータ150が、ハイパーグラフに基づき、かつ複数のデータ・ノードの各々の事前に定義された能力にさらに基づき、概念と複数のデータ・ノードの間のマッピングを生成する。さらに、ブロック1720で、データ配置オーケストレータ150は、生成されたマッピングに基づいて分散知識ベースを確立する。
【0142】
本開示のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【0143】
上記または下記あるいはその両方では、本開示で提示された実施形態への参照が行われている。しかし、本開示の範囲は、特定の説明された実施形態に限定されない。代わりに、上記の特徴または下記の特徴あるいはその両方および要素の任意の組み合わせが、異なる実施形態に関連しているかどうかに関わらず、企図された実施形態を実施および実践するよう企図される。さらに、本明細書で開示された実施形態は、他の可能な解決策を上回る利点または従来技術を上回る利点を実現することができるが、特定の実施形態によって特定の利点が実現されるかどうかは、本開示の範囲の制限ではない。したがって、上記または下記あるいはその両方の態様、特徴、実施形態、および利点は、単に例示であり、特許請求の範囲において明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とは見なされない。同様に、「本発明」への参照は、特許請求の範囲において明示的に示されている場合を除き、本明細書で開示されたいずれかの発明の対象の一般化と解釈されてはならず、添付の特許請求の範囲の要素または制限と見なされてはならない。
【0144】
本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様およびハードウェアの態様を組み合わせる実施形態の形態を取ってよく、これらはすべて、本明細書では、一般に「回路」、「モジュール」、または「システム」と呼ばれてよい。
【0145】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0146】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波もしくはその他の自由に伝搬する電磁波、導波管もしくはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0147】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0148】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上もしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0149】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0150】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0151】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【0152】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0153】
本発明の実施形態は、クラウド・コンピューティング・インフラストラクチャを介してエンド・ユーザに提供されてよい。クラウド・コンピューティングとは、通常、ネットワークを経由したサービスとしての、拡張可能な計算リソースの提供のことを指す。さらに正式には、クラウド・コンピューティングは、計算リソースとその基盤になる技術アーキテクチャ(例えば、サーバ、ストレージ、ネットワーク)の間の抽象化を提供する計算能力として定義されてよく、構成可能な計算リソースの共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にし、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらの計算リソースを迅速にプロビジョニングおよび解放することができる。したがって、クラウド・コンピューティングは、ユーザが、計算リソースの提供に使用される基盤になる物理的システム(またはそのようなシステムの位置)を意識せずに、「クラウド」内の仮想計算リソース(例えば、ストレージ、データ、アプリケーション、および完全に仮想化されたコンピューティング・システム)にアクセスできるようにする。
【0154】
通常、クラウドの計算リソースは、利用回数制料金でユーザに提供され、実際に使用された計算リソース(例えば、ユーザによって消費されたストレージ空間の量、またはユーザによってインスタンス化された仮想化システムの数)についてのみ、ユーザに料金が請求される。ユーザは、インターネットを経由して、クラウドに存在するリソースのいずれかに、いつでも、どこからでもアクセスすることができる。本発明との関連では、ユーザは、クラウド内で利可能なアプリケーション(例えば、クエリ処理オーケストレータ115)または関連するデータにアクセスしてよい。例えば、クエリ処理オーケストレータ115は、クラウド内のコンピューティング・システム上で実行され、クエリおよびバックエンドのリソースを評価することができる。そのような場合、クエリ処理オーケストレータ115は、クエリをルーティングし、バックエンドのリソースまたは能力の構成あるいはその両方をクラウド内のストレージ位置に格納することができる。そのようにすることで、ユーザは、クラウドに接続されたネットワーク(例えば、インターネット)に接続されている任意のコンピューティング・システムから、この情報にアクセスすることができる。
【0155】
前述の内容は本発明の実施形態を対象にしているが、本発明のその他のさらなる実施形態が、本発明の基本的な範囲から逸脱することなく考案されてよく、本発明の範囲は添付の特許請求の範囲によって決定される。