(57)【要約】  クエリは、マネージクエリサービスによって受信され実行され得る。リモートデータストアに個別に格納されるデータセットに送信されたクエリを受信し得る。クエリを実行するためのコンピューティングリソースは、クエリを実行するように構成されたコンピューティングリソースのプールからプロビジョニングされ得る。クエリを実行するために、プロビジョニングされたコンピューティングリソースにクエリをルーティングし得る。結果は、コンピューティングリソースから取得され、クエリの送信者に提供され得る。【選択図】図１
2019534496.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
少なくとも１つのプロセッサによって実行される場合、前記少なくとも１つのプロセッサに、少なくとも、
１つまたは複数のリモートデータストアに個別に格納された１つまたは複数のデータセットに送信された第１のクエリを受信し、
前記第１のクエリの前記受信に応答して、
クエリを実行するように構成されたコンピューティングリソースのプールから前記第１のクエリを実行するための１つまたは複数のコンピューティングリソースをプロビジョニングし、
前記リモートデータストアに前記個別に格納されたデータセットに関して前記第１のクエリを実行するために、前記プロビジョニングされたコンピューティングリソースに前記第１のクエリをルーティングし、
前記プロビジョニングされたコンピューティングリソースで生成された前記第１のクエリの結果を提供するための方法を実行させるプログラム命令を格納するためのメモリを含む、前記システム。
【請求項２】
前記方法が、
少なくとも１つの前記データセットのスキーマを受信し、
前記少なくとも１つのデータセットの前記スキーマをメタデータストアに格納することをさらに含み、
前記プロビジョニングされたコンピューティングリソースが、前記第１のクエリの前記実行の一部として前記メタデータストア内の前記スキーマにアクセスする、請求項１に記載のシステム。
【請求項３】
前記第１のクエリ及び前記スキーマが、同じユーザインターフェースを介して受信される、請求項２に記載のシステム。
【請求項４】
前記少なくとも１つのプロセッサが、ネットワークベースのマネージクエリサービスの一部として実装され、少なくとも１つの前記データセットが、ネットワークベースのデータストレージサービスに格納され、前記スキーマが、ネットワークベースのデータカタログサービスに格納され、前記プロビジョニングされたコンピューティングリソースが、仮想コンピューティングサービスの一部として実装され、前記マネージクエリサービス、データストレージサービス、データカタログサービス、及び仮想計算サービスが、同じプロバイダネットワークの一部として提供される、請求項３に記載のシステム。
【請求項５】
方法であって、
１つまたは複数のリモートデータストアに個別に格納された１つまたは複数のデータセットに送信された第１のクエリを受信することと、
前記第１のクエリを受信することに応答して、
クエリを実行するように構成されたコンピューティングリソースのプールから前記第１のクエリを実行するための１つまたは複数のコンピューティングリソースをプロビジョニングすることと、
前記リモートデータストアに前記個別に格納されたデータセットに関して前記第１のクエリを実行するために、前記プロビジョニングされたコンピューティングリソースに前記第１のクエリをルーティングすることとを含む、前記方法。
【請求項６】
前記１つまたは複数のコンピューティングリソースを前記プロビジョニングすることが、特定のクエリエンジンを実装する１つまたは複数のコンピューティングリソースを選択して、前記第１のクエリを実行する、請求項５に記載の方法。
【請求項７】
前記特定のクエリエンジンが、前記第１のクエリで指示される、請求項６に記載の方法。
【請求項８】
少なくともある前記データセットが、別の前記データセットとは異なるデータフォーマットに従って格納され、前記少なくとも一方のデータセットが、他方の前記データセットとは異なるリモートデータストアに格納される、請求項５に記載の方法。
【請求項９】
前記第１のクエリの１つまたは複数のクエリ実行メトリックを監視することと、
前記監視することに基づいて、前記第１のクエリの実行メトリックが、クエリ実行制限を超えていると判定することと、
前記コンピューティングリソースで前記第１のクエリの実行を停止することとをさらに含む、請求項５に記載の方法。
【請求項１０】
少なくとも１つの前記データセットのスキーマを受信することと、
前記少なくとも１つのデータセットの前記スキーマをメタデータストアに格納することとをさらに含み、
前記プロビジョニングされたコンピューティングリソースが、前記第１のクエリの前記実行の一部として前記メタデータストア内の前記スキーマにアクセスする、請求項５に記載の方法。
【請求項１１】
前記第１のクエリが、プログラムインターフェースを介して受信され、前記方法が、前記プログラムインターフェースを介して前記プロビジョニングされたコンピューティングリソースで生成された前記第１のクエリの結果を返すことをさらに含む、請求項５に記載の方法。
【請求項１２】
前記第１のクエリが、前記第１のクエリの結果の宛先を示し、前記方法が、前記プロビジョニングされたコンピューティングリソースで生成された前記第１のクエリの結果を、前記結果の宛先に送信することをさらに含む、請求項５に記載の方法。
【請求項１３】
前記第１のクエリが、前記受信すること、前記プロビジョニングすること、及び前記ルーティングすることを実行するネットワークベースのサービスのサービスエンドポイントで受信され、前記第１のクエリが、第１のクライアントから受信され、複数の他のクエリが、前記データセットとは異なる１つまたは複数のデータセットにアクセスする複数の他のクライアントから、前記サービスエンドポイントで受信され、前記ネットワークベースのサービスが、前記他の受信したクエリに対して、前記受信すること、前記プロビジョニングすること、及び前記ルーティングすることを実行する、請求項５に記載の方法。
【請求項１４】
１つまたは複数のコンピューティングデバイスによって実行されると、前記１つまたは複数のコンピューティングデバイスに、
１つまたは複数のリモートデータストアに個別に格納された１つまたは複数のデータセットに送信された第１のクエリを受信することと、
前記第１のクエリを受信することに応答して、
クエリを実行するように構成されたコンピューティングリソースのプールから前記第１のクエリを実行するための１つまたは複数のコンピューティングリソースを選択することと、
前記選択されたコンピューティングリソースを前記コンピューティングリソースのプールから削除することと、
前記削除されたコンピューティングリソースを前記第１のクエリと関連付けることと、
前記リモートデータストアに前記個別に格納されたデータセットに関して前記第１のクエリを実行するために、前記プロビジョニングされたコンピューティングリソースに前記第１のクエリをルーティングすることとを実施させるプログラム命令を格納する、非一時的コンピュータ可読記憶媒体。
【請求項１５】
前記プログラム命令が、前記１つまたは複数のコンピューティングデバイスに、
前記第１のクエリの１つまたは複数のクエリ実行メトリックを監視することと、
前記監視することに基づいて、前記第１のクエリの実行メトリックが、クエリ実行制限を超えていると判定することと、
前記コンピューティングリソースで前記第１のクエリの実行を停止することとを実施させる、請求項１４に記載の非一時的コンピュータ可読記憶媒体。
【請求項１６】
前記第１のクエリが、構造化照会言語（ＳＱＬ）に従ってフォーマットされる、請求項１４に記載の非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記第１のクエリが、プログラムインターフェースを介して受信され、前記プログラム命令が、前記１つまたは複数のコンピューティングデバイスに、前記プログラムインターフェースを介して前記プロビジョニングされたコンピューティングリソースで生成された前記第１のクエリの結果を返すことをさらに実施させる、請求項１４に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記プログラム命令が、前記１つまたは複数のコンピューティングデバイスに、
少なくとも１つの前記データセットのスキーマを受信することと、
前記少なくとも１つのデータセットの前記スキーマをメタデータストアに格納することとをさらに実施させ、
前記プロビジョニングされたコンピューティングリソースが、前記第１のクエリの前記実行の一部として前記メタデータストア内の前記スキーマにアクセスする、請求項１４に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記第１のクエリ及び前記スキーマが、同じユーザインターフェースを介して受信される、請求項１８に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記１つまたは複数のコンピューティングデバイスが、ネットワークベースのマネージクエリサービスの一部として実装され、少なくとも１つの前記データセットが、ネットワークベースのデータストレージサービスに格納され、前記スキーマが、ネットワークベースのデータカタログサービスに格納され、前記プロビジョニングされたコンピューティングリソースが、仮想コンピューティングサービスの一部として実装され、前記マネージクエリサービス、データストレージサービス、データカタログサービス、及び仮想コンピューティングサービスが、同じプロバイダネットワークの一部として提供される、請求項１９に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
大量のデータをクエリするためのコンピューティングシステムは、実施及び維持が非常に困難になることがある。例えば、多くのシナリオでは、クエリ操作に使用されるインフラストラクチャ（例えば、サーバコンピュータ、ストレージデバイス、ネットワーキングデバイスなど）を最初に作成して構成する必要がある。次いで、抽出、変換、及びロード（「ＥＴＬ」）操作を実行して、ソースシステムからデータを取得し、データストレージにデータを配置する必要があり得る。クエリ操作を実行するデータベース管理システム（「ＤＢＭＳ」）をインストール、構成、及び維持することは、複雑で時間がかかる可能性もある。さらに、多くのＤＢＭＳは、非常に大きなデータセットを高性能にクエリするのには適していない。
【背景技術】
【０００２】
いくつかのシナリオでは、大きなデータセットを高性能にクエリするために、コンピューティングクラスタを利用することができる。例えば、コンピューティングクラスタは、大きなデータセットの分散クエリを実行するために、分散クエリフレームワークをそれぞれ実行する多数のノードを有することができる。しかし、そのようなコンピューティングクラスタ及び分散クエリフレームワークも、実施、構成、及び維持が困難である。さらに、このようなコンピューティングクラスタの不適切な構成及び／または使用は、プロセッサ、ストレージ、ネットワーク、及び、潜在的に、他のタイプのコンピューティングリソースの最適ではない利用をもたらす可能性がある。
【０００３】
本明細書で行われた開示は、これらの考慮事項及び他の考慮事項に関して提示される。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、複数のデータ処理環境のための集中データストアの論理ブロック図を示す。
【図２】いくつかの実施形態による、マネージクエリサービスを提供するプロバイダネットワークを示す論理ブロック図である。
【図３】いくつかの実施形態による、集中データストアに格納されたデータにアクセスするための構造データを提供するデータカタログを動的に生成するデータカタログサービスを示す論理ブロック図である。
【図４】いくつかの実施形態による、クライアントとマネージクエリサービスとの間の相互作用を示す図である。
【図５】いくつかの実施形態による、クエリのマネージ実行のためのシーケンス図である。
【図６】いくつかの実施形態による、リソースプランナを利用したクエリのマネージ実行のシーケンス図である。
【図７】いくつかの実施形態による、マネージクエリ実行の一部としてクエリを処理するクラスタを示す論理ブロック図である。
【図８】いくつかの実施形態による、リソース管理サービスとリソースのプールとの間の相互作用を示す論理ブロック図である。
【図９】いくつかの実施形態による、マネージクエリ実行を実施するための様々な方法及び技法を例示するハイレベルフローチャートである。
【図１０】いくつかの実施形態による、クエリを実行するために、コンピューティングリソースのプールからコンピューティングリソースを選択するための様々な方法及び技法を示すハイレベルフローチャートである。
【図１１】いくつかの実施形態による、クエリ実行制限に関してクエリの実行を監視するための様々な方法及び技法を示すハイレベルフローチャートである。
【図１２】いくつかの実施形態による、リモートデータストアに格納されたデータのスキーマを格納するための様々な方法及び技法を示すハイレベルフローチャートである。
【図１３】いくつかの実施形態による、本明細書に記載の機能の態様を実施するように構成することができるサービスプロバイダネットワークを含む、例示的な動作環境を示す論理ブロック図である。
【図１４】いくつかの実施形態による、本明細書に開示される技法の態様を実施するために利用することができるデータセンターのための構成を例示する論理ブロック図である。
【図１５】いくつかの実施形態による、本明細書に記載の様々な方法、技法、及びシステムを実施するように構成された例示的なシステムを示す。
【発明を実施するための形態】
【０００５】
いくつかの実施形態及び例示の図面の例として実施形態が本明細書中に記載されているが、当業者は、実施形態が、記載された実施形態または図面に限定されないことを認識するであろう。それらについての図面及び詳細な説明は、実施形態を特定の開示される形式に限定することを意図しておらず、逆に、その意図は、添付の特許請求の範囲によって定義される趣旨及び範囲内にある全ての修正物、均等物、及び代替物を網羅することを理解されたい。本明細書中で使用される表題は、構成を目的としているにすぎず、説明または特許請求の範囲を限定するために使用されることを意味していない。本出願全体を通して使用されるように、単語「ｍａｙ」は、必須の意味（すなわち、〜しなければならないを意味する）ではなく、許容的な意味（すなわち、〜する可能性があるを意味する）で使用される。同様に、単語「含む（ｉｎｃｌｕｄｅ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、及び「含む（ｉｎｃｌｕｄｅｓ）」は、含むが、それに限定しないことを意味する。
【０００６】
また、第１、第２などの用語は、様々な要素を説明するために本明細書で使用され得るが、これらの要素は、これらの用語によって限定されるべきではないことも理解されよう。これらの用語は、ある要素を別の要素と区別するためだけに使用される。例えば、本発明の範囲から逸脱することなく、第１の接触を第２の接触と呼ぶことができ、同様に、第２の接触を第１の接触と呼ぶことができる。第１の接触と第２の接触は共に接触であるが、それらは同一の接触ではない。
【０００７】
マネージクエリ実行の様々な実施形態が、本明細書に記載されている。これらの技法の実施により、様々な実施形態で、大きなデータセットでも高性能にクエリすることを可能にする、ネットワーク化されたマネージクエリサービスを提供することができる。さらに、開示される技法のいくつかの実施形態は、コンピューティングクラスタなどのインフラストラクチャを管理せず、データベースまたはコンピューティングクラスタにクエリされるデータをロードせず、及びＥＴＬジョブを実行せずに大きなデータセットをクエリすることを可能にする。このようにして、プロセッサ、ストレージ、ネットワーク帯域幅、及び他のタイプのコンピューティングリソースをより効率的に利用することができる。本明細書に具体的に特定されたもの以外の技法的利益は、開示された技法の実施を通じて実現することができる。
【０００８】
一実施形態では、マネージクエリサービスは、サービスプロバイダネットワーク内で実行される。一実施形態では、マネージクエリサービスは、インフラストラクチャを管理せずに、及びＥＴＬ操作を実行せずに、データをクエリするための機能を提供し得る。例えば、一実施形態では、マネージクエリサービスは、リモートデータに対してクエリを実行するためにコンピューティングクラスタを利用し得る。一実施形態では、コンピューティングクラスタなどのコンピューティングリソースは、マネージクエリサービスでクエリ要求を受信する前に、クエリを処理するようにインスタンス化及び構成することができる。一実施形態では、マネージクエリサービスによる使用に利用可能であるインスタンス化及び構成されたコンピューティングリソースは、次いで、コンピューティングリソースのプールに追加され得る。
【０００９】
一実施形態では、マネージクエリサービスを利用するために、ユーザはクエリされるデータを、ネットワークストレージサービスによって提供される場所にコピーすることができる。いくつかの実施形態では、データは多くのタイプのフォーマットで格納することができる。様々な実施形態では、１つまたは複数のテーブル定義、またはデータの他のスキーマ情報を定義するためのユーザインターフェース（「ＵＩ」）も提供される。例えば、一実施形態では、テーブル定義または他のスキーマは、ネットワークデータカタログサービスによって格納され得る。様々な実施形態では、データカタログサービスは、テーブル定義をマネージクエリサービスによって利用されるコンピューティングクラスタに利用可能にすることができる。
【００１０】
いくつかの実施形態では、データをクエリするための要求をユーザから受信するために、クエリＵＩを提供することもできる。いくつかの実施形態では、クエリが受信されると、コンピューティングリソースを、コンピューティングリソースのプールからプロビジョニングすることができる。いくつかの実施形態では、コンピューティングリソースは、プールからランダムに選択するか、または、限定されないが、同じリクエスタによって送信された以前のクエリ、所望のクエリパフォーマンス、ユーザ設定などを含む、いくつかの要因に基づいて選択することができる。いくつかの実施形態では、選択されたコンピューティングリソースは、クラスタプールから削除され、クエリに（またはクエリの送信者に）割り当てられ得る。次いで、一実施形態では、処理のために選択されたコンピューティングリソースにクエリをルーティングすることができる。いくつかの実施形態では、クエリの結果を、クエリＵＩに返してユーザに提示するか、またはストレージサービスを利用して格納することができる。
【００１１】
少なくともいくつかの実施形態では、同じ送信者からの後続クエリもまた、選択されたコンピューティングリソースにルーティングすることができる。一実施形態では、選択されたコンピューティングリソースが非アクティブであると判定された場合、選択されたコンピューティングクラスタは、コンピューティングクラスタ内のホストコンピュータによって利用されるメモリまたはディスクからクエリの送信者に関連するデータを除去することなどによって「スクラブ」することができる。一実施形態では、コンピューティングクラスタを、ウォームクラスタプールに戻すことができる。
【００１２】
様々な実施形態では、クラスタプール内のコンピューティングクラスタのクエリ性能を監視することができ、クラスタプールに割り当てられたコンピューティングクラスタの数及び各コンピューティングクラスタのサイズ（すなわち、各コンピューティングクラスタ内のホストコンピュータの数）を調整することができる。
【００１３】
図１は、いくつかの実施形態による、マネージクエリ実行を示す。上述のように、様々な実施形態では、（例えば、マネージクエリサービスの一部として実施される）マネージクエリ実行は、クエリを送信するクライアント、ユーザ、または他のエンティティが、クエリを実行する方法を意識することなく実行され得る。このようにして、いくつかの実施形態では、マネージクエリ実行は、異なるフォーマットで格納されている多くの異なる種類のデータに、アクセスしクエリするための共通のインターフェースを提供することができる。例えば、図１に示すように、一実施形態では、マネージクエリ実行１１０は、クエリ１０２などのクエリのネットワークエンドポイント及びインターフェースとして機能し、生成されたクエリ結果１０４を提供し得る。一実施形態では、マネージクエリサービス１１０のクライアントは、プロビジョニングされたコンピューティングリソースなどの処理リソースと直接、相互作用することはできない。複数の異なるクライアントは、同じネットワークエンドポイントにクエリを送信できるが、クエリは、異なるコンピューティングリソースにディスパッチされ実行され得る。様々な実施形態では、負荷分散、熱管理、他のクエリ実行のスケーリング考慮事項は、クライアントから隠され得る。
【００１４】
一実施形態では、マネージクエリ実行１１０は、リソースプール１３０からコンピューティングリソース（複数可）１１２をプロビジョニングし得る。いくつかの実施形態では、リソースプール１３０は、異なるタイプのクエリ（または同じクエリ）を実行するように事前に構成された複数のコンピューティングリソース（複数可）１３２をホストし得る。コンピューティングリソースが取得されると、次いで、マネージクエリ実行１１０は、クエリ１１４を、プロビジョニングされたコンピューティングリソース（複数可）１４０にルーティングし得る。いくつかの実施形態では、スキーマ情報、クエリ実行パラメータ、及び他の情報もプロビジョニングされたコンピューティングリソース（複数可）に提供され得る。いくつかの実施形態では、プロビジョニングされたコンピューティングリソースは、１つまたは複数のリモートデータストア１２０に格納されているデータ１２２にアクセスし得る。いくつかの実施形態では、異なるデータを異なるフォーマット及びデータストアに格納して、結合操作などのクエリ操作を分散されたデータ及び／または異なるフォーマットのデータに対して実行し得る。次いで、クエリ結果１１６は、（例えば、データストアを介して、またはストリーミング結果として）マネージクエリ実行１１６に提供され得る。様々な実施形態では、次いで、マネージクエリ実行１１０は、結果１０４をクライアントまたは他のリクエスタに返送し得る。
【００１５】
マネージクエリ実行のこれまでの説明は論理的な説明であり、したがって、データストア、リソースプールコンピューティングリソース、またはマネージクエリ実行の実施に関して限定するものと解釈されるべきではないことに留意されたい。
【００１６】
本明細書は、マネージクエリサービスを実施するプロバイダネットワークの一般的な説明から始まる。次いで、サービスを実施する一部として使用され得る、異なる構成要素／モジュール、または構成要素／モジュールの配置を含む、マネージクエリサービス、データカタログサービス、及びリソースマネージャサービスの様々な例が説明される。次いで、マネージクエリ実行を実施するためのいくつかの異なる方法及び技法が説明され、それらのいくつかは添付のフローチャートに示される。最後に、様々な構成要素、モジュール、システム、デバイス、及び／またはノードが実装され得る例示的なコンピューティングシステムの説明が提供される。様々な例が明細書全体を通じて提供される。
【００１７】
図２は、いくつかの実施形態による、マネージクエリサービスを提供するプロバイダネットワークを示す論理ブロック図である。プロバイダネットワーク２００は、いくつかの実施形態では、プライベートシステムもしくはクローズドシステムであり得るか、またはインターネット及び／もしくは他のネットワークを介してアクセス可能な（様々なタイプのクラウドベースのストレージなどの）１つまたは複数のサービスをクライアント２５０に提供するために企業または公的機関などのエンティティによって設定され得る。プロバイダネットワーク２００は、単一の場所に実装され得るか、プロバイダネットワーク２００によって提供されるインフラストラクチャ及びストレージサービスを実装及び分散するために必要な、物理的及び／または仮想化されたコンピュータサーバ、ストレージデバイス、ネットワーキング機器など（例えば、図１５、図１６及び図１７に関して以下で説明されるコンピューティングシステム２０００）の集合のような様々なリソースプールをホストする多数のデータセンターを含み得る。いくつかの実施形態では、プロバイダネットワーク２００は、仮想コンピューティングサービス２１０、データ処理サービス（複数可）２２０（例えば、リレーショナルまたは非リレーショナル（ＮｏＳＱＬ）データベースクエリエンジン、マップリデュース処理、データフロー処理、及び／または他の大規模データ処理技法）、データストレージサービス（複数可）２３０（例えば、オブジェクトストレージサービス、ブロックベースストレージサービス、または集中アクセスのために異なるタイプのデータを格納し得るデータストレージサービス）、他のサービス２４０（図示されていない様々な他のタイプのストレージ、処理、分析、通信、イベント処理、視覚化、及びセキュリティサービスを含み得る任意の他のタイプのネットワークベースのサービス）、マネージクエリサービス２７０、データカタログサービス２８０、及びリソース管理サービス２９０などの様々なコンピューティングリソースまたはサービスを実装し得る。
【００１８】
様々な実施形態では、図２に示す構成要素は、コンピュータハードウェア（例えば、マイクロプロセッサまたはコンピュータシステム）によって直接または間接的に実行可能な命令として、またはこれらの技法の組み合わせを使用して、コンピュータハードウェア内に直接実装され得る。例えば、図２の構成要素は、それぞれが、図１７に示され以下に説明されるコンピュータシステムの実施形態と同様であり得るいくつかのコンピューティングノード（または単にノード）を含むシステムによって実装され得る。様々な実施形態では、所与のシステムまたはサービス構成要素（例えば、データストレージサービス２３０の構成要素）の機能は、特定のノードによって実装され得るか、またはいくつかのノードにわたって分散され得る。いくつかの実施形態では、所与のノードは、複数のサービスシステム構成要素（例えば、複数のデータストア構成要素）の機能を実装し得る。
【００１９】
いくつかの実施形態では、仮想コンピューティングサービス２１０は、プロバイダネットワーク２００によって実装され得る。仮想コンピューティングサービス２１０は、クライアント（複数可）２５０操作のために様々な構成に従いインスタンスを提供し得る。仮想コンピューティングインスタンスには、例えば、指定された計算能力（ＣＰＵのタイプ及び数、メインメモリサイズなどを指示することによって指定され得る）及び指定されたソフトウェアスタック（例えば、ハイパーバイザ上で実行され得ることになるオペレーティングシステムの特定のバージョン）を有する１つまたは複数のサーバが含まれ得る。いくつかの異なるタイプのコンピューティングデバイスは、汎用または特殊用途のコンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含む、様々な実施形態で、コンピューティングインスタンス及びプロバイダネットワーク２００を実施するために、単独でまたは組み合わせて使用され得る。いくつかの実施形態では、インスタンスクライアント（複数可）２５０または他の任意の他のユーザは、ネットワークトラフィックをコンピューティングインスタンスに送信するように構成（及び／または承認）され得る。
【００２０】
コンピューティングインスタンスは、例えば、クライアント（複数可）２５０が、インスタンスにアクセスすることを必要とせずに、クライアント（複数可）２０２のアプリケーションを実行するのに適した、アプリケーションサーバインスタンス、Ｊａｖａ（商標）仮想マシン（ＪＶＭ）、汎用もしくは専用のオペレーティングシステム、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋などの様々なインタープリタ型もしくはコンパイル型プログラミング言語をサポートするプラットフォーム、または、高性能コンピューティングプラットフォームなど）の様々な異なるプラットフォームを操作または実装し得る。アプリケーション（または他のソフトウェアは、コンピューティングインスタンスによって操作／実装され、カスタム及び／または市販のソフトウェアなどのクライアント（複数可）によって指定され得る。
【００２１】
いくつかの実施形態では、コンピューティングインスタンスは、予想される稼働率に基づいて異なるタイプまたは構成を有する。特定のコンピューティングインスタンスの稼働率は、インスタンスが予約されている合計時間に対する、インスタンスがアクティブ化されている時間の比率として定義され得る。稼働率は、いくつかの実装形態では、利用率とも呼ばれ得る。クライアントが、インスタンスが予約されている時間に比べて、ごくわずかな間（例えば、１年の予約の３０％〜３５％）に、コンピューティングインスタンスを使用することを想定する場合、クライアントは、インスタンスを低稼働率インスタンスとして予約し、関連する価格設定ポリシーに従って、１時間ごとの割引使用料を支払うことを決定し得る。インスタンスが、ほとんど常に稼働している必要がある定常状態のワークロードであることをクライアントが想定している場合、クライアントは、高稼働率インスタンスを予約し、１時間ごとの使用料をさらに安く支払う可能性があり得るが、いくつかの実施形態では、実際の使用時間数に関係なく、価格設定ポリシーに従って、予約の全期間にわたって、毎時料金を請求され得る。対応する価格設定ポリシーを有する中稼働率のインスタンスに対するオプションは、いくつかの実施形態でもサポートされ得て、その場合、先行費用及び１時間ごとの費用は、対応する高稼働率と低稼働率の間に収まる。
【００２２】
コンピューティングインスタンス構成は、計算集中型アプリケーション（例えば、高トラフィックウェブアプリケーション、広告配信、バッチ処理、ビデオ符号化、分散分析、高エネルギー物理学、ゲノム分析、及び計算流体力学）のための計算ワークロード、グラフィックス集中型ワークロード（例えば、ゲームストリーミング、三次元アプリケーションストリーミング、サーバ側のグラフィックスワークロード、レンダリング、財務モデリング、及びエンジニアリング設計）、メモリ集中型ワークロード（例えば、高性能データベース、分散メモリキャッシュ、インメモリ分析、ゲノム構築及び分析）、及び、ストレージ最適化ワークロード（例えば、データウェアハウジング及びクラスタファイルシステム）などの、一般的な目的または特定の目的を有するコンピューティングインスタンスも含み得る。特定の数の仮想ＣＰＵコア、メモリ、キャッシュ、ストレージ、ならびに他のパフォーマンス特性など、コンピューティングインスタンスのサイズ。コンピューティングインスタンスの構成は、特定のデータセンター内の場所、アベイラビリティーゾーン、地理的位置などを含み、（予約されたコンピューティングインスタンスの場合）予約期間の長さも含み得る。図３に関して以下に説明するように、コンピューティングインスタンスの異なる構成は、マネージクエリサービス２７０によってリソースを選択するためにルーティングされたクエリなど、リソースにルーティングされたジョブを実行するために、リソース管理サービス２９０によって管理されるリソースの異なるプールに関連するコンピューティングリソースとして実装され得る。
【００２３】
データ処理サービス２２０は、異なる機能を実行するための様々なタイプのデータ処理サービス（例えば、異常検出、機械学習、データ検索、または任意の他のタイプのデータ処理操作などの機能を実行するためのクエリまたは他の処理エンジン）であり得る。例えば、少なくともいくつかの実施形態では、データ処理サービス２３０は、データストレージサービス２４０のうちの１つに格納されているデータに対するマップ削減機能を実施する処理ノードのクラスタを作成するマップ削減サービスを含み得る。他の様々な分散処理アーキテクチャ及び技法（例えば、グリッドコンピューティング、シャーディング、分散ハッシュなど）は、データ処理サービス２３０によって実施され得る。いくつかの実施形態では、データ処理操作は、データストレージサービス（複数可）２３０の一部（例えば、指定されたデータに対する要求を処理するクエリエンジン）として実施され得ることに留意されたい。データ処理サービス（複数可）２３０は、マネージクエリサービス２７０のプール内のプロビジョニングされたリソースとして、データストレージサービス（複数可）２３０に格納されたデータセットに関して様々な処理操作を実行するための構造的情報を取得するために、データカタログサービス２２０のクライアントであり得る。
【００２４】
データカタログサービス２８０は、プロバイダネットワーク２００内のクライアントに代わって、データストレージサービス２３０内に格納されたデータ及びデータのスキーマを取り込み、位置を特定し、識別するカタログサービスを提供し得る。例えば、非リレーショナルフォーマットで格納されたデータセットは、プロバイダネットワーク２００の同じ顧客またはクライアントに代わって、他のデータオブジェクトと共にデータセットを格納するオブジェクトベースのデータストア内のコンテナまたはグループと共に識別され得る。少なくともいくつかの実施形態では、データカタログサービス２８０は、あるデータフォーマットで取り込まれたデータの別のデータフォーマットへの変換を指示し得る。例えば、データは、単一ファイルまたは半構造化データのセット（例えば、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ））としてデータストレージサービス２３０に取り込まれ得る。データカタログサービス２８０は、単一ファイルまたは半構造化データのセットのデータフォーマット、構造、または他のスキーマ情報を識別し得る。少なくともいくつかの実施形態では、別のデータフォーマットで格納されたデータは、（例えば、データセットの構造化バージョンを作成するために、半構造化データのテーブルを構築するためのデータ型、列型、名前、フィールドの区切り文字、及び／または他の任意の情報を検出するため）バックグラウンド操作の一部として異なるデータフォーマットに変換され得る。次いで、データカタログサービス２８０は、図３〜図７に関して以下で説明するように、データに関するスキーマ情報を、データに関するクエリを処理するように構成されたコンピューティングリソースまたはクラスタなどの他のサービス、コンピューティングデバイス、またはリソースに利用可能にし得る。
【００２５】
データストレージサービス（複数可）２３０は、クライアント２５０がクラウドまたはネットワークコンピューティング環境で、データストレージシステムを操作することを可能にするネットワークベースのサービスとして、クライアント２５０に代わって、データを格納、アクセス、及び管理するための異なるタイプのデータストアを実装し得る。例えば、データストレージサービス（複数可）２３０は、データを格納、クエリ、及び更新するための様々なタイプの（リレーショナル及び非リレーショナルの両方の）データベースストレージサービスを含み得る。そのようなサービスは、非常にスケーラブルで拡張可能なエンタープライズクラスのデータベースシステムであり得る。クエリは、複数の物理リソースにわたって分散されているデータストレージサービス（複数可）２３０内のデータベースに送信され得て、データベースシステムは必要に応じて、拡張または縮小され得る。データベースシステムは、異なる実施形態では、様々なタイプ及び／または組織のデータベーススキーマと効果的に連携し得る。いくつかの実施形態では、クライアント／加入者は、例えば、ＳＱＬインターフェースを介してデータベースシステムに相互作用的に、いくつかの方法でクエリを送信し得る。他の実施形態では、外部アプリケーション及びプログラムは、データベースシステムへのオープンデータベース接続（ＯＤＢＣ）及び／またはＪａｖａデータベース接続（ＪＤＢＣ）ドライバインターフェースを使用してクエリを送信し得る。
【００２６】
いくつかの実施形態では、１つのデータストレージサービス２３０は、他のデータストレージサービス内で処理及び／または格納するために、他のデータストレージサービスが、集中データストアに格納されたデータにアクセスし得るように、集中データストアとして実装され得る。データオブジェクトまたはファイルの様々な種類、サイズ、または集合を格納、更新、及び取得するために、様々なタイプのオブジェクトまたはファイルデータストアへのストレージ及びアクセスを提供し得る。そのようなデータストレージサービス（複数可）２３０は、プログラムインターフェース（例えば、ＡＰＩ）またはグラフィカルユーザインターフェースを介してアクセスし得る。集中データストアは、ローカルブロックベースのストレージデバイス（例えば、ハードディスクドライブ、ソリッドステートドライブなど）と同様にマウントまたはアクセスすることができるデータボリュームの一部としてデータを維持するための仮想ブロックベースのストレージを提供し得て、ｉｎｔｅｒｎｅｔ  ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｉｎｔｅｒｆａｃｅ（ｉＳＣＳＩ）などのブロックベースのデータストレージプロトコルまたはインターフェースを利用してアクセスされ得る。
【００２７】
少なくともいくつかの実施形態では、データストレージサービス（複数可）２３０のうちの１つは、別のデータストレージサービス２３０の一部として実装される集中データストアを利用するデータウェアハウスサービスであり得る。様々なニーズに応じて、データウェアハウスサービスは、様々な異なるデータ管理サービスをクライアントに提供し得る。場合によっては、クライアントは、販売記録のマーケティング、管理報告、ビジネスプロセス管理、予算予測、財務報告、ウェブサイト分析、または他の多くのタイプまたは種類のデータなど、大量のデータを格納及び維持することを望み得る。クライアントによるデータの使用は、データの格納に使用されるデータ管理システムの設定にも影響を与え得る。例えば、各行内の少数の列から大量のデータを集計するなど、特定のタイプのデータ分析及び他の操作では、列データベーステーブルにより、より効率的なパフォーマンスが提供され得る。言い換えれば、（従来のデータベース方式のように）各データブロックに列の行全体を格納するのではなく、データベーステーブルからの列情報をディスク上のデータブロックに格納し得る。
【００２８】
マネージクエリサービス２７０は、図３〜図７に関して以下でより詳細に説明するように、様々な実施形態では、クライアントがクエリを実行するためにリソースを構成することなく、（例えば、オブジェクトストア及びデータベースサービスなどの異なるデータストレージサービスで）１つまたは複数の場所に格納されたデータに対してクエリを実行し得るように、クライアントに代わって、クエリの実行を管理し得る。リソース管理サービス２９０は、図１に関して上述したように、異なるサービスに代わってジョブを実行するために、マネージクエリサービス２７０のような異なるサービスのためのコンピューティングリソースのプールを管理し提供し得る。
【００２９】
一般的に言えば、クライアント２５０は、ストレージサービスに対する要求（例えば、データストレージサービス（複数可）２４０内のデータを作成、読み取り、書き込み、取得、または修正する要求など）またはマネージクエリサービス２７０に対する要求（例えば、データストレージサービス（複数可）２３０に格納されているデータセット内のデータをクエリする要求）を含む、ネットワーク２６０を介してネットワークベースの要求をプロバイダネットワーク２００に送信するように構成可能な任意のタイプのクライアントを包含し得る。例えば、所与のクライアント２５０は、適切なバージョンのウェブブラウザを含み得るか、またはウェブブラウザによって提供される実行環境へのまたは実行環境内での拡張機能として実行し得るプラグインモジュールまたは他のタイプのコードモジュールを含み得る。あるいは、クライアント２５０は、データストレージサービス（複数可）２４０内のストレージリソースを使用してデータを格納及び／またはデータにアクセスして、様々なアプリケーションを実施し得る、データベースアプリケーション（またはそのユーザインターフェース）、メディアアプリケーション、オフィスアプリケーション、または他のアプリケーションなどのアプリケーションを包含し得る。いくつかの実施形態では、そのようなアプリケーションは、必ずしも、全てのタイプのネットワークベースのデータに対する完全なブラウザサポートを実装することなく、ネットワークベースのサービス要求を生成及び処理するための（例えば、適切なバージョンのハイパーテキストトランスファープロトコル（ＨＴＴＰの））十分なプロトコルサポートを含み得る。すなわち、クライアント２５０は、プロバイダネットワーク２００と直接、相互作用し得るアプリケーションであり得る。いくつかの実施形態では、クライアント２５０は、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（ＲＥＳＴ）スタイルのネットワークベースのサービスアーキテクチャ、文書ベースまたはメッセージベースのネットワークベースのサービスアーキテクチャ、または他の適切なネットワークベースのサービスアーキテクチャに従って、ネットワークベースのサービス要求を生成し得る。
【００３０】
いくつかの実施形態では、クライアント２５０は、それらのアプリケーションに対して透過的な方法で、プロバイダネットワーク２００へのアクセスを他のアプリケーションに提供し得る。例えば、クライアント２５０は、オペレーティングシステムまたはファイルシステムと統合して、データストレージサービス（複数可）２４０（例えば、ブロックベースのストレージサービス）のうちの１つにストレージを提供し得る。しかし、オペレーティングシステムまたはファイルシステムは、ファイル、ディレクトリ及び／またはフォルダの従来のファイルシステム階層など、アプリケーションに対して異なるストレージインターフェースを提示し得る。そのような実施形態では、ストレージシステムサービスモデルを使用するためにアプリケーションを修正する必要がなくなり得る。代わりに、データストレージサービス（複数可）２４０へのインターフェースの詳細は、オペレーティングシステム環境内で実行されているアプリケーションに代わって、クライアント２５０及びオペレーティングシステムまたはファイルシステムによって調整され得る。
【００３１】
クライアント２５０は、ネットワークベースのサービス要求（例えば、データストレージサービス（複数可）２４０内のデータ、データ処理サービス（複数可）２３０の一部として実行されている、操作、タスク、またはジョブに送信される要求、またはデータカタログサービス２２０と相互作用するために送信されるアクセス要求）をネットワーク２６０を介してプロバイダネットワーク２００に伝達し、プロバイダネットワーク２００から応答を受信し得る。様々な実施形態では、ネットワーク２６０は、クライアント２５０とプロバイダネットワーク２００との間にネットワークベースの通信を確立するのに必要なネットワーキングハードウェア及びプロトコルの任意の適切な組み合わせを包含し得る。例えば、ネットワーク２６０は、概して、インターネットを集合的に実装する様々な電気通信ネットワーク及びサービスプロバイダを包含し得る。ネットワーク２６０は、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）などのプライベートネットワーク、ならびにパブリックまたはプライベートの無線ネットワークも含み得る。例えば、所与のクライアント２５０及びプロバイダネットワーク２００の両方が、それ自体の内部ネットワークを有する企業内にそれぞれプロビジョニングされ得る。そのような実施形態では、ネットワーク２６０は、所与のクライアント２５０とインターネットとの間、ならびにインターネットとプロバイダネットワーク２００との間のネットワークリンクを確立するために必要なハードウェア（例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバなど）及びソフトウェア（例えば、プロトコルスタック、会計ソフトウェア、ファイアウォール／セキュリティソフトウェアなど）を含み得る。いくつかの実施形態では、クライアント２５０は、パブリックインターネットではなくプライベートネットワークを使用してプロバイダネットワーク２００と通信し得ることに留意されたい。
【００３２】
図３は、いくつかの実施形態による、マネージクエリサービスを示す論理ブロック図である。図４〜図８に関して以下に説明するように、マネージクエリサービス２７０は、プロバイダネットワーク２００内の様々な他のサービスの機能を利用し得る。例えば、マネージクエリサービス２７０は、リソース管理サービス２９０を利用して、クエリを実行し、事前構成クエリのリソースを提供し、利用可能なリソースを利用可能な状態に戻すために事前構成リソースのプールをプロビジョニング及び管理し得る。例えば、リソース管理サービス２９０は、仮想コンピューティングサービス２１０内のコンピューティングリソース（複数可）３５４及びデータ処理サービス（複数可）２２０内のコンピューティングリソース（複数可）３５６など、１つまたは複数の異なるリソースサービスからのプールリソース（複数可）３５２ａ〜３５２ｎを含むリソースプール（複数可）３５０ａ〜３５０ｎをインスタンス化し、構成し、提供し得る。リソース管理サービス２９０は、他のネットワークベースのサービスに代わってジョブを実行するために、特定のリソースプールのリソース３５２を作成、構成、タグ付け（または他の方法で関連付け）、終了、再起動、それ以外では、リソース３５２を操作する要求を送信し得る。
【００３３】
プールから（例えば、利用するリソースの識別子または他のインジケータを受信することによって）リソースが提供されると、様々な実施形態では、マネージクエリサービス２７０は、仮想コンピューティングサービス２１０内のリソース３５４またはデータ処理サービス２２０内のリソース３５６と直接、相互作用してクエリを実行し得る。いくつかの実施形態では、マネージクエリサービス２７０は、データカタログサービス２８０を利用して、図５〜図７に関して以下で説明するように、いくつかの実施形態では、後でクエリを処理するときに使用するために、図４に関して以下で説明するように、データセットスキーマ３５２を格納し得る。例えば、データセットスキーマは、いくつかの実施形態では、（コンピューティングリソース上で実行される）クエリエンジンが、クエリされているデータを解釈することができ得るように、テーブル定義の一部としてテーブルのフィールドまたは列のデータタイプを識別し得る。いくつかの実施形態では、マネージクエリサービス２７０はまた、データストレージサービス（複数可）２３０と相互作用して、データセット３７０を直接、調達するか、またはクエリ結果３８０を取得し得る。
【００３４】
マネージクエリサービス２７０は、図４に関して以下で説明するように、異なるクライアントインターフェースからの要求を処理するためにマネージクエリインターフェース３１０を実装し得る。例えば、アプリケーションプログラマインターフェース（ＡＰＩ）、標準クエリプロトコルもしくは接続に従ってフォーマットされた要求、またはマネージクエリサービスの一部として実装されるホスト型グラフィカルユーザインターフェースを介して受信された要求などの異なるタイプの要求は、マネージクエリインターフェース３１０によって処理され得る。
【００３５】
マネージクエリサービス２７０は、サービスリソースの操作（例えば、マネージクエリインターフェース３１０の要求ディスパッチャ、リソースプランナ３３０のリソースプランナワーカ、またはクエリトラッカ３４０のクエリトラッカモニタ）を管理するために、マネージクエリサービス制御プレーン３２０を実装し得る。マネージクエリサービス制御プレーン３２０は、図５及び図６に関して以下で説明するように、適切な構成要素に要求を送信し得る。マネージクエリサービス２７０は、マネージクエリインターフェース３１０を介して受信した要求を処理するための認証及び承認制御を実装し得る。例えば、マネージクエリサービス制御プレーン３２０は、（例えば、アクセス資格情報を検証することにより）クライアントから受信したクエリで識別されたデータセットにアクセスするために、クライアントのアイデンティティまたは権限を検証し得る。少なくともいくつかの実施形態では、マネージクエリサービス制御プレーン３２０は、クエリ履歴、お気に入りクエリ、またはクエリ実行ログ、及び他のマネージクエリサービス履歴データを、（内部データストア内で、またはデータストレージサービス（複数可）２３０のうちの１つなどの外部データストア内のデータセットの一部として）維持し得る。いくつかの実施形態では、クエリ実行費用は、マネージクエリサービスのユーザに使用状況を報告するための請求サービス（図示せず）または他のシステムに対して、マネージクエリサービス制御プレーン３２０によって請求、計算、または報告され得る。
【００３６】
いくつかの実施形態では、マネージクエリサービス２７０は、クエリの実行のためにプールから利用可能なコンピューティングリソースをインテリジェントに選択するためにリソースプランナ３３０を実装し得る。例えば、リソースプランナ３３０は、（例えば、コンピューティングリソースによって報告される）クエリ実行に関連する収集されたデータ統計を評価し、いくつかのパラメータセット内でクエリを実行するためのコンピューティングリソースの推定数または構成（例えば、費用、時間など）を決定し得る。例えば、一実施形態では、リソースの数／構成を決定するために、受信したクエリの特徴に適用することができるクエリ推定モデルを生成するために、機械学習技術がリソースプランナ３３０によって適用され得る。次いで、一実施形態では、リソースプランナ３３０は、プールからのクエリを実行するために利用可能なリソースの中から、推定数／構成に最も適合し得るリソースを提供または識別し得る。
【００３７】
様々な実施形態では、マネージクエリサービス２７０は、コンピューティングクラスタでのクエリの実行を管理し、クエリのステータスを追跡し、リソース管理サービス２９０からクエリを実行するためのリソースを取得するために、クエリトラッカ３４０を実装し得る。例えば、クエリトラッカ３４０は、プロビジョニングされたコンピューティングリソース（例えば、図５〜図７に関して以下で説明するようなコンピューティングクラスタ）上に実装された異なるマネージクエリサービスエージェントから受信したアップデートに基づいてデータベースまたは他のトラッキング情報のセットを維持し得る。
【００３８】
図４は、いくつかの実施形態による、クライアントとマネージクエリサービスとの間の相互作用を示す図である。クライアント（複数可）４００は、上記の図２のクライアント（複数可）２５０または他のクライアント（例えば、プロバイダネットワーク２００の一部として、またはデータ探索もしくは視覚化ツール（例えば、Ｔａｂｌｅａｕ、Ｌｏｏｋｅｒ、ＭｉｃｒｏＳｔｒａｔｅｇｙ、Ｑｌｉｋｔｅｃｈ、またはＳｐｏｔｆｉｒｅ）などの外部のサービス、システムまたは、構成要素の一部として実装される他のサービスシステムまたは構成要素）であり得る。クライアント４００は、マネージクエリインターフェース３１０を介してマネージクエリサービス２７０に様々な要求を送信することができる。マネージクエリインターフェース３１０は、クエリ４４２を送信するためのユーザインターフェース（例えば、グラフィカルまたはコマンドラインのユーザインターフェース）、またはクエリを実行するためのデータスキーマ４４４を登録するためのユーザインターフェースを提供し得る、管理コンソール４４０を提供し得る。例えば、管理コンソール４４０は、クエリを送信するか、またはデータスキーマを登録するための様々なグラフィカルユーザインターフェース要素（例えば、テキスト編集ウィンドウ、ドロップダウンメニュー、ボタン、ウィザード、またはワークフロー）を提供するネットワークベースのサイト（例えば、プロバイダネットワーク２００のインターネットウェブサイト）の一部として実装され得る。マネージクエリインターフェース３１０は、クエリ、及び様々な他の例示された要求を実行するために、プログラムインターフェース４１０（例えば、様々なアプリケーションプログラミングインターフェース（ＡＰＩ）コマンド）を実装し得る。いくつかの実施形態では、マネージクエリインターフェース３１０は、ＪＤＢＣドライバ４３０またはＯＤＢＣドライバ４２０などのデータをクエリするための標準通信プロトコルをサポートするカスタムドライバを実装し得る。
【００３９】
クライアント４００は、多くの異なるタイプの要求を、マネージクエリインターフェース３１０に送信することができる。例えば、一実施形態では、クライアント４００は、データスキーマを作成、読み取り、修正、または削除するための要求４５０を送信することができる。例えば、新しいテーブルスキーマを要求４５０を介して送信することができる。様々な実施形態では、要求４５０は、データセットの名前（例えば、テーブル）、データセットの場所（例えば、データストレージサービス２３０などのオブジェクトストレージサービス内のオブジェクト識別子、ファイルパス、ユニフォームリソースロケータ、または他のロケーションインジケータ）、フィールドまたは列の列数、列名、データ型（例えば、文字列、整数、ブール値、タイムスタンプ、配列、マップ、カスタムデータ型、または複合データ型）、データフォーマット（例えば、限定されないが、ＪＳＯＮ、ＣＳＶ、ＡＶＲＯ、ＯＲＣ、ＰＡＲＱＵＥＴ、タブ区切り、カンマ区切り、ならびにカスタムまたは標準のシリアライザ／デシリアライザを含むフォーマット）、データセットのパーティション（例えば、時間、地理的位置、または他の次元に従う）、またはデータセットに関するプロセスクエリの他のスキーマ情報を含み得る。少なくともいくつかの実施形態では、データセットスキーマを作成／読み取り／変更／削除する要求は、Ｈｉｖｅクエリ言語（ＨＱＬ）などのデータ定義言語（ＤＤＬ）を使用して実行され得る。マネージクエリインターフェース３１０は、データカタログサービス２８０に関してそれぞれのＡＰＩ呼び出しまたは他の要求４５２を実行して、データセットのスキーマを（例えば、テーブルスキーマ４０２の一部として）格納し得る。テーブルスキーマ４０２は、異なるフォーマット（例えば、Ａｐａｃｈｅ  Ｈｉｖｅ）で格納され得る。他の実施形態では、マネージクエリサービス２７０は、独自のメタデータストアを実装し得ることに留意されたい。
【００４０】
様々な実施形態では、図５及び図６に関して以下で説明するように、クライアント４００はまた、クエリ４６０及びクエリステータス４７０の要求をマネージクエリインターフェース３１０に送信し得て、マネージクエリインターフェース３１０は、それらの要求４６０及び４７０を、マネージクエリサービス制御プレーン３２０に送信し得る。クエリ４６０は、構造化クエリ言語（ＳＱＬ）またはＨＱＬなどの様々なタイプのクエリ言語に従ってフォーマットされ得る。
【００４１】
クライアント（複数可）４００はまた、クエリ履歴４８０またはクエリを管理する他のアカウント関連クエリ情報（例えば、お気に入りまたは共通のクエリ）に対する要求を送信し得る。いくつかの実施形態では、クライアント（複数可）４００は、保存クエリ４９０を実行する要求を送信することによって、過去のクエリの実行をプログラム的にトリガし得て、マネージクエリサービス制御プレーン３２０がルックアップして実行し得る。例えば、保存されたクエリ実行要求は、特定のユーザアカウントまたはクライアント用に格納または保存されたクエリに対するポインタまたは他の識別子を含み得る。次いで、マネージクエリサービス制御プレーン３２０は、そのユーザクエリストアにアクセスして（図５〜図７に関して以下で説明する技法に従って）クエリを取得して実行し得る。
【００４２】
図５は、いくつかの実施形態による、クエリのマネージ実行のためのシーケンス図である。クエリ５３０は、実行のために選択されたクラスタ５３６を示すクエリトラッカ３４０にクエリ５３２を送信し得るマネージクエリサービス制御プレーン３２０で受信され得る。クエリトラッカ３４０は、リソース管理サービス２９０からクラスタ５３４をリースし得て、リソース管理サービス２９０は、クラスタ５３６を返し得る。リソース管理サービス２９０及びクエリトラッカ３４０は、クエリトラッカによってリースされ、受信されたクエリを実行するために割り当てられたリソースのリース状態情報を維持し得る。次いで、クエリトラッカ３４０は、プロビジョニングされたクラスタ５１０でクエリ５３８の実行を開始し、クエリ実行命令をマネージクエリエージェント５１２に送信し得る。
【００４３】
マネージクエリエージェント５１２は、データカタログサービス２８０からデータセット（複数可）５２０のスキーマ５４０を取得し得て、データカタログサービス２８０は、（例えば、クエリを「読み取り時に」処理するためにスキーマを適用するための手法を実装する）適切なスキーマ５４２を返し得る。次いで、プロビジョニングされたクラスタ５１０は、クエリ実行計画を生成し、クエリ計画に従ってデータセット（複数可）５２０に対してクエリ５４４を実行することができる。マネージクエリエージェント５１２は、クエリステータス５４６の要求の取得に応答して、クエリステータス５４８を報告し、クエリステータス５５０を示す応答５５０を送信し得るクエリトラッカ３４０にクエリステータス５４６を送信し得る。プロビジョニングされたクラスタ５１０は、クエリ結果５５２を結果ストア５２２（データストレージサービス２３０であり得る）に格納し得る。いくつかの実施形態では、マネージクエリサービス制御プレーン３２０は、クエリ結果５５４を取得し、結果ストア５２２からクエリ結果５５６を取得し、それに応答して、クエリ結果５５８を提供するために、ｑ要求を受信し得る。
【００４４】
図６は、いくつかの実施形態による、リソースプランナを利用したクエリのマネージ実行のシーケンス図である。クエリ６３０は、クエリ６３２をリソースプランナ３４０に送信し得るマネージクエリサービス制御プレーン３２０で受信され得る。リソースプランナ３４０は、クエリを分析し、クエリを処理するための履歴データ及びリソース管理サービス２９０から受信した利用可能なクラスタ（複数可）６３４に基づいて、クエリを処理するのに最適なクラスタを決定し得る。次いで、リソースプランナ３４０は、クエリを選択し、実行のために選択されたクラスタ６３６を示すクエリトラッカ３４０にクエリを送信し得る。次いで、クエリトラッカ３４０は、プロビジョニングされたクラスタ６１０でクエリ６３８の実行を開始し、クエリ実行命令をマネージクエリエージェント６１２に送信し得る。
【００４５】
マネージクエリエージェント６１２は、データカタログサービス２８０からデータセット（複数可）６２０のスキーマ６４０を取得し得て、データカタログサービス２８０は、適切なスキーマ６４２を返し得る。次いで、プロビジョニングされたクラスタ６１０は、クエリ実行計画を生成し、クエリ計画に従ってデータセット（複数可）６２０に対してクエリ６４４を実行することができる。マネージクエリエージェント６１２は、クエリステータス６４６の要求の取得に応答して、クエリステータス６４８を報告し、クエリステータス６５０を示す応答６５０を送信し得るクエリトラッカ３４０にクエリステータス６４６を送信し得る。プロビジョニングされたクラスタ６１０は、クエリ結果６５２を結果ストア６２２（データストレージサービス２３０であり得る）に格納し得る。いくつかの実施形態では、マネージクエリサービス制御プレーン３２０は、クエリ結果６５４を取得し、結果ストア６２２からクエリ結果６５６を取得し、それに応答して、クエリ結果６５８を提供するために、ｑ要求を受信し得る。
【００４６】
いくつかの実施形態では、異なるタイプのコンピューティングリソースは、リソースプールにプロビジョニング及び構成され得る。単一ノードクラスタまたはマルチノードコンピューティングクラスタは、マネージクエリサービス２７０のクエリに情報を提供するために、リソース管理サービス２９０によってリソースプール内にプロビジョニング及び構成されたタイプのコンピューティングリソースの一例であり得る。図７は、いくつかの実施形態による、マネージクエリ実行の一部としてクエリを処理するクラスタを示す論理ブロック図である。クラスタ７１０は、（クラスタ７１０によって実装されるクエリエンジン７２４に従って）リーダーノードであるコンピューティングノード７２０を実装し得る。いくつかの実施形態では、単一のノードはリーダーノードになり得ないか、またはリーダーノードは、あるクエリの処理から次のクエリへと交代し得る。マネージクエリエージェント７２２は、プロビジョニングされたリソース、クラスタ７１０と、マネージクエリサービス２７０及びリソース管理サービス２９０の他の構成要素との間のインターフェースを提供するために、リーダーノード７２０の一部として実装され得る。例えば、マネージクエリエージェント７２２はさらに、クエリのステータス７０８（例えば、実行中、Ｉ／Ｏの実行中、集約の実行中など）及びメトリクス７０６（例えば、ヘルスメトリクス、リソース利用メトリクス、費用メトリクス、時間長、実行メトリクスなど）などのデータをマネージクエリサービス２７０に提供し得る。いくつかの実施形態では、マネージクエリエージェント７２２は、（修正イベント、リース要求などのプール管理決定を行うために）クラスタ／クエリステータス７０８及びメトリック（複数可）７０６をリソース管理サービス２９０に提供し得る。例えば、マネージクエリエージェント７２２は、クエリが完了したこと、及びクラスタ７１０が再割り当て（または図１０に関して以下で説明するように、他のリソースライフサイクル操作）の準備ができていることを示すクラスタステータス７０８をリソース管理サービス２９０に示し得る。
【００４７】
リーダーノード７２０は、クエリ７０３としてマネージクエリエージェント７２２を介して受信され得るクエリ７０２などのクエリを実行するためにクエリエンジン７２４を実装し得る。例えば、マネージクエリエージェントは、（図５及び図６で上述したように）クエリトラッカのためのプログラムインターフェースを実装してクエリを送信し、次いで、適切なクエリ実行命令を生成し、クエリエンジン７２４に送信し得る。クエリエンジン７２４は、受信したクエリ７０３のクエリ実行計画を生成し得る。少なくともいくつかの実施形態では、リーダーノード７２０は、スキーマデータをクエリ計画の生成及びクエリの実行に取り込むため、データカタログサービス２８０またはデータ７６２のメタデータストア（例えば、データ７６２のスキーマ情報を維持する、データ辞書、他のメタデータストア、データベースシステムなどの他のデータ処理サービス）からデータセット（複数可）７７０のスキーマ情報を取得し得る。リーダーノード７２０は、クエリ実行命令７４０を生成し、データストア（複数可）７６０内のデータ７６２にアクセスしてクエリを適用するコンピューティングノードに送信し得る。ノード７３０ａ、７３０ｂ、及び７３０ｎなどのコンピュートノードは、クエリエンジン７３２ａ、７３２ｂ、及び７３２ｎをそれぞれ実装して、クエリ命令を実行し、クエリをデータ７５０に適用し、リーダーノード７２０に部分結果７４０を返し得て、次いで、リーダーノード７２０は、クエリ結果７０４を生成及び送信し得る。クエリエンジン７２４及びクエリエンジン７３２は、オープンソースのＰｒｅｓｔｏ分散クエリフレームワークまたはＡｐａｃｈｅ  Ｓｐａｒｋフレームワークなど、様々な種類の分散クエリまたはデータ処理フレームワークを実装し得る。
【００４８】
図８は、いくつかの実施形態による、リソース管理サービスとリソースのプールとの間の相互作用を示す論理ブロック図である。リソース管理サービス２９０は、他のネットワークベースのサービス（またはクライアントもしくはプロバイダネットワーク）が、リソース管理サービス２９０によって管理されるリソースプールから事前設定されたリソースの要求を送信することを可能にするプログラムインターフェース（例えば、ＡＰＩ）または他のインターフェースを実装し得る。例えば、クエリを実行するためのクラスタを取得するために、（例えば、クエリトラッカ３４０から）クラスタ８３０の要求を受信し得る。リソース管理サービス２９０は、要求８３０に対して適切なプールを決定し、要求に情報を提供するためのクラスタをランダムに（または図１０に関して以下で説明する技法に従って選択的に）決定し得る。次いで、リソース管理サービス２９０は、（例えば、識別されたコンピューティングリソースにアクセスするための場所、識別子、または他の情報を指定することによって）識別されたクラスタ８４０を提供し得る。リソース管理サービスは、クラスタの状態情報を更新して、クラスタがリースされているか、そうでない場合は、利用できないことを示し得る。リソース管理サービス２９０はまた、現在の割り当てからクラスタ８５０を解放する要求を受信し得る。次いで、いくつかの実施形態では、リソース管理サービス２９０は、クラスタ及びプールに関する状態情報を更新して、クラスタをプールに戻し得る。
【００４９】
８６０に示されるように、リソース管理サービス２９０は、自動的に（または要求（図示せず）に応答して）、クラスタ８１０のプール（複数可）をコミッションまたはデコミッションし得る。例えば、いくつかの実施形態では、リソース管理サービス２９０は、ウォームクラスタプール８１０のコンピューティングクラスタ８２０の数及びサイズを選択する技法を実行し得る。いくつかの実施形態では、ウォームクラスタプール８１０内のコンピューティングクラスタ８２０の数及びサイズは、限定されないが、クエリ要求の履歴及び／または予想されるクエリ要求の量、コンピューティングクラスタ８２０を実装するために利用されるコンピューティングリソースの価格、及び／または他の要因または考慮事項を含む、様々な要因に基づいて決定することができる。
【００５０】
コンピューティングクラスタ８２０の数及びサイズを決定すると、コンピューティングクラスタ８２０は、図２で上述したように、オンデマンドコンピューティングサービス、または仮想コンピューティングサービスまたはデータ処理サービスの使用などによって、インスタンス化され得る。次いで、インスタンス化されたコンピューティングクラスタ８２０は、マネージクエリサービスでクエリを受信する前に、クエリを処理するように構成することができる。例えば、限定されないが、１つまたは複数の分散クエリフレームワークまたは他のクエリ処理エンジンを、各コンピューティングクラスタ８２０内のコンピューティングノードにインストールすることができる。上述したように、特定の一実施態様では、分散クエリフレームワークは、オープンソースのＰＲＥＳＴＯ分散クエリフレームワークであり得る。他の分散クエリフレームワークは、他の構成で利用することができる。さらに、分散処理フレームワークまたは他のクエリエンジンは、各コンピューティングクラスタ８２０内のホストコンピュータにインストールすることもできる。上述したように、分散処理フレームワークは、分散クエリフレームワークと同様に利用することができる。またはその代わりに、例えば、ある特定の構成では、ＡＰＡＣＨＥ  ＳＰＡＲＫ分散処理フレームワークを、コンピューティングクラスタ８２０内のホストコンピュータにインストールすることもできる。
【００５１】
いくつかの実施形態では、マネージクエリサービス１０４による使用に利用可能なインスタンス化及び構成されたコンピューティングクラスタ８２０が、ウォームクラスタプール８１０に追加される。様々な実施形態では、ウォームクラスタプール内のコンピューティングクラスタ８２０の数またはサイズを調整する必要があるかどうかに関して判定を行うことができる。ウォームクラスタプール８１０内のコンピューティングクラスタ８２０のパフォーマンスは、クラスタプールから受信したメトリック（複数可）８９０に基づいて監視することができる。次いで、ウォームクラスタプール８１０に割り当てられたコンピューティングクラスタ８２０の数及びウォームクラスタプール８１０内の各コンピューティングクラスタ８２０のサイズ（すなわち、各コンピューティングクラスタ８２０内のホストコンピュータの数）を調整することができる。そのような技法は、ウォームクラスタプール８１０内のコンピューティングクラスタ８２０の数及びサイズを継続的に最適化するために繰り返し実行することができる。
【００５２】
８８０に示されるように、いくつかの実施形態では、リソース管理サービスは、クラスタがクライアントデータを保持せずに別のクエリを処理する準備ができるように、クラスタに動作（例えば、再起動）を実行させることによって、クラスタ（複数可）８８０をスクラブし得る。例えば、リソース管理サービス２９０は、コンピューティングクラスタ８２０が、非アクティブ（例えば、コンピューティングクラスタ８２０が、所定の時間内にクエリを受信していない）であるかどうかを判定し得る。リソース管理サービス２９０が、コンピューティングクラスタ８２０が非アクティブであると判定した場合、コンピューティングクラスタ８２０は、クエリの送信者から切り離され得る。次いで、コンピューティングクラスタは、コンピューティングクラスタ８２０内のホストコンピュータによって利用されるメモリ（例えば、メインメモリまたはキャッシュ）または大容量ストレージデバイス（例えば、ディスクまたはソリッドステートストレージデバイス）からクエリの送信者に関連付けられたデータを削除することなどによって「スクラブ」され得る。次いで、コンピューティングクラスタ８２０は、他のクエリの処理に使用するために、ウォームクラスタプール８１０に戻され得る。いくつかの実施形態では、非アクティブであるいくつかのクラスタは、特定のシナリオでは特定のユーザから切り離されない可能性がある。これらのシナリオでは、ユーザは、それらの使用に利用可能なクラスタ８１０の専用ウォームプールを有し得る。
【００５３】
図２〜図８は、マネージクエリサービスを実装するために、複数の異なるサービスを利用するプロバイダネットワークの文脈で説明及び例示されてきたが、図２〜図８で例示及び説明した様々な構成要素は、リモートデータストアに及び／または異なるフォーマットで格納されたデータセットに関してクエリの実行を管理する他のマネージクエリ実行技術、システム、またはデバイスに容易に適用され得る。したがって、図２〜図８は、マネージクエリ実行を実施し得るシステムの他の実施形態に関して限定することを意図するものではない。図９は、いくつかの実施形態による、マネージクエリ実行を実施するための様々な方法及び技法を例示するハイレベルフローチャートである。様々な異なるシステム及びデバイスは、単独でまたは連動する、以下に説明される様々な方法及び技法を実施し得る。例えば、データ処理サービス及び／またはストレージサービスは、図２〜図８に関して上述したようなデータカタログサービス及びマネージクエリサービスと共に、様々な方法を実施し得る。あるいは、異なるシステム及びデバイスを組み合わせて、これらの方法を実施し得る。したがって、上記の例、及び例示された方法を実行するものとして参照される他の任意のシステムまたはデバイスは、他の異なる構成要素、モジュール、システム、またはシステム及びデバイスの構成に関して限定することを意図しない。
【００５４】
９１０に示されるように、様々な実施形態では、リモートデータストアに個別に格納されたデータセット（複数可）に送信された第１のクエリが受信され得る。例えば、一実施形態では、図４に関して上述した様々なタイプのインターフェース（プログラム、ユーザコンソール、ドライバなど）を介してクエリを受信し得る。クエリは、異なるクエリ言語、または構造化クエリ言語（ＳＱＬ）及び／Ｈｉｖｅクエリ言語（ＨＱＬ）を含むクエリ言語の仕様に従ってフォーマットされ得る。いくつかの実施形態では、クエリは、実行ヒント、利用するクエリ実行エンジンのタイプの指定、クエリ実行制限、またはクエリの実行を構成するための他のパラメータもしくはプロパティを含み得る。
【００５５】
９２０に示されるように、第１のクエリを実行するためのコンピューティングリソース（複数可）は、クエリを実行するように構成されたコンピューティングリソースのプールから受信され得る。上述したように、コンピューティングリソースのプールは、クエリを受信して処理する準備ができるように、ウォームであり得るか、そうでない場合は、以前に構成されたものであり得る。コンピューティングリソースは、ＰｒｅｓｔｏまたはＳｐａｒｋなどの様々な分散クエリ処理フレームワークを含む、様々なクエリ実行エンジンを使用して構成され得る。コンピューティングリソースは、識別されたプール（例えば、図１０に関して以下に説明するように、受信したクエリのタイプを実行するように構成されたコンピューティングリソースのプール）から利用可能なコンピューティングリソースをランダムに選択することによってプロビジョニングされ得るか、または、コンピューティングリソースのプロパティの分析に基づいて、確定的にプールのコンピューティングリソースを選択し得るか、第１のクエリの同じ送信者に代わって、別のクエリを既に実行しているコンピューティングリソース（例えば、同じクライアント、同じユーザ、同じアカウント、同じ資格情報など）を選択し得る。
【００５６】
９３０に示されるように、様々な実施形態では、第１のクエリは、リモートデータストア（複数可）に個別に格納されたデータセット（複数可）に関して第１のクエリを実行するために、プロビジョニングされたコンピューティングリソース（複数可）にルーティングされ得る。例えば、いくつかの実施形態では、要求はフォーマットされ、マネージクラスタエージェントに送信されて、実行するクエリ、クエリの実行のための構成パラメータ、またはクエリの結果を送信する場所または宛先が示され得る。少なくともいくつかの実施形態では、クエリはクエリエンジンに直接送信され得る。
【００５７】
図１０は、いくつかの実施形態による、クエリを実行するために、コンピューティングリソースのプールからコンピューティングリソースを選択するための様々な方法及び技法を示すハイレベルフローチャートである。１０１０に示されるように、様々な実施形態では、リモートデータストアに格納されたデータセット（複数可）に送信された第１のクエリが受信され得る。１０２０に示すように、コンピューティングリソース（複数可）は、クエリを実行するように選択することができるように構成されたコンピューティングリソースのプールから選択され得る。例えば、いくつかの実施形態では、クエリを実行するためのプールは、クエリのタイプ（例えば、読み取りクエリ、書き込みクエリ、スキーマ変更、または他のデータ定義言語（ＤＤＬ）ベースのクエリ）に従って決定され得る。いくつかの実施形態では、異なるサイズのコンピューティングリソースが利用可能であり得て、したがって、コンピューティングリソースは、クエリに対して最適な（またはクライアント指定のサイズ）で選択され得る。いくつかの実施形態では、異なるタイプのクエリエンジンは、異なるプール内の異なるコンピューティングリソースに実装され得る。リソースは、クエリエンジンのタイプに基づいて選択され得る（例えば、読み取りクエリでは、メモリベースのクエリエンジンを選択することになり得て、書き込みクエリでは、メモリ及びディスク動作可能なクエリエンジンを選択することになり得る）。少なくともいくつかの実施形態では、選択されたリソースは、受信されたクエリを実行するためのウォームクラスタプールとして識別されたリソースプールからのリソースであり得る。いくつかの実施形態では、クエリを実行するためのコンピューティングリソース（例えば、コンピューティングクラスタ）の選択は、限定されないが、同じリクエスタによって送信された以前のクエリ、必要なクエリパフォーマンス、ユーザ設定、クエリされるデータ量、列統計、経験的データ、クエリを実行するために利用されるコンピューティングリソースの価格、クラスタ１０６のパフォーマンスに関連する他のタイプの統計などを含むいくつかの要素に基づくことができる。いくつかの実施形態では、コンピューティングリソースは、選択されたコンピューティングリソースへの同じ送信者からの受信された後続クエリのために再び選択され得る。
【００５８】
１０３０に示されるように、選択されると、選択されたコンピューティングクラスタは、コンピューティングリソース（例えば、ウォームクラスタプールからのクラスタ）のプールから削除され得る。１０４０に示すように、様々な実施形態では、削除されたコンピューティングリソース（複数可）は、第１のクエリに（または、いくつかの実施形態では、送信者からのその後の要求が、同じコンピューティングリソースに割り当てられ得るように、第１のクエリの送信者に）関連付けられ得る。コンピューティングリソースは、ユーザが管理コンソールにログインしたときなど、別の時点でユーザに関連付けることもできる。１０５０に示されるように、次いで、様々な実施形態では、第１のクエリは、第１のクエリと関連付けられたコンピューティングリソース（複数可）にルーティングされ得る。１０６０に示されるように、様々な実施形態では、関連付けられたコンピューティングリソースで生成されたクエリの結果を提供することができる。例えば、一実施形態では、結果は、クエリ結果に対して指定された宛先または場所に（例えば、クライアント要求で）送信することができる。結果は、（例えば、データストレージサービス２３０のようなデータストアに）ストリームバックされるかまたは集約され、クエリを受信した同じインターフェース（例えば、プログラム、グラフィック、ドライバ、コンソールなど）を介してバッチ（またはページ付けされた結果などのバッチ）として提供され得る。
【００５９】
図１１は、いくつかの実施形態による、クエリ実行制限に関してクエリの実行を監視するための様々な方法及び技法を示すハイレベルフローチャートである。１１１０に示されるように、様々な実施形態では、クエリに関連付けられたコンピューティングリソース（複数可）のクエリ実行メトリック（複数可）を監視し得る。例えば、一実施形態では、クエリ実行メトリクスは、利用メトリクスまたは消費メトリクス（例えば、消費されたＩ／Ｏ帯域幅、消費されたプロセッサ容量、消費されたネットワーク帯域幅）を含み得る。一実施形態では、クエリ実行メトリクスは、（例えば、作業単位、金額単位、時間単位などに関する）利用メトリクスまたは消費メトリクスから算出された費用値とし得る。
【００６０】
１１２０に示されるように、いくつかの実施形態では、監視されたクエリ実行メトリクスは、クエリ実行制限に関して判定され得る。例えば、一実施形態では、クエリは、クエリステートメントのヒント、コメント、または他の「実行不可能」部分として実行制限を含み得て、実行制限はクエリに適用するための制限を示し得る。いくつかの実施形態では、既定の費用、単位、利用、または他の消費制限が適用され得るか、または他の実施形態では、実行時間制限が適用され得る。様々な実施形態では、１１２０からの肯定出口によって示されるように、クエリ実行制限を超えた場合、クエリの実行はコンピューティングリソース（複数可）で停止され得る。例えば、部分的な結果または他の完了した作業がクエリ結果として提供され得る（いくつかの実施形態では、クエリ実行制限のために結果が部分的または停止したクエリであることを示し得る）。リソース上のエージェントまたは構成要素（例えば、図７のマネージクエリエージェント７２２）は、クエリ実行の監視及び／または停止を実行し得るか、または（例えば、図３のクエリトラッカ３４０の）個別の監視構成要素は、クエリ実行メトリックを監視し、クエリの実行を停止させ得る。
【００６１】
図１２は、いくつかの実施形態による、リモートデータストアに格納されたデータのスキーマを格納するための様々な方法及び技法を示すハイレベルフローチャートである。１２１０に示すように、いくつかの実施形態では、リモートデータストアに格納されているデータの場所を登録し得る。例えば、一実施形態では、データセットの場所、名前、アクセス制御、またはデータにアクセスために必要な他の情報を示す、一実施形態では、ファイルパス、オブジェクト識別子、データストレージサービス、ネットワークアドレス、または他の識別子を提供し得る。１２２０に示されるように、いくつかの実施形態では、テーブル定義はデータのスキーマの一部としてデータ内のフィールド（複数可）にマッピングし得る。例えば、整数、文字列、浮動小数点数、または文字などの標準データ型、日付、ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ（ＵＲＬ）、性別などのカスタムまたは複合データ型は、テーブルの様々な列にマッピングし得る。
【００６２】
１２３０に示されるように、様々な実施形態では、データのフォーマットはデータのスキーマの一部として指定し得る。例えば、一実施形態では、限定されないが、Ａｖｒｏ、ＣＳＶ、ＴＳＶ、Ｐａｒｑｕｅｔ、ＯＲＣ、ＪＳＯＮ、Ａｐａｃｈｅ  Ｗｅｂ  Ｓｅｒｖｅｒログ、カスタム区切り文字を含み、データフォーマットのシリアライザ／デシリアライザを含む、データの保存方法に関する様々なデータフォーマットは、要求で指定し得る。１２４０に示されるように、データのパーティションは、データのスキーマの一部として指定し得る。例えば、一実施形態では、データは、時間または他の次元に基づいてパーティション内のリモートデータストアに格納され得る。１２５０に示されるように、様々な実施形態では、スキーマはメタデータストアに格納され得る。例えば、上記の技法を実行するマネージクエリサービスは、データ登録サービス２８０のためのインターフェースを利用するテーブル定義または他のスキーマを格納するために、データ登録ＵＩ４４４などのインターフェースを利用し得る。いくつかの実施形態では、スキーマは、ＡＰＡＣＨＥ  ＨＩＶＥメタデータストアに従って格納され得る。しかし、他の実施形態では、他のタイプのフォーマットまたはメタデータストアを利用することができる。いくつかの実施形態では、メタデータストアに格納されると、スキーマは、登録されたデータに送信されたクエリを処理するために利用可能にされ得る。例えば、一実施形態では、データカタログサービス２８０は、マネージクエリサービスによって利用されるコンピューティングクラスタに利用可能なデータのためのテーブル定義を作成することもできる。
【００６３】
本明細書に記載の方法は、様々な実施形態では、ハードウェアとソフトウェアの任意の組み合わせによって実施し得る。例えば、一実施形態では、方法は、プロセッサに結合されたコンピュータ可読記憶媒体に格納されたプログラム命令を実行する１つまたは複数のプロセッサを含むコンピュータシステム（例えば、図１５のようなコンピュータシステム）によって実施され得る。プログラム命令は、本明細書に記載の機能（例えば、本明細書に記載のネットワークベースの仮想コンピューティングリソースプロバイダを実装する様々なサーバ及び他の構成要素の機能）を実装するように構成され得る。本明細書で図に例示され、説明される様々な方法は、方法の例示的な実施形態を表す。任意の方法の順序は変更され得て、様々な要素の追加、再順位付け、組み合わせ、除外、変更などがされ得る。
【００６４】
図１３は、いくつかの実施形態による、本明細書に記載の機能の態様を実施することができるサービスプロバイダネットワークを含む、例示的な動作環境を示す論理ブロック図である。上述したように、サービスプロバイダネットワーク２００は、永続的または必要に応じて、ＶＭインスタンス及びストレージなどのコンピューティングリソースを提供することができる。他のタイプの機能のうちで、サービスプロバイダネットワーク２００によって提供されるコンピューティングリソースは、上述した様々なサービスを実施するために利用することができる。また、上述したように、サービスプロバイダネットワーク２００によって提供されるコンピューティングリソースは、ＶＭインスタンスなどのデータ処理リソース、データストレージリソース、ネットワーキングリソース、データ通信リソース、ネットワークサービスなどの様々なタイプのコンピューティングリソースを含むことができる。
【００６５】
サービスプロバイダネットワーク２００によって提供される各タイプのコンピューティングリソースは、汎用とすることができるか、または、いくつかの特定の構成で利用可能とすることができる。例えば、データ処理リソースは、いくつかの様々な構成の物理コンピュータまたはＶＭインスタンスとして利用可能とすることができる。ＶＭインスタンスは、ウェブサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバ、上述のサービスの一部または全部、及び／または他のタイプのプログラムを含む、アプリケーションを実行することができる。ＶＭインスタンスはまた、上述した方法でコンピューティングクラスタに構成することもできる。データストレージリソースは、ファイルストレージデバイス、ブロックストレージデバイスなどを含むことができる。サービスプロバイダネットワーク２００はまた、本明細書で具体的に述べられていない他のタイプのコンピューティングリソースを提供することもできる。
【００６６】
サービスプロバイダネットワークによって提供されるコンピューティングリソースは、いくつかの実施形態では、１つまたは複数のデータセンター１３０４Ａ〜１３０４Ｎ（本明細書では「１つのデータセンター１３０４」と単数で、または「複数のデータセンター１３０４」と複数で呼ぶことがある）によって実装され得る。データセンター１３０４は、コンピュータシステム及び関連する構成要素を収容し操作するために利用される設備である。データセンター１３０４は通常、冗長電源及びバックアップ電源、通信、冷却、及びセキュリティシステムを含む。データセンター１３０４は、地理的に離れた場所に配置することもできる。本明細書に開示される技術を実装するために、利用することができるデータセンター１３０４のための１つの例示的な構成は、図１４に関して以下に説明される。
【００６７】
サービスプロバイダネットワーク２００の顧客及び他のユーザは、ネットワーク１３０２を介してサービスプロバイダネットワーク２００によって提供されるコンピューティングリソースにアクセスすることができ、ネットワーク１３０２は、インターネット、イントラネットまたはインターネットサービスプロバイダ（「ＩＳＰ」）ネットワークなどの広域通信ネットワーク（「ＷＡＮ」）、またはそのようなネットワークの組み合わせとすることができる。例えば、限定されないが、サービスプロバイダネットワーク２００の顧客または他のユーザによって操作されるコンピューティングデバイス１３００は、ネットワーク１３０２を介してサービスプロバイダネットワーク２００にアクセスするために利用することができる。データセンター１３０４を、遠隔の顧客及び他のユーザに接続する当技術分野で既知のローカルエリアネットワーク（「ＬＡＮ」）、インターネット、または任意の他のネットワーキングトポロジを利用することができることを理解されたい。また、そのようなネットワークの組み合わせも利用できることを理解されたい。
【００６８】
図１４は、様々な実施形態による、本明細書に開示される技法の態様を実施するために利用することができるデータセンターのための構成を例示する論理ブロック図であり、いくつかの実施形態では、マネージクエリ実行サービス２７０などのマネージクエリ実行を提供するために、本明細書に開示される技術の態様を実施するデータセンター１３０４のための１つの構成を示すコンピューティングシステム図である。図１４に示される例示的なデータセンター１３０４は、コンピューティングリソース１４０４Ａ〜１４０４Ｅを提供するためのいくつかのサーバコンピュータ１４０２Ａ〜１４０２Ｆ（本明細書では「１つのデータセンター１４０２」と単数で、または「複数のデータセンター１４０２」と複数で呼ぶことがある）を含む。
【００６９】
サーバコンピュータ１４０２は、本明細書に記載のコンピューティングリソース（コンピューティングリソース１４０４Ａ〜１４０４Ｅとして図１４に示す）を提供するように適切に構成された標準のタワー型、ラックマウント型、またはブレード型サーバコンピュータとすることができる。上述したように、プロバイダネットワーク２００によって提供されるコンピューティングリソースは、ＶＭインスタンスまたはハードウェアコンピューティングシステム、コンピューティングクラスタ、データストレージリソース、データベースリソース、ネットワーキングリソースなどのデータ処理リソースとすることができる。サーバ１４０２のうちのいくつかは、コンピューティングリソースをインスタンス化及び／または管理することが可能なリソースマネージャ１４０６を実行することもできる。例えば、ＶＭインスタンスの場合、リソースマネージャ１４０６はハイパーバイザとすることができる、または別のタイプのプログラムが単一のサーバコンピュータ１４０２上で複数のＶＭインスタンスの実行を可能にし得る。データセンター１３０４内のサーバコンピュータ１４０２は、ネットワークサービス及び他のタイプのサービスも提供することができ、そのうちのいくつかは、図２に関して上記で詳細に説明されている。
【００７０】
図１４に示されるデータセンター１３０４はまた、上述したソフトウェア構成要素の一部または全部を実行することができるサーバコンピュータ１４０２Ｆを含む。例えば、限定されないが、サーバコンピュータ１４０２Ｆは、マネージクエリサービス２７０、データカタログサービス２８０、リソース管理サービス２９０、及び（例えば、上述した）他のサービス１４１０などのプロバイダネットワーク２００の異なるサービスを提供するための様々な構成要素及び／または上述した他のソフトウェア構成要素を実行できる。サーバコンピュータ１４０２Ｆはまた、他の構成要素を実行し、及び／または本明細書に記載の機能の一部または全部を提供するためのデータを格納することもできる。これに関連して、サーバコンピュータ１４０２Ｆ上で実行されるように図１４に例示されるサービスは、様々な構成でデータセンター１３０４内の他の多くの物理サーバまたは仮想サーバ上で実行することができることを理解されたい。
【００７１】
図１４に示されるデータセンター１３０４の例では、適切なＬＡＮ１４０６も、サーバコンピュータ１４０２Ａ〜１４０２Ｆを相互接続するために利用される。ＬＡＮ１４０６は、図１３に示すネットワーク１３０２にも接続される。本明細書に記載の構成及びネットワークトポロジは非常に単純化されており、本明細書に開示される様々なコンピューティングシステムを相互接続し、上述した機能を提供するために、さらに多くのコンピューティングシステム、ソフトウェア構成要素、ネットワーク、及びネットワーキングデバイスを利用できることを理解されたい。適切な負荷分散デバイスまたは他のタイプのネットワークインフラストラクチャ構成要素は、各データセンター１３０４Ａ〜１３０４Ｎ間、各データセンター１３０４内の各サーバコンピュータ１４０２Ａ〜１４０２Ｆ間、及び、潜在的に、各データセンター１３０４内のコンピューティングリソース間で、負荷のバランスをとるためにも利用することができる。図１４を参照して説明したデータセンター１３０４の構成は単なる例示であり、他の実施態様を利用することができることを理解されたい。
【００７２】
本明細書に記載されているようなマネージクエリ実行の実施形態は、様々な他のデバイスと相互作用し得る、１つまたは複数のコンピュータシステム上で実行され得る。そのようなコンピュータシステムの１つが図１５に示されている。異なる実施形態では、コンピュータシステム２０００は、限定されないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、またはネットブックコンピュータ、メインフレームコンピュータシステム、携帯情報端末、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータなどの周辺機器、または一般的な任意のタイプのコンピューティングデバイス、コンピューティングノード、コンピュートノード、コンピューティングシステム、コンピュートシステム、または電子デバイスを含む、任意の様々なタイプのデバイスとし得る。
【００７３】
例示される実施形態では、コンピュータシステム２０００は、入力／出力（Ｉ／Ｏ）インターフェース２０３０を介して、システムメモリ２０２０に結合された１つまたは複数のプロセッサ２０１０を含む。コンピュータシステム２０００は、Ｉ／Ｏインターフェース２０３０に結合されたネットワークインターフェース２０４０、及びカーソル制御デバイス２０６０、キーボード２０７０、及びディスプレイ（複数可）２０８０などの１つまたは複数の入力／出力デバイス２０５０をさらに含む。ディスプレイ（複数可）２０８０は、標準のコンピュータモニタ（複数可）及び／または他のディスプレイシステム、技術またはデバイスを含み得る。少なくともいくつかの実装態様では、入力／出力デバイス２０５０は、ユーザがスタイラス型デバイス及び／または１つまたは複数の数字を介して入力を入力するためのパッドまたはタブレットなどのタッチまたはマルチタッチ対応デバイスも含み得る。いくつかの実施形態では、実施形態は、コンピュータシステム２０００の単一のインスタンスを使用して実施され得るが、他の実施形態では、複数のそのようなシステム、またはコンピュータシステム２０００を構成する複数のノードが、実施形態の異なる部分またはインスタンスをホストし得ることが考えられる。例えば、一実施形態では、いくつかの要素は、他の要素を実装するノードとは異なるコンピュータシステム２０００の１つまたは複数のノードを介して実装され得る。
【００７４】
様々な実施形態では、コンピュータシステム２０００は、１つのプロセッサ２０１０を含むユニプロセッサシステム、またはいくつかのプロセッサ２０１０（例えば、２つ、４つ、８つ、または別の適切な数）を含むマルチプロセッサシステムであり得る。プロセッサ２０１０は、命令を実行することが可能な任意の適切なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ２０１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡ、または任意の他の適切なＩＳＡなどの様々な命令セットアーキテクチャ（ＩＳＡ）のうちのいずれかを実装する、汎用または埋め込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ２０１０の各々は、同じＩＳＡを一般的に実装し得るが、必要ではない。
【００７５】
いくつかの実施形態では、少なくとも１つのプロセッサ２０１０はグラフィック処理装置であり得る。グラフィック処理装置またはＧＰＵは、パーソナルコンピュータ、ワークステーション、ゲームコンソールまたは他のコンピューティングデバイスもしくは電子デバイス用の専用グラフィックレンダリングデバイスと考えられ得る。現代のＧＰＵは、コンピュータグラフィックスを操作し表示するのに非常に効率的であり得て、それらの高度に並列な構造は、複雑なグラフィカルアルゴリズムの範囲に関しては、典型的なＣＰＵよりも効果的であり得る。例えば、グラフィックプロセッサは、いくつかのグラフィックプリミティブ操作を、ホスト中央処理装置（ＣＰＵ）を使用して画面に直接描画するよりもはるかに速く実行する方法で実施し得る。様々な実施形態では、グラフィックレンダリングは、少なくとも部分的に、そのようなＧＰＵのうちの１つでの実行、または２つ以上のそのようなＧＰＵでの並列実行のために構成されたプログラム命令によって実施され得る。ＧＰＵ（複数可）は、プログラマがＧＰＵ（複数可）の機能を呼び出すことを可能にする１つまたは複数のアプリケーションプログラマインターフェース（ＡＰＩ）を実装し得る。適切なＧＰＵは、ＮＶＩＤＩＡ  Ｃｏｒｐｏｒａｔｉｏｎ、ＡＴＩ  Ｔｅｃｈｎｏｌｏｇｉｅｓ（ＡＭＤ）などのベンダから市販され得る。
【００７６】
システムメモリ２０２０は、プロセッサ２０１０によってアクセス可能なプログラム命令及び／またはデータを格納し得る。様々な実施形態では、システムメモリ２０２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。例示される実施形態では、上述のそれらのような所望の機能を実装するプログラム命令及びデータは、それぞれプログラム命令２０２５及びデータストレージ２０３５として、システムメモリ２０２０内に格納されることが示される。他の実施形態では、プログラム命令及び／またはデータは、異なるタイプのコンピュータアクセス可能媒体上、またはシステムメモリ２０２０もしくはコンピュータシステム２０００とは別の同様の媒体上で受信、送信または格納され得る。一般的に言えば、非一時的コンピュータ可読記憶媒体は、Ｉ／Ｏインターフェース２０３０を介してコンピュータシステム２０００に結合された磁気媒体または光学媒体、例えば、ディスクまたはＣＤ／ＤＶＤ−ＲＯＭなどの記憶媒体またはメモリ媒体を含み得る。コンピュータ可読媒体を介して格納されたプログラム命令及びデータは、ネットワークインターフェース２０４０を介して実施され得るような、ネットワーク及び／または無線リンクなどの通信媒体を介して伝達され得る、電気信号、電磁信号、またはデジタル信号などの伝送媒体または信号によって伝送され得る。
【００７７】
一実施形態では、Ｉ／Ｏインターフェース２０３０は、プロセッサ２０１０、システムメモリ２０２０、及びネットワークインターフェース２０４０または入力／出力デバイス２０５０などの他の周辺インターフェースを含む、デバイス内の任意の周辺デバイスの間のＩ／Ｏトラフィックを調整し得る。いくつかの実施形態では、Ｉ／Ｏインターフェース２０３０は、ある構成要素（例えば、システムメモリ２０２０）からのデータ信号を、別の構成要素（例えば、プロセッサ２０１０）による使用に適したフォーマットに変換するために、任意の必要なプロトコル、タイミング、または他のデータ変換を実行し得る。いくつかの実施形態では、Ｉ／Ｏインターフェース２０３０は、例えば、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス規格、またはユニバーサルシリアルバス（ＵＳＢ）規格の変形など、様々なタイプの周辺バスを通じて取設されるデバイスに対するサポートを含み得る。いくつかの実施形態では、Ｉ／Ｏインターフェース２０３０の機能は、例えば、ノースブリッジ及びサウスブリッジなどの２つ以上の個別の構成要素に分割され得る。さらに、いくつかの実施形態では、システムメモリ２０２０へのインターフェースなどのＩ／Ｏインターフェース２０３０の機能性の一部または全部は、プロセッサ２０１０に直接組み込まれ得る。
【００７８】
ネットワークインターフェース２０４０は、コンピュータシステム２０００と他のコンピュータシステムなどのネットワークに接続された他のデバイスとの間、またはコンピュータシステム２０００のノード間でデータを交換することを可能にし得る。様々な実施形態では、ネットワークインターフェース２０４０は、例えば、任意の適切なタイプのネットワークなどの有線または無線の一般データネットワークを介した、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信／テレフォニネットワークを介した、ファイバチャネルＳＡＮなどのストレージエリアネットワークを介した、または任意の他の適切なタイプのネットワーク及び／またはプロトコルを介した通信をサポートし得る。
【００７９】
入力／出力デバイス２０５０は、いくつかの実施形態では、１つまたは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、走査デバイス、音声または光学認識デバイス、または１つまたは複数のコンピュータシステム２０００によるデータの入力または取得に適した任意の他のデバイスを含み得る。複数の入力／出力デバイス２０５０は、コンピュータシステム２０００内に存在し得るか、またはコンピュータシステム２０００の様々なノード上に分散され得る。いくつかの実施形態では、類似の入力／出力デバイスは、コンピュータシステム２０００とは分離され得て、ネットワークインターフェース２０４０を介するなど、有線または無線接続を通じてコンピュータシステム２０００の１つまたは複数のノードと相互作用し得る。
【００８０】
図１５に示されるように、メモリ２０２０は、プログラム命令２０２５を含み得て、本明細書に記載されているような様々な方法及び技法、ならびにプログラム命令２０２５によってアクセス可能な様々なデータを含む、データストレージ２０３５を実装し得る。一実施形態では、プログラム命令２０２５は、本明細書に記載されるような、及び図に例示されるような実施形態のソフトウェア要素を含み得る。データストレージ２０３５は、実施形態で使用され得るデータを含み得る。他の実施形態では、他のまたは異なるソフトウェア要素及びデータが含まれ得る。
【００８１】
コンピュータシステム２０００は単なる例示であり、本明細書に記載されるような技術の範囲を限定することを意図するものではないことを当業者なら理解するであろう。具体的には、コンピュータシステム及びデバイスは、コンピュータ、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、またはネットブックコンピュータ、メインフレームコンピュータシステム、携帯情報端末、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、ネットワークデバイス、インターネット機器、ＰＤＡ、ワイヤレス電話、ポケットベル、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータなどの周辺機器、または一般的な任意のタイプのコンピューティングデバイスまたは電子デバイスなどを含む、指示された機能を実行することができるハードウェアまたはソフトウェアの任意の組み合わせを含み得る。コンピュータシステム２０００はまた、例示されていない他のデバイスに接続され得るか、またはその代わりに、スタンドアロンシステムとして動作し得る。さらに、例示された構成要素によって提供される機能は、いくつかの実施形態では、より少ない構成要素に組み合わされ得るか、または追加の構成要素に分散され得る。同様に、いくつかの実施形態では、例示された構成要素のいくつかの機能は提供され得ない、及び／または他の追加の機能が利用可能であり得る。
【００８２】
様々なアイテムが使用されている間に、メモリまたはストレージに格納されるように示されているが、これらのアイテムまたはその一部は、メモリ管理及びデータの完全性の目的で、メモリと他のストレージデバイスとの間で送信され得ることも当業者なら理解するであろう。あるいは、他の実施形態では、ソフトウェア構成要素の一部または全部が別のデバイス上のメモリ内で実行され、コンピュータ間通信を介して例示されたコンピュータシステムと通信し得る。システム構成要素またはデータ構造の一部または全部はまた、コンピュータアクセス可能媒体または適切なドライブによって読み取られる携帯物品に（例えば、命令または構造化データとして）格納され得て、その様々な実施例が上述される。いくつかの実施形態では、コンピュータシステム２０００とは別の非一時的なコンピュータアクセス可能媒体に格納された命令は、ネットワーク及び／または無線リンクなどの通信媒体を介して伝送される、伝送媒体または電気信号、電磁信号、もしくはデジタル信号などの信号を介してコンピュータシステム２０００に送信され得る。様々な実施形態は、命令の受信、送信、もしくは格納、及び／またはコンピュータアクセス可能媒体に関する前述の説明に従って実行されたデータをさらに含み得る。したがって、本発明は、他のコンピュータシステム構成で実施され得る。
【００８３】
本明細書に記載の分散システムの実施形態のいずれか、またはそれらの構成要素のいずれかが、１つまたは複数のウェブサービスとして実装され得ることに留意されたい。例えば、データウェアハウスシステム内のリーダーノードは、データストレージサービス及び／またはデータベースサービスを、ネットワークベースのサービスとしてクライアントに提示し得る。いくつかの実施形態では、ネットワークベースのサービスは、ネットワークを介した相互運用可能な機器同士の相互作用をサポートするように設計されたソフトウェア及び／またはハードウェアシステムによって実装され得る。ネットワークベースのサービスは、ウェブサービス記述言語（ＷＳＤＬ）などの機械処理可能なフォーマットで記述されたインターフェースを有し得る。他のシステムは、ネットワークベースのサービスのインターフェースの記述によって規定された方法でウェブサービスと相互作用し得る。例えば、ネットワークベースのサービスは、他のシステムが呼び出し得る様々な操作を定義し得て、様々な操作を要求するときに、他のシステムが準拠することが予想され得る特定のアプリケーションプログラミングインターフェース（ＡＰＩ）を定義し得る。
【００８４】
様々な実施形態では、ネットワークベースのサービスは、ネットワークベースのサービス要求に関連付けられたパラメータ及び／またはデータを含むメッセージの使用によって要求または呼び出され得る。そのようなメッセージは、拡張マークアップ言語（ＸＭＬ）などの特定のマークアップ言語に従ってフォーマットされ得る、及び／またはシンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）などのプロトコルを使用してカプセル化され得る。ウェブサービス要求を実行するために、ネットワークベースのサービスクライアントは、ハイパーテキストトランスファープロトコル（ＨＴＴＰ）などのインターネットベースのアプリケーション層転送プロトコルを使用して、要求を含むメッセージを組み立て、そのメッセージをウェブサービスに対応するアドレス指定可能なエンドポイント（例えば、Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ（ＵＲＬ））に伝達し得る。
【００８５】
いくつかの実施形態では、ウェブサービスは、メッセージベースの技法ではなく、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（「ＲＥＳＴｆｕｌ」）技法を使用して実装され得る。例えば、ＲＥＳＴｆｕｌ技法に従って実装されたウェブサービスは、ＳＯＡＰメッセージ内にカプセル化されるのではなく、ＰＵＴ、ＧＥＴ、またはＤＥＬＥＴＥなどのＨＴＴＰメソッド内に含まれるパラメータによって呼び出し得る。
【００８６】
本明細書で図に例示され、説明される様々な方法は、方法の例示的な実施形態を表す。本方法は、ソフトウェア、ハードウェア、またはこれらの組み合わせで実装され得る。方法の順序は変更され得て、様々な要素の、追加、再順位付け、組み合わせ、除外、変更などがされ得る。
【００８７】
本開示の利点を有する当業者に明白であるように、様々な変形及び変更が行われ得る。本発明は、全てのそのような変形及び変更を含むことを意図しており、したがって、上記説明が限定的な意味ではなく、例示的であると考えるべきである。
【図１】
2019534496.tif 000003
【図２】
2019534496.tif 000004
【図３】
2019534496.tif 000005
【図４】
2019534496.tif 000006
【図５】
2019534496.tif 000007
【図６】
2019534496.tif 000008
【図７】
2019534496.tif 000009
【図８】
2019534496.tif 000010
【図９】
2019534496.tif 000011
【図１０】
2019534496.tif 000012
【図１１】
2019534496.tif 000013
【図１２】
2019534496.tif 000014
【図１３】
2019534496.tif 000015
【図１４】
2019534496.tif 000016
【図１５】
2019534496.tif 000017
【国際調査報告】
2019534496.tif 000018
2019534496.tif 000019
2019534496.tif 000020