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

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

▶ パロ アルト ネットワークス,インコーポレイテッドの特許一覧

特表2024-504322クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合
<>
  • 特表-クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合 図1
  • 特表-クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合 図2
  • 特表-クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合 図3
  • 特表-クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合 図4
  • 特表-クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合 図5
  • 特表-クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-31
(54)【発明の名称】クラウドリソースにわたるJavaScriptオブジェクト記法(JASON)クエリの結合
(51)【国際特許分類】
   G06F 16/245 20190101AFI20240124BHJP
【FI】
G06F16/245
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023543445
(86)(22)【出願日】2022-01-20
(85)【翻訳文提出日】2023-07-19
(86)【国際出願番号】 US2022070273
(87)【国際公開番号】W WO2022159964
(87)【国際公開日】2022-07-28
(31)【優先権主張番号】17/153,724
(32)【優先日】2021-01-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】517392861
【氏名又は名称】パロ アルト ネットワークス,インコーポレイテッド
【氏名又は名称原語表記】Palo Alto Networks,Inc.
【住所又は居所原語表記】3000 Tannery Way,Santa Clara,California 95054,United States of America
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】モウリースワラン,チャンドラ ビクシェスワラン
(72)【発明者】
【氏名】レパカ,ラーマ テジャ
(72)【発明者】
【氏名】ワーン,シャオヤーン
(72)【発明者】
【氏名】シュクラ,パルル
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA03
5B175HA04
(57)【要約】
クラウドリソースにわたる結合動作のためのクラウドリソース結合クエリが、クラウドリソース結合クエリ内の各クラウドリソースに対する結合ルールおよびクエリを抽出するために、解析される。個々のクラウドクエリからの結果は、結合ルールにおいて示されるクラウドリソースのペアに基づいて、動的にインデックス付けされる。検索エンジンは、クエリに対応するペアワイズ結合結果を生成するために、動的インデックスを使用して、結合ルール内の一次述語を適用する。クラウドリソース結合クエリの結果は、マージ後のペアワイズ結合結果を含む。
【特許請求の範囲】
【請求項1】
クラウドリソース結合クエリを解析するステップであり、
第1複数の結合ルールおよび第1複数のクラウドリソースクエリを抽出し、
前記第1複数の結合ルールは、第1複数のクラウドリソースにおけるクラウドリソースのペアについて第1複数の一次述語を含む、
ステップと、
前記第1複数のクラウドリソースクエリに関連付けられた前記第1複数のクラウドリソースに対する第1複数のフィンガープリントについて、クラウドフィンガープリントのデータベースをクエリするステップと、
前記第1複数の結合ルール内の前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合するステップであり、
第1複数のペアワイズ結合結果を生成する、
ステップと、
前記第1複数のペアワイズ結合結果をマージするステップと、
を含む、方法。
【請求項2】
前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合する前記ステップは、
前記第1複数の一次述語に対応するクラウドリソースの各ペアについて第1複数の動的インデックスを生成するステップと、
前記複数の動的インデックスを使用して、前記第1複数の一次述語のうち少なくとも1つを満足する結果について、前記第1複数の一次述語に対応するクラウドリソースの各ペアを検索するステップと、
を含む、請求項1に記載の方法。
【請求項3】
前記第1複数のフィンガープリントは、
前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性を含む、
請求項1に記載の方法。
【請求項4】
前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性は、
前記1つ以上のオブジェクトをクエリする頻度を含む、
請求項3に記載の方法。
【請求項5】
前記方法は、さらに、
前記第1複数のクラウドリソースに対する最近のクエリに基づいて、前記第1複数のフィンガープリントを更新するステップ、
を含む、請求項3に記載の方法。
【請求項6】
前記方法は、さらに、
マージされた前記第1複数のペアワイズ結合結果において示されるオブジェクトについて、前記第1複数のクラウドリソースをクエリするステップ、
を含む、請求項1に記載の方法。
【請求項7】
前記方法は、さらに、
マージされた前記第1複数のペアワイズ結合結果、および、前記第1複数のクラウドリソースへのクエリ結果のうち少なくとも1つを、ユーザインターフェイスに通信可能に結合されたコンピューティングデバイスに通信するステップ、
を含む、請求項6に記載の方法。
【請求項8】
クラウドリソース結合クエリを解析する前記ステップは、
前記クラウドリソース結合クエリのクロス積サイズが閾値クロス積サイズを上回るという決定に、少なくとも部分的に、基づいている、
請求項1に記載の方法。
【請求項9】
1つ以上の非一時的コンピュータ可読記憶媒体であって、
プログラムコードを保管しており、
前記プログラムコードが実行されると、請求項1乃至8いずれか一項に記載の方法を、コンピュータに実施させる、
非一時的コンピュータ可読記憶媒体。
【請求項10】
プロセッサと、プログラムコードを保管しているコンピュータ可読記憶媒体と、を含む、装置であって、
前記プロセッサによって、前記プログラムコードが実行されると、請求項1乃至8いずれか一項に記載の方法を、前記装置に実施させる、
装置。
【発明の詳細な説明】
【技術分野】
【0001】
この開示は、一般的に、データ処理、並びに、データベースおよびファイルアクセスに関する。
【背景技術】
【0002】
内部結合(“inner joins”)(以降では、「結合(“joins”)」)は、特定の列(column)またはオブジェクトに対する共通値に基づいて、リレーショナルデータベース内のインデックスにわたり結果をマージするために使用される関係代数(relation algebra)における演算である。結果は、データベースに対する結合クエリ(join query)によって指定されるようなリレーショナルデータベース内の各列値またはオブジェクトの特定のエントリに対して同一の値を有していることに基づいて、結合される。結合は、「and」論理演算子を使用して、ペアワイズ(pairwise)結合演算それぞれからの結合結果をマージすることによって、2つより多いインデックスにわたり組み合わせることができる。
【図面の簡単な説明】
【0003】
本開示の実施形態は、添付図面を参照することによって、より良好に理解され得る。
図1図1は、クラウドリソースにわたり、JSONクエリルールを結合するための一つの例示的なシステムに係る概略図である。
図2図2は、クラウドリソース最適化結合フィルタを用いてクラウドリソースクエリを解析するための一つの例示的なシステムの概略図である。
図3図3は、クラウドリソース結合クエリについて、レガシー結合(legacy join)および最適化結合(optimized join)に対する計算時間対クロス積サイズ(cross product size)のグラフである。
図4図4は、クラウドリソース結合クエリを評価するための一つの例示的な動作のフローチャートである。
図5図5は、ペアワイズ結合セットを生成するために、一次述語(first-order predicates)に従って、クラウドリソースJSONクエリの結果を評価するための一つの例示的な動作のフローチャートである。
図6図6は、クラウドリソース結合クエリパーサを用いた一つの例示的なコンピュータシステムを示している。
【発明を実施するための形態】
【0004】
以下に続く説明は、本開示の実施形態を具現化する例示的なシステム、方法、技法、およびプログラムフローを含んでいる。しかしながら、本開示は、これらの具体的な詳細なしに実施され得ることが理解される。例えば、本開示は、例示的な例において、クラウドリソースにわたるJavaScript(登録商標)オブジェクト記法(Object Notation)(JSON)クエリの結果を結合することに言及する。本開示の態様は、代わりに、クラウドリソースにわたる他のファイルフォーマットについてのクエリの結果を結合することに適用され得る。他の例では、説明を不明瞭にしないために、周知の命令インスタンス、プロトコル、構造、および技法は詳細に示されていない。
【0005】
概要
【0006】
ここにおいて開示されるクラウドリソースに対する最適化結合は、各クラウドリソースからのクエリ結果の動的インデックス付け、および、クエリ結果のための動的インデックスに対するペアワイズ結合の評価とマージによって、クラウドリソース結合クエリを評価する。結合クエリパーサは、クラウドリソース結合クエリを解析して、JavaScriptオブジェクト記法(「JSON」)ルールから個々のクラウドリソース上のJSONファイルへのクラウドリソースのペアにおける一次述語に対応する結合ルールを分離する。情報検索(information retrieval)システムは、クラウドリソースに対応するフィンガープリントのデータベースへのクエリを生成ためにJSONルールを解析し、そして、対応するクラウドリソースフィンガープリント結果を検索する。最適化結合フィルタは、クラウドリソースの各ペアについて各一次述語に対応するインデックスを生成する動的インデクサ(indexer)を備え、そして、検索エンジンは、各一次述語に対するペアワイズクラウドリソース結合結果を見つけるためにインデックスを使用する。最適化結合フィルタは、クラウドリソース結合クエリ結果を生成するために、各一次述語を同時に満足する各クラウドリソースからのフィンガープリントを含む結果を識別することによって、ペアワイズクラウドリソース結合結果をマージする。
【0007】
例示的な説明
【0008】
図1は、クラウドリソースにわたり、JSONクエリルールを結合するための一つの例示的なシステムに係る概略図である。コンピューティングデバイス101は、クラウドリソース結合クエリ100を結合クエリパーサ103に通信する。結合クエリパーサ103は、クラウドリソース結合クエリ100を解析し、そして、結合ルール140、および、個々のクラウドリソースをクエリするJSONクエリルール142へと、それを分割する。クラウドリソース情報検索システム105は、JSONクエリルール142を受信し、そして、クラウドリソース情報検索システム105がクラウドフィンガープリントデータベース107に通信する1つ以上のクラウドリソースへのクラウドデータベースクエリ106を生成する。クラウドフィンガープリントデータベース107は、クラウドリソースXクエリ結果110およびクラウドリソースYクエリ結果108を含むクラウドリソースクエリ結果を返す。クラウドリソース情報検索システム105は、クラウドリソースXクエリ結果110およびクラウドリソースYクエリ結果108を結合フィルタ109に通信する。結合フィルタ109は、追加的に、結合ルール140を受信し、そして、結合フィルタ109がコンピューティングデバイス101に通信するために、結合クエリ結果112を生成する結合ルール140をクラウドリソースXクエリ結果110およびクラウドリソースYクエリ結果108に適用する。
【0009】
一つの例示的なクラウドリソース結合クエリ120は、以下のシンタックスを含んでいる。
【数1】
例示的なクラウドリソース結合クエリ120は、クラウドリソース上のJSONファイル内のオブジェクトに対して定義されたJSONルール、および、JSONルールが適用された後のフィルタリングされたクラウドリソース上の結合の組み合わせである。1行目は、変数Xを、api.name 'CloudA'を伴うクラウドリソースとして定義し、そして、2行目は、変数Yを、api.name 'CloudB'を伴うクラウドリソースとして定義している。3行目は、X内のパスがアイテムAを含み、x=Y内のパス(x=the path in Y)に適用されるカスタム関数_Fn(x)が40未満であり、かつ、X.joinValueの値がY.joinValueに等しいように結合される、最初の2行に従ってフィルタリングされたクラウドリソースCloudAおよびCloudB内の全てのJSONオブジェクトペアの結合ルール(「filter...」シンタックスを使用する)を指定する。2つのクラウドリソースについて示されているが、例示的なクラウドリソース結合クエリ120は、任意の数のクラウドリソースにわたるフィルタ(すなわち、結合ルール)を含み得る。各クラウドリソースに対するJSONルールからの結果は、以下で様々に説明されるように、結合および結果として生じる結合セットのマージの組み合わせを使用して、結合ルールに従って組み合わされ得る。
【0010】
結合クエリパーサ103は、クラウドリソース結合クエリ100を、結合ルール140およびJSONクエリルール142を含むフォーマットされた結合クエリ102へと解析する。結合クエリパーサ103は、クラウドリソース結合クエリ100の「filter...」セグメント内のJSONルールを抽出することができ、そして、クラウドリソース結合クエリ100に係るそれぞれのJSONルールセグメントの中へ、それらを挿入することができる。例えば、JSONルールの抽出後の一つの例示的な結合ルール122は、以下を含む。
【数2】
例示的なJSONクエリルール124および126は、以下を含む。
【数3】
このインスタンスにおいて、結合クエリパーサ103は、例示的なクラウドリソース結合クエリ120のフィルタセグメント内の「$...」シンタックスを検出することによって、例示的なJSONクエリルール124および126を生成する。続いて、結合クエリパーサ103は、例示的なクラウドリソース結合クエリ120における対応するJSONルール内のXクラウドリソースおよびYクラウドリソースに対応しているセグメントを識別し、それぞれのクラウドリソースセグメントを「config...」セグメントに追加し、そして、実装されるクエリフォーマットに依存し得る、既定のシンタックスルールを使用してシンタックスを変換する。例示的なクラウドリソース結合クエリ120の「filter...」セグメント内のJSONルールセグメントは、結果として得られる例示的な結合ルール140内におけるそれぞれのクラウドリソース識別子(XおよびY)によって置き換えられる。
【0011】
クラウドリソース情報検索システム105は、JSONクエリルール142を受信し、そして、それらを、クラウドデータベースクエリ106を生成するために使用する。クラウドリソース情報検索システム105は、JSONクエリルール142内の論理ルール(logical rule)に基づいてクラウドリソースに対するクエリを生成する、JSONクエリパーサを備えることができる。JSONクエリパーサ103は、コンテキストフリー文法(context-free grammar)によって定義される一次論理ルールを取り扱うことができる、コンパイラ-コンパイラ(complier-complier)によって生成されるパーサであり得る。クラウドリソース情報検索システム105は、生成された論理ルールを使用して、論理ルールに関連する1つ以上のクラウドリソースのセットを識別することができる。例えば、クラウドリソース情報検索システム105は、クラウドリソースを識別する、論理ルール内に存在するキー/値ペア、フィンガープリント、及び/又は、他のメタデータを検出するために、各クラウドリソースについて保持されたプロファイル及び/又はフィンガープリントを使用することができる。所与の例において、クラウドリソース情報検索システム105は、例示的なJSONクエリルール142において示されるAPI名に基づいて、クラウドリソース「cloudA」および「cloudB」を識別することができる。その後、クラウドリソース情報検索システム105は、クラウドフィンガープリントデータベース107内の識別されたクラウドリソースのためのクエリフォーマットを使用して識別されたクラウドリソースに対してクエリを生成するために、生成された論理ルールを使用する。クラウドリソース情報検索システム105は、その後、生成されたクエリを含むクラウドデータベースクエリ106をクラウドフィンガープリントデータベース107に通信し、クラウドリソースXクエリ結果110およびクラウドリソースYクエリ結果108をクラウドリソース情報検索システム105に返す。
【0012】
クラウドフィンガープリントデータベース107は、既知のクラウドリソースに保管されたJSONファイル内のオブジェクトのフィンガープリントを含み得る。フィンガープリントは、各クラウドリソースそれぞれについて頻繁にクエリされる、オブジェクトに対する識別子を含み得る。クラウドフィンガープリントデータベース107は、クエリを受信する際に各クラウドリソースのプロファイルを維持することができる。プロファイルは、クエリされたオブジェクトの頻度、及び/又は、各オブジェクトについての他の特性、統計、識別子、などを示すことができる。時間の期間にわたり(例えば、スケジュールに基づいてチェックされた後で)クエリ頻度が低いJSONオブジェクトは、クラウドフィンガープリントデータベース107から除去され得る。いくつかの実施形態においては、クラウドフィンガープリントデータベース107がクラウドデータベースクエリ106を受信すると、クエリ結果のうちのいくつかはヌル値(null value)を返すことができる。しかしながら、クラウドリソースクエリ結果108および110は、ヌル値を返した、クエリ内のキー/値ペアを含んでいるオブジェクトを含み得る。クラウドリソースをフィンガープリントとして保管することは、クラウドクエリのための参加機能を維持する一方で、ストレージコストを低減する。
【0013】
結合フィルタ109は、結合ルール140、クラウドリソースXクエリ結果110、および、クラウドリソースYクエリ結果108を受信する。結合フィルタ109は、コンピューティングデバイス101に通信する、結合クエリ結果を生成するために、動的インデクサ、検索エンジン、および、結合結果マージャ(merger)を使用する。結合ルールを使用してクラウドリソースクエリ結果を結合するための動作は、図2においてより詳細に説明されている。コンピューティングデバイス101は、ユーザがクラウドリソース結合クエリを生成し、かつ、クラウドリソースクエリを結合するためのアルゴリズムのパラメータを調整することを可能にする、ユーザインターフェイスを備えることができる。
【0014】
図2は、クラウドリソース最適化結合フィルタを用いてクラウドリソースクエリを解析するための一つの例示的なシステムの概略図である。クラウドリソースフィンガープリント生成器(generator)201は、更新されたフィンガープリント202を生成するために使用する、クラウドリソースクエリ結果200を受信する。クラウドリソースフィンガープリント生成器201は、生成されたフィンガープリント202を、その後の保管のためにクラウドフィンガープリントデータベース203に通信する。別個であるが並列のパイプラインにおいて、コンピューティングデバイス231は、クラウドリソース結合クエリ240をクラウドリソース情報検索システム205に通信する。クラウドリソース情報検索システム205は、クラウドリソース結合クエリ240からクラウドリソースクエリ206を抽出し、そして、クラウドフィンガープリントデータベース203は、クラウドリソースクエリ206を受信する。クラウドフィンガープリントデータベース203は、クラウドリソースフィンガープリント結果204を返す。クラウドリソース情報検索システム205は、クラウドリソース結合クエリ240から抽出されたクラウドリソースフィンガープリント結果204およびクラウドリソース結合ルール208を、動的インデクサ207を含むクラウドリソース最適化結合フィルタ241に通信する。動的インデクサ207は、検索エンジン209によって受信される、インデックス付けされたクラウドリソースフィンガープリント210を生成する。検索エンジン209は、インデックス付けされたクラウドリソースフィンガープリント210からペアワイズクラウドリソース結合セット212を生成する。ペアワイズ結合マージャ211は、ペアワイズクラウドリソース結合セット212を受信し、そして、コンピューティングデバイス231によって受信される、Nワイズ(N-wise)クラウドリソース結合結果214を生成する。
【0015】
クラウドリソースフィンガープリント生成器201は、クラウドリソースクエリ結果200に対応するクラウドリソース及びJSONオブジェクトを識別するために、クラウドリソースクエリ結果200を解析することができる。クラウドリソースフィンガープリント生成器201は、クラウドリソースクエリ結果200に対応する既存のクラウドフィンガープリントについてクラウドフィンガープリントデータベース203にクエリを行うことができ、そして、それに応じて、これらのフィンガープリントを更新することができる。例えば、例示的な更新されたフィンガープリント220は、以下のフィールドを含む。
【数4】
クラウドリソースフィンガープリント生成器201は、クラウドリソースクエリにおけるX.pathAおよびX.pathBについて以前の頻度値を受信し、そして、クラウドリソースクエリ結果200内のX.pathAおよびX.pathBへのクエリに従って、それらを更新することができる。いくつかの実施形態において、クラウドフィンガープリントは、フィンガープリントにおけるJSONオブジェクトについての既知の重要性、フィンガープリントについての識別子、等といった他の統計及び/又は特性を含む。クラウドフィンガープリントデータベース203は、保管されたフィンガープリントに対応するJSONオブジェクトについてのパスロケーション(path location)およびクラウド識別子によってインデックス付けされ得る。
【0016】
クラウドリソース結合クエリ240は、JSONルーおよび結合ルールの組み合わせを含み、ここで、JSONルールは、クラウドリソース上のJSONオブジェクトをクエリするためのルールを含み、そして、結合ルールは、クラウドリソースにわたりJSONオブジェクト結果を組み合わせるためのルールを含んでいる。クラウドリソース情報検索システム205は、クラウドリソース結合クエリ240からJSONルールおよび結合ルールを抽出することができ、かつ、コンテキストフリー文法を使用してコンパイラ-コンパイラによって生成されたJSONルールおよびJSONクエリパーサを使用して、クラウドリソースクエリ206をさらに抽出することができる、クラウドリソース結合クエリパーサを備えることができる。クラウドリソースクエリ206は、クラウドリソースのリスト、および、フィンガープリントを取り出す(retrieve)ための各クラウドリソース内の対応するパスを含み得る。クラウドリソース情報検索システム205は、クラウドフィンガープリントデータベース203によって返されたクラウドリソースフィンガープリント結果204、および、クラウドリソース結合クエリ240から生成されたクラウドリソース結合ルール208を、動的インデクサ207に通信する。
【0017】
クラウドリソース結合ルール208は、クラウドリソースのペアについて検索されたフィンガープリント間の結合ルールを定義する、一次述語を含む。クラウドリソース結合ルール208によって表される完全(full)結合ルールは、一次述語によって表されるペアワイズ結合ルールそれぞれの共通部分を含んでいる。動的インデクサ207は、各一次述語についてインデックスを生成し、検索エンジン209は、クラウドリソースフィンガープリント結果204内の対応するフィンガープリントについて一次述語それぞれを評価し、そして、ペアワイズ結合マージャ211は、ペアワイズクラウドリソース結合セット212内で共通部分(intersection)および重複排除(de-duplication)を実行する。クラウドリソース結合ルール208における例示的な一次述語は、以下を含む。
【数5】
一次述語は、X.path1でのJSONオブジェクトがY.path2でのJSONオブジェクトを含むという、クラウドリソースXとクラウドリソースYとの間の結合ルールを指定する。第2一次述語は、Y.path1でのJSONオブジェクトがZ.path2でのJSONオブジェクトに等しくないという、クラウドリソースYとクラウドリソースZとの間の結合ルールを指定し、そして、包括的結合ルールは、一次述語の両方を満足しているクラウドリソースX、Y、およびZにわたるJSONオブジェクトのトリプレット(triplets)を指定する。
【0018】
動的インデクサ207は、クラウドリソースフィンガープリント結果204内のクラウドリソースのペア間の一次述語それぞれについてインデックスを生成する。動的インデクサ207は、ファイルフォーマットの効率的なルックアップにつながる、任意のインデックス付けスキーマ(indexing schema)を使用することができる。例えば、動的インデクサ207は、各インデックスを生成するために、転置インデックス(inverted index)を表すか、または、B+ツリー(B+trees)を使用することができる。インデックスのタイプは、クラウドリソースフィンガープリント結果204の統計、例えば、各クラウドリソースに対する明確な(distinct)フィンガープリントの数、フィンガープリントに対応するJSONオブジェクトクエリについて周波数の類似性または他の統計、などに依存し得る。B+ツリーは、クラウドリソースフィンガープリント結果204において、より別個のフィンガープリントを有しているクラウドリソースに対して実装され得る一方で、バランスツリー(balanced trees)が、より明確でないフィンガープリントを有しているクラウドリソースに対して使用され得る。インデックスは、対応するクラウドリソースの一次述語に基づいて、生成され得る。例えば、一次述語が、それぞれに、クラウドリソースXおよびYについて、X.path1とY.path2との間の同等性を指定する場合には、オブジェクトパスX.path1およびY.path2に基づいて、インデックスが生成され得る。インデックスは、クラウドリソースクエリ206内のクエリがクラウドフィンガープリントデータベース203によって処理される際に、動的に更新および維持することができ、そして、インデックスは、図2に示される他の動作と並行して維持することができる。
【0019】
検索エンジン209は、動的インデクサ207によって生成されたインデックス付きクラウドリソースフィンガープリント210を受信し、そして、クラウドリソース結合ルール208内の一次述語に対応するペアワイズ結合ルールを適用するために、生成されたインデックスを使用する。例えば、クラウドリソースX内のX.path1がクラウドリソースY内のY.path2に等しいことを、一次述語が指定する場合に、検索エンジン209は、インデックス付けされたクラウドリソースフィンガープリント210内のフィンガープリントを検索することができる。ここで、クラウドリソースX内のX.path1に沿ったフィンガープリントは、クラウドリソースY内のY.path2に沿ったフィンガープリントに一致する(インデックスは、まさにそうしたルックアップ動作のために構築され得る)。検索エンジン209は、一次述語として表現されるペアワイズ結合ルールを満足する、JSONオブジェクトのペアを含むペアワイズクラウドリソース結合セット212を、ペアワイズ結合マージャ211に通信する。
【0020】
ペアワイズ結合マージャ211は、Nワイズクラウドリソース結合結果214を生成するために、ペアワイズクラウドリソース結合セット212をマージする。ペアワイズ結合マージャ211は、タプル内のフィンガープリントのペアが、対応する一次述語それぞれを満足するように(すなわち、フィンガープリントのペアが、ペアワイズクラウドリソース結合セット212それぞれについてタプル内に存在するように)、クラウドリソース結合ルール208において表される各データベース内のフィンガープリントのタプルを検索する。ペアワイズ結合マージャ211は、ペアワイズクラウドリソース結合セット212のうち1つにおいてフィンガープリントのペアを固定することができ、フィンガープリントの別のペアについてペアワイズクラウドリソース結合セット212内の第2リソース結合セットをスキャンして、結果として生じる3つのフィンガープリントがそれぞれのクラウドリソースについて全ての結合ルールを同時に満足するようにできる。マージの後で、クラウドリソース最適化結合フィルタ241は、Nワイズクラウドリソース結合結果214内のフィンガープリントに対応するクラウドリソースにおいて保管されたオブジェクトについてクラウドリソースにクエリすることができる。ペアワイズ結合マージャ211は、結果として生じるNワイズクラウドリソース結合結果214(ここで、Nは、結果として生じる結合セットに存在するクラウドリソースの数である)を、クラウドリソース結合クエリ240に対するリターン(return)としてコンピューティングデバイス213に通信する。ペアワイズ結合マージャ211は、追加的または代替的に、Nワイズクラウドリソース結合結果214に示されるオブジェクトについてのクラウドリソースに対するクエリに対応するクエリ結果を、コンピューティングデバイス213に通信することができる。
【0021】
図3は、クラウドリソース結合クエリについて、レガシー結合(legacy join)および最適化結合(optimized join)に対する計算時間対クロス積サイズ(cross product size)のグラフである。クロス積サイズは、クラウドリソース結合クエリ内の各クラウドリソースにわたるJSONファイル内の項目/値ペアの数の積を表す。例えば、それぞれのサイズ20、100、および50を伴うクラウドリソースX、Y、およびZにわたるクラウドリソース結合クエリのクロス積サイズは、20×100×50=100000である。クロス積は、レガシー結合を使用する検索空間を表す。グラフ300に見られるように、最初にJSONルールをクラウドリソースに適用した後で動的インデックス付けを使用する、ここにおいて提示される最適化結合は、クロス積サイズ25000を超えた後にレガシー結合よりも性能が優れている。逆に、最初にJSONルールを適用することなくクロス積空間全体にわたり総当たり(brute force)検索を実行するレガシー結合は、動的インデックス付けによりオーバーヘッドがより少なく、そして、従って、より低いクロス積サイズにおいて動的インデックス付けベースの結合よりも性能が優れているが、クロス積サイズが増加するにつれて影響を受ける。閾値クロス積サイズの25000は任意であり、かつ、レガシー結合および最適化結合の実装、クラウドリソース結合クエリにおけるファイルフォーマットのタイプ、等に依存し、そして、各結合の経験的な性能に基づいて決定されるべきである。
【0022】
例示的な動作は、先の図との一貫性のために、結合クエリパーサ、情報検索システム、および、最適化結合フィルタを参照して説明されている。プログラムコードのために選択された名称は、特許請求の範囲について限定するものではない。プログラムの構造および編成は、プラットフォーム、プログラマ/設計者のプリファレンス、プログラミング言語、等により異なってよい。加えて、符号単位(code unit)(プログラム、モジュール、メソッド、関数、等)の名前は、同じ理由で異なってよく、そして、任意であってよい。
【0023】
図4は、クラウドリソース結合クエリを評価するための一つの例示的な動作のフローチャートである。ブロック401において、結合クエリパーサは、クラウドリソース結合クエリにおける結合ルールからJSONルールを分離する。結合ルールは、クラウドリソースのペアにおけるオブジェクトに対する一次述語を含んでいる。JSONルールは、JSONファイルを含むクラウドリソースをクエリするためのルールを含む。JSONルールとして説明されているが、これらは、クラウドリソース上に存在する任意のファイルフォーマットに対するルールであり得る。
【0024】
ブロック402において、最適化結合フィルタは、結合ルールについてのクロス積サイズが最適化閾値クロス積サイズを上回るか否かを決定する。クロス積サイズは、クラウドリソースにわたり乗算された、各クラウドリソース上のファイルにおける項目値ペアの数の積である。これは、総当たり結合アルゴリズムの検索空間の大きさ(magnitude)のオーダーに対応している。最適化閾値は、ブロック403、405、407、409、411、413、および415に示された最適化結合フィルタリングアルゴリズムがレガシー(すなわち、総当たり)結合フィルタリングアルゴリズムよりも性能が優れているクロス積サイズであるように選択される。この最適化閾値は、経験的に決定することができ、そして、各アルゴリズムの実装およびクエリされているクラウドリソースに依存することができる。例えば、最適化閾値は、様々なクロス積サイズを有する同じクラウドリソース結合クエリに対して、および、様々なクラウドリソースにわたり、最適化結合およびレガシー結合を実行することによって決定され得る。最適化閾値は、従って、そのクロス積サイズに対するクラウドリソース結合クエリにわたる平均の計算時間において、最適化結合がレガシー結合よりも性能が優れているクロス積サイズである。クロス積サイズが最適化閾値を上回る場合、動作は、ブロック403に進む。そうでなければ、動作は、ブロック417へスキップする。
【0025】
ブロック403において、情報検索システムは、クラウドリソース結合クエリにおける分離されたJSONルールを通して、反復を開始する。各反復での動作は、ブロック405および407に示されている。
【0026】
ブロック405において、情報検索システムは、クラウドリソースフィンガープリントクエリを生成するために、一次論理を有するコンテキストフリーの第1文法を伴うJSONクエリパーサを用いて現在のJSONルールを評価する。JSONクエリパーサは、コンテキストフリー文法を入力として使用するコンパイラ-コンパイラによって生成され得る。情報検索システムは、JSONクエリパーサから結果として生じるJSONクエリを、クラウドフィンガープリントデータベースに特有のフォーマットへと変換することができる(例えば、クラウドフィンガープリントデータベースのインデックス付けスキーマに基づいて)。
【0027】
ブロック407において、情報検索システムは、現在のJSONクエリに対応するクラウドリソースフィンガープリント結果を検索するために、クラウドフィンガープリントデータベースをクエリする。クエリは、JSONクエリ内のオブジェクトに対応するパスといった、JSONクエリ内で示されるオブジェクトの特性を示す。クエリは、クラウドフィンガープリントデータベースで使用されるインデックス付けのタイプに基づいて、フォーマットされ得る。クラウドフィンガープリントデータベースは、クエリに基づいてクラウドリソースフィンガープリント結果を効率的に取り出すことができるように(例えば、クラウドフィンガープリントについてのJSONファイルパスを使用することにより)インデックス付けされ得る。
【0028】
ブロック409において、情報検索システムは、クラウドリソースクエリ内に追加のJSONルールがあるか否かを判定する。追加のJSONルールが存在する場合に、動作は、ブロック403に戻る。そうでなければ、動作は、ブロック411に進む。
【0029】
ブロック411において、最適化結合フィルタは、クラウドリソースのペアについての一次述語を生成するために、クラウドリソース結合クエリからの結合ルールを解析する。例示のために、結合ルールは以下の形式であり得る。
【数6】
そして、得られた一次述語は、以下の形式であり得る。
【数7】
両方のインスタンスにおいて、結合動作は、等しいクラウドリソースX内のパス1およびクラウドリソースY内のパス2を有する、フィンガープリントを結合することに対応する(「FOPCEquals」によって示されるように、すなわち、一次述語がシンタックスに等しい)。
【0030】
ブロック413において、最適化結合フィルタは、ペアワイズ結合セットを生成するために、一次述語に従って、クラウドリソースJSONクエリの結果を評価する。ブロック413における動作は、図5においてより詳細に説明されている。
【0031】
ブロック415において、最適化結合フィルタは、ペアワイズ結合セットをマージする。最適化結合フィルタは、ペアワイズ結合セット内のクラウドリソースのペアに対応しているタプル内のフィンガープリントの各ペアがそのペアセット内に存在するように、クラウドリソースフィンガープリント結果におけるフィンガープリントのタプルを決定する。結合セットをマージするための標準の検索技法(例えば、構造言語クエリ(SQL)内部結合演算をマージする)を実装することができる。
【0032】
結合ルールのクロス積サイズが最適化閾値クロス積サイズを上回らないと判定された場合には、ブロック417において、最適化結合フィルタは、レガシー結合をクラウドリソース結合クエリに対して適用する。レガシー結合は、そこでの結合ルールに対する、クラウドリソース結合クエリ内に存在するクラウドリソースのクロス積の総当たり検索(brute force search)であり得る。以前ネイティブに実装された結合演算も、また、使用することができる。
【0033】
図5は、ペアワイズ結合セットを生成するために、一次述語(first-order predicates)に従って、クラウドリソースJSONクエリの結果を評価するための一つの例示的な動作のフローチャートである。ブロック503において、最適化結合フィルタは、クラウドリソースに適用されるべき一次述語を通して、反復を開始する。各反復における動作は、ブロック505および507で生じる。
【0034】
ブロック505において、最適化結合フィルタは、現在の一次述語に対応しているクラウドリソースのペアについての動的インデックスを生成する。動的インデックスは、現在の一次述語に基づいて(例えば、現在の一次述語において示されるファイルパスによって)生成され得る。例示すると、動的インデックスは、キー/値ペアと、クラウドリソース内の対応する文書識別子との間のマッピングを含む、逆インデックスであり得る。パスX.vpcIdおよびY.resourceIdをそれぞれ有する2つのクラウドリソースXおよびYについて、X.vpcIdは、集合{a,b}内の値をとる。Xに対する動的インデックスは、以下のように、aおよびbを文書識別子のセットにマッピングすることができる。
【数8】
Yにおけるキー/値ペアは、Yにおいて値「a」を有する任意のキー/値ペアがリスト{1,20,111,...}内の文書識別子を有し、かつ、Yにおいて値「b」を有する任意のキー/値ペアがリスト{15,18,19}内の文書識別子を有するように、同様なやり方でマッピングされる。結合セットが計算され、そして、クラウドリソースのフィンガープリントが更新される際に、動的インデックスは、維持され、かつ、更新され得る。
【0035】
ブロック507において、最適化結合フィルタは、動的インデックスを使用して、対応するクラウドリソースについてクラウドリソースフィンガープリント結果を検索し、ペアワイズクラウドリソース結合結果を生成する。最適化結合フィルタは、現在の一次述語を解析して、対応するクラウドリソースについてのJSONクエリのそれぞれの結果におけるフィンガープリントを識別し、現在の一次述語についてのペアワイズ結合結果に追加するために、一次述語を満足するフィンガープリントのペアを決定することができる。前述の例において、結合フィルタ「$X.vpcId equals $Y.resourceId」の計算は、リスト{1,20,111,...}内の文書識別子についてYを検索すること、および、Y内の対応するJSONファイルパスが「Y.resourceID=“a”」であるようなものか否かを判定すること、を含む。結合フィルタを計算することは、加えて、リスト{15,18,19}内の文書識別子についてYを検索すること、および、Y内の対応するJSONファイルパスが「Y.resourceId='b'」であるようなものか否かを判定すること、を含む。結合フィルタからの結果は、集合{a,b}内の一致するキー/値ペアを有するJSONファイルパスについてのXおよびY内のそれぞれのファイルパスである。
【0036】
ブロック509において、最適化された結合フィルタは、クラウドリソースクエリ内に追加的なJSONルールが存在するか否かを判定する。追加的なJSONルールが存在する場合に、動作は、ブロック503に戻る。そうでなければ、図5における動作は、完了する。
【0037】
フローチャートは、例示の理解を助けるために提供されており、そして、特許請求の範囲を限定するために使用されるものではない。フローチャートは、特許請求の範囲内で変化し得る例示的な動作を示している。追加的な動作が実行されてよく、より少ない動作が実行されてよく、動作は並行して実行されてよく、そして、動作が異なる順序で実行されてもよい。例えば、ブロック403、405、407、および409に示される動作は、並行して又は同時に実行されてよい。図4に関して、代わりにレガシー結合オペレーションをクラウドリソース結合クエリに適用することは、必要ない。フローチャート図及び/又はブロック図の各ブロック、並びに、フローチャート図及び/又はブロック図におけるブロックの組み合わせは、プログラムコードによって実装され得ることが理解されるだろう。プログラムコードは、汎用コンピュータ、専用コンピュータ、もしくは、他のプログラム可能なマシンまたは装置のプロセッサに提供され得る。
【0038】
理解されるように、本開示の態様は、システム、方法、または、1つ以上のマシン可読媒体に保管されたプログラムコード/命令として具現化され得る。従って、態様は、ハードウェア、ソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード、等を含む)、または、ここにおいて、「回路」、「モジュール」、または「システム」として、全てが一般的に参照され得る、ソフトウェア態様およびハードウェア態様の組合せの形態をとり得る。例示的な図において個々のモジュール/ユニットとして提示される機能は、プラットフォーム(オペレーティングシステム及び/又はハードウェア)、アプリケーションエコシステム、インターフェイス、プログラマプリファレンス、プログラミング言語、管理者プリファレンス、等のうちのいずれか1つに従って、異なるように編成され得る。
【0039】
1つ以上のマシン可読媒体の任意の組合せが利用され得る。マシン可読媒体は、マシン可読信号媒体またはマシン可読記憶媒体であり得る。マシン可読記憶媒体は、例えば、これらに限定されるわけではないが、プログラムコードを保管するために電子、磁気、光学術、電磁、赤外線、または半導体技術のうちのいずれか1つまたはそれらの組み合わせを採用するシステム、装置、またはデバイスであり得る。マシン可読記憶媒体のより具体的な例(非網羅的なリスト)は、以下を含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブル・リードオンリーメモリ(EPROMまたはフラッシュメモリ)、ポータブルコンパクトディスク・リードオンリーメモリ(CD-ROM)、光ストレージデバイス、磁気ストレージデバイス、または、上記の任意の適切な組合せである。本明細書のコンテキストにおいて、マシン可読記憶媒体は、命令実行システム、装置、またはデバイスによって、もしくは、それに関連して使用するためのプログラムを収容または保管することができる任意の有形媒体であり得る。マシン可読記憶媒体は、マシン可読信号媒体ではない。
【0040】
マシン可読信号媒体は、例えば、ベースバンドにおいて、または、搬送波の一部として、マシン可読プログラムコードが具現化された伝搬データ信号を含み得る。そうした伝搬信号は、これらに限定されるわけではないが、電磁気、光学、または、それらの任意の好適な組み合わせを含む、種々の形態のうちのいずれかをとり得る。マシン可読信号媒体は、マシン可読記憶媒体ではなく、かつ、命令実行システム、装置、またはデバイスによって、もしくは、それに関連して使用するためのプログラムを通信、伝搬、または移送することができる、任意のマシン可読媒体であり得る。
【0041】
マシン可読媒体上に具現化されたプログラムコードは、これらに限定されるわけではないが、無線、有線、光ファイバケーブル、RF、等、または、上記の任意の好適な組合せを含む、任意の適切な媒体を使用して送信され得る。
【0042】
プログラムコード/命令は、また、マシン可読媒体に保管された命令が、フローチャート及び/又はブロック図の1つ以上のブロックにおいて指定された機能/動作を実装する命令を含む製品を生成するように、特定の方法で機能するためにマシンに指示することができるマシン可読媒体にも保管され得る。
【0043】
図6は、クラウドリソース結合クエリパーサを用いた一つの例示的なコンピュータシステムを示している。コンピュータシステムは、プロセッサ601(おそらく、複数のプロセッサ、複数のコア、複数のノードを含み、かつ/あるいは、マルチスレッドを実装している、等)を含んでいる。コンピュータシステムは、メモリ607を含む。メモリ607は、システムメモリ、または、マシン可読媒体の上記で既に説明しされた可能な具現化のうち任意の1つ以上であり得る。コンピュータシステムは、また、バス603およびネットワークインターフェイス605を含んでいる。システムは、また、クラウドリソース結合クエリパーサ611を含む。クラウドリソース結合クエリパーサ611は、結合ルールおよびJSONルールを分離するためにクラウドリソース結合クエリを解析し、クラウドフィンガープリントデータベースへのクエリを生成するためにJSONルールを解析し、クラウドフィンガープリントデータベースから対応するクエリ結果を取り出し、そして、クラウドフィンガープリントデータベースからのクエリ結果を結合するために動的インデックス付け/検索を使用することができる。以前に説明した機能のうちのいずれか1つは、ハードウェアにおいて、及び/又は、プロセッサ601上で部分的に(または、全体的に)実装され得る。例えば、機能は、特定用途向け集積回路を用いて、プロセッサ601において実装される論理において、周辺デバイス、またはカード、等におけるコプロセッサにおいて実装され得る。さらに、具現化は、図6に示されていない、より少ない又は追加的なコンポーネント(例えば、ビデオカード、オーディオカード、追加的なネットワークインターフェイス、周辺デバイス、等)を含み得る。プロセッサ601およびネットワークインターフェイス605は、バス603に結合されている。バス603に結合されるものとして示されているが、メモリ607は、プロセッサ601に結合されてよい。
【0044】
本開示の態様は、様々な実装および活用に関して説明されているが、これらの態様は例示的なものであること、および、特許請求の範囲はそれらに限定されないことが理解されるだろう。一般的に、結合ルールおよびJSONルールを分離するためにクラウドリソースクエリを解析して、次いで、その後に、ここにおいて説明されるように結合動作を最適化するために、結合ルールに先立ち、クラウドリソースに対してJSONルールを適用する技術は、任意のハードウェアシステムまたは複数のハードウェアシステムと整合する設備を用いて実装され得る。多くの変形、修正、追加、および改良が可能である。
【0045】
複数のインスタンスが、ここにおいて単一のインスタンスとして説明されているコンポーネント、動作、または構造に対して提供され得る。最終的に、様々なコンポーネント、動作、およびデータストアの間の境界は、ある程度任意であり、そして、特定の動作が、具体的に例示的な構成のコンテキストにおいて示されている。機能性の他の割振りが想定され、そして、本開示の範囲内に入り得る。一般的に、例示的な構成において別個のコンポーネントとして提示される構造および機能性は、組み合わされた構造またはコンポーネントとして実装され得る。同様に、単一のコンポーネントとして提示された構造および機能性は、別個のコンポーネントとして実装され得る。これら及び他の変形、修正、追加、および改善は、本開示の範囲内に含まれ得る。
【0046】
専門用語
【0047】
この明細書では、説明の効率および容易さのために、クラウド技術に関する省略表現を使用している。「クラウドリソース」を参照する場合、この明細書は、クラウドサービスプロバイダのリソースを参照している。例えば、クラウドリソースは、クラウドサービスプロバイダのサーバ、仮想マシン、およびストレージデバイスを包含することができる。より一般的に言えば、顧客にアクセス可能なクラウドサービスプロバイダリソースは、ネットワーク接続を介してアクセス可能な、クラウドサービスプロバイダエンティティによって所有/管理されるリソースである。しばしば、アクセスは、クラウドサービスプロバイダによって提供されるアプリケーションプログラミングインターフェイスまたはソフトウェア開発キットに従う。
【0048】
ここにおいて使用される「フィンガープリント」は、クラウドリソース上に保管された1つ以上のキー/値ペアの表現を参照する。フィンガープリントは、例えば、クラウドリソース上に保管されたJSONファイル内のオブジェクトであり得る。フィンガープリントの範囲は、サイズ/範囲、並びに、表現の選択に関して変動する。フィンガープリントは、クラウドリソース上の個々のキー/値ペアよりも効率的なストレージのためにプロキシとして使用され、そして、より小さい検索空間にわたるより効率的な結合動作を可能にする。
【0049】
接続詞「および」を用いたリストに先行する「のうちの少なくとも1つ」という句(phrase)フレーズの使用は、特に明記されない限り、排他的なリストとして扱われるべきではなく、かつ、各カテゴリからの1つの項目を伴うカテゴリのリストとして解釈されるべきではない。「A、B、およびCのうちの少なくとも1つ」を記載する節(clause)は、リストされた項目のうちの1つのみ、リストされた項目のうちの複数、並びに、リストにおける項目の1つ以上および列挙されていない別の項目における1つ以上によって侵害され得る。
【0050】
例示的な実施形態
【0051】
例示的な実施形態は、以下を含む。
【0052】
実施形態1:方法であって、クラウドリソース結合クエリを解析するステップであり、第1複数の結合ルールおよび第1複数のクラウドリソースクエリを抽出し、前記第1複数の結合ルールは、第1複数のクラウドリソースにおけるクラウドリソースのペアについて第1複数の一次述語を含むステップと、前記第1複数のクラウドリソースクエリに関連付けられた前記第1複数のクラウドリソースに対する第1複数のフィンガープリントについて、クラウドフィンガープリントのデータベースをクエリするステップと、前記第1複数の結合ルール内の前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合するステップであり、第1複数のペアワイズ結合結果を生成するステップと、前記第1複数のペアワイズ結合結果をマージするステップと、を含む方法。
【0053】
実施形態2:前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合する前記ステップは、前記第1複数の一次述語に対応するクラウドリソースの各ペアについて第1複数の動的インデックスを生成するステップと、前記複数の動的インデックスを使用して、前記第1複数の一次述語のうち少なくとも1つを満足する結果について、前記第1複数の一次述語に対応するクラウドリソースの各ペアを検索するステップと、を含む、実施形態1に記載の方法。
【0054】
実施形態3:前記第1複数のフィンガープリントは、前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性を含む、実施形態1に記載の方法。
【0055】
実施形態4:前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性は、前記1つ以上のオブジェクトをクエリする頻度を含む、実施形態3に記載の方法。
【0056】
実施形態5:さらに、前記第1複数のクラウドリソースに対する最近のクエリに基づいて、前記第1複数のフィンガープリントを更新するステップを含む、実施形態3に記載の方法。
【0057】
実施形態6:さらに、マージされた前記第1複数のペアワイズ結合結果において示されるオブジェクトについて、前記第1複数のクラウドリソースをクエリするステップを含む、実施形態1に記載の方法。
【0058】
実施形態7:さらに、マージされた前記第1複数のペアワイズ結合結果、および、前記第1複数のクラウドリソースへのクエリ結果のうち少なくとも1つを、ユーザインターフェイスに通信可能に結合されたコンピューティングデバイスに通信するステップを含む、実施形態6に記載の方法。
【0059】
実施形態8:クラウドリソース結合クエリを解析する前記ステップは、前記クラウドリソース結合クエリのクロス積サイズが閾値クロス積サイズを上回るという決定に、少なくとも部分的に、基づいている、実施形態1に記載の方法。
【0060】
実施形態9:プログラムコードを含む1つ以上の非一時的マシン可読媒体であって、前記プログラムコードは、クラウドリソース結合クエリを解析して、第1複数の結合ルールおよび第1複数のクラウドリソースクエリを抽出し、ここで、前記第1複数の結合ルールは、第1複数のクラウドリソースにおけるクラウドリソースのペアについて第1複数の一次述語を含み、前記第1複数のクラウドリソースクエリに関連付けられた前記第1複数のクラウドリソースに対する第1複数のフィンガープリントについて、クラウドフィンガープリントのデータベースをクエリし、前記第1複数の結合ルール内の前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合して、第1複数のペアワイズ結合結果を生成し、そして、前記第1複数のペアワイズ結合結果をマージする。
【0061】
実施形態10:前記プログラムコードは、前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合して、前記第1複数の一次述語に対応するクラウドリソースの各ペアについて第1複数の動的インデックスを生成し、そして、前記複数の動的インデックスを使用して、前記第1複数の一次述語のうち少なくとも1つを満足する結果について、前記第1複数の一次述語に対応するクラウドリソースの各ペアを検索する、実施形態9に記載の非一時的マシン可読媒体。
【0062】
実施形態11:前記第1複数のフィンガープリントは、前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性を含む、実施形態10に記載の非一時的マシン可読媒体。
【0063】
実施形態12:前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性は、前記1つ以上のオブジェクトをクエリする頻度を含む、実施形態11に記載の非一時的マシン可読媒体。
【0064】
実施形態13:さらに、前記第1複数のクラウドリソースに対する最近のクエリに基づいて、前記第1複数のフィンガープリントを更新するためのプログラムコードを含む、実施形態11に記載の非一時的マシン可読媒体。
【0065】
実施形態14:さらに、マージされた前記第1複数のペアワイズ結合結果において示されるオブジェクトについて、前記第1複数のクラウドリソースをクエリするためのプログラムコードを含む、実施形態9に記載の非一時的マシン可読媒体。
【0066】
実施形態15:さらに、マージされた前記第1複数のペアワイズ結合結果、および、前記第1複数のクラウドリソースへのクエリ結果のうち少なくとも1つを、ユーザインターフェイスに通信可能に結合されたコンピューティングデバイスに通信するためのプログラムコードを含む、実施形態14に記載の非一時的マシン可読媒体。
【0067】
実施形態16:クラウドリソース結合クエリを解析するためのプログラムコードは、前記クラウドリソース結合クエリのクロス積サイズが閾値クロス積サイズを上回るという決定に、少なくとも部分的に、基づいている、実施形態9に記載の非一時的マシン可読媒体。
【0068】
実施形態17:プロセッサ、および、プログラムコードを含むマシン可読媒体を含む装置であって、前記プログラムコードは、前記プロセッサによって実行されると、前記装置に、クラウドリソース結合クエリを解析して、第1複数の結合ルールおよび第1複数のクラウドリソースクエリを抽出し、ここで、前記第1複数の結合ルールは、第1複数のクラウドリソースにおけるクラウドリソースのペアについて第1複数の一次述語を含み、前記第1複数のクラウドリソースクエリに関連付けられた前記第1複数のクラウドリソースに対する第1複数のフィンガープリントについて、クラウドフィンガープリントのデータベースをクエリし、前記第1複数の結合ルール内の前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合して、第1複数のペアワイズ結合結果を生成し、そして、前記第1複数のペアワイズ結合結果をマージする、ようにさせる。
【0069】
実施形態18:前記プログラムコードは、前記第1複数の一次述語に従って、前記第1複数のフィンガープリント内のフィンガープリントを結合して、前記第1複数の一次述語に対応するクラウドリソースの各ペアについて第1複数の動的インデックスを生成し、そして、前記複数の動的インデックスを使用して、前記第1複数の一次述語のうち少なくとも1つを満足する結果について、前記第1複数の一次述語に対応するクラウドリソースの各ペアを検索する、実施形態17に記載の装置。
【0070】
実施形態19:前記第1複数のフィンガープリントは、前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性を含む、実施形態17に記載の装置。
【0071】
実施形態20:前記第1複数のクラウドリソースにおいて保管された1つ以上のオブジェクトに対するクエリの特性は、前記1つ以上のオブジェクトをクエリする頻度を含む、実施形態19に記載の装置。
図1
図2
図3
図4
図5
図6
【国際調査報告】