JP6750102B2 - マネージクエリサービス - Google Patents

マネージクエリサービス Download PDF

Info

Publication number
JP6750102B2
JP6750102B2 JP2019511461A JP2019511461A JP6750102B2 JP 6750102 B2 JP6750102 B2 JP 6750102B2 JP 2019511461 A JP2019511461 A JP 2019511461A JP 2019511461 A JP2019511461 A JP 2019511461A JP 6750102 B2 JP6750102 B2 JP 6750102B2
Authority
JP
Japan
Prior art keywords
query
service
data
computing
schema
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019511461A
Other languages
English (en)
Other versions
JP2019534496A (ja
Inventor
カラスル,バルガヴァ・ラム
ファン,ジアン
ウー,シン
ユエ,ユアンユアン
ガワンデ,プラティック・バグワット
ホジャニン,テュルカイ・メルト
デントン,ジェイソン・ダグラス
ナタリ,ルカ
パタク,ラーフル・シャルマ
シンハ,アビシェーク・ラジニカーント
マル,スミートクマール・ヴェニクラル
タンガミヤン,アルメン
ジアン,ユフェン
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2019534496A publication Critical patent/JP2019534496A/ja
Application granted granted Critical
Publication of JP6750102B2 publication Critical patent/JP6750102B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24549Run-time optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Operations Research (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)
  • Debugging And Monitoring (AREA)
  • Paper (AREA)
  • Orthopedics, Nursing, And Contraception (AREA)

Description

大量のデータをクエリするためのコンピューティングシステムは、実施及び維持が非常に困難になることがある。例えば、多くのシナリオでは、クエリ操作に使用されるインフラストラクチャ(例えば、サーバコンピュータ、ストレージデバイス、ネットワーキングデバイスなど)を最初に作成して構成する必要がある。次いで、抽出、変換、及びロード(「ETL」)操作を実行して、ソースシステムからデータを取得し、データストレージにデータを配置する必要があり得る。クエリ操作を実行するデータベース管理システム(「DBMS」)をインストール、構成、及び維持することは、複雑で時間がかかる可能性もある。さらに、多くのDBMSは、非常に大きなデータセットを高性能にクエリするのには適していない。
いくつかのシナリオでは、大きなデータセットを高性能にクエリするために、コンピューティングクラスタを利用することができる。例えば、コンピューティングクラスタは、大きなデータセットの分散クエリを実行するために、分散クエリフレームワークをそれぞれ実行する多数のノードを有することができる。しかし、そのようなコンピューティングクラスタ及び分散クエリフレームワークも、実施、構成、及び維持が困難である。さらに、このようなコンピューティングクラスタの不適切な構成及び/または使用は、プロセッサ、ストレージ、ネットワーク、及び、潜在的に、他のタイプのコンピューティングリソースの最適ではない利用をもたらす可能性がある。
本明細書で行われた開示は、これらの考慮事項及び他の考慮事項に関して提示される。
いくつかの実施形態による、複数のデータ処理環境のための集中データストアの論理ブロック図を示す。 いくつかの実施形態による、マネージクエリサービスを提供するプロバイダネットワークを示す論理ブロック図である。 いくつかの実施形態による、集中データストアに格納されたデータにアクセスするための構造データを提供するデータカタログを動的に生成するデータカタログサービスを示す論理ブロック図である。 いくつかの実施形態による、クライアントとマネージクエリサービスとの間の相互作用を示す図である。 いくつかの実施形態による、クエリのマネージ実行のためのシーケンス図である。 いくつかの実施形態による、リソースプランナを利用したクエリのマネージ実行のシーケンス図である。 いくつかの実施形態による、マネージクエリ実行の一部としてクエリを処理するクラスタを示す論理ブロック図である。 いくつかの実施形態による、リソース管理サービスとリソースのプールとの間の相互作用を示す論理ブロック図である。 いくつかの実施形態による、マネージクエリ実行を実施するための様々な方法及び技法を例示するハイレベルフローチャートである。 いくつかの実施形態による、クエリを実行するために、コンピューティングリソースのプールからコンピューティングリソースを選択するための様々な方法及び技法を示すハイレベルフローチャートである。 いくつかの実施形態による、クエリ実行制限に関してクエリの実行を監視するための様々な方法及び技法を示すハイレベルフローチャートである。 いくつかの実施形態による、リモートデータストアに格納されたデータのスキーマを格納するための様々な方法及び技法を示すハイレベルフローチャートである。 いくつかの実施形態による、本明細書に記載の機能の態様を実施するように構成することができるサービスプロバイダネットワークを含む、例示的な動作環境を示す論理ブロック図である。 いくつかの実施形態による、本明細書に開示される技法の態様を実施するために利用することができるデータセンターのための構成を例示する論理ブロック図である。 いくつかの実施形態による、本明細書に記載の様々な方法、技法、及びシステムを実施するように構成された例示的なシステムを示す。
いくつかの実施形態及び例示の図面の例として実施形態が本明細書中に記載されているが、当業者は、実施形態が、記載された実施形態または図面に限定されないことを認識するであろう。それらについての図面及び詳細な説明は、実施形態を特定の開示される形式に限定することを意図しておらず、逆に、その意図は、添付の特許請求の範囲によって定義される趣旨及び範囲内にある全ての修正物、均等物、及び代替物を網羅することを理解されたい。本明細書中で使用される表題は、構成を目的としているにすぎず、説明または特許請求の範囲を限定するために使用されることを意味していない。本出願全体を通して使用されるように、単語「may」は、必須の意味(すなわち、〜しなければならないを意味する)ではなく、許容的な意味(すなわち、〜する可能性があるを意味する)で使用される。同様に、単語「含む(include)」、「含む(including)」、及び「含む(includes)」は、含むが、それに限定しないことを意味する。
また、第1、第2などの用語は、様々な要素を説明するために本明細書で使用され得るが、これらの要素は、これらの用語によって限定されるべきではないことも理解されよう。これらの用語は、ある要素を別の要素と区別するためだけに使用される。例えば、本発明の範囲から逸脱することなく、第1の接触を第2の接触と呼ぶことができ、同様に、第2の接触を第1の接触と呼ぶことができる。第1の接触と第2の接触は共に接触であるが、それらは同一の接触ではない。
マネージクエリ実行の様々な実施形態が、本明細書に記載されている。これらの技法の実施により、様々な実施形態で、大きなデータセットでも高性能にクエリすることを可能にする、ネットワーク化されたマネージクエリサービスを提供することができる。さらに、開示される技法のいくつかの実施形態は、コンピューティングクラスタなどのインフラストラクチャを管理せず、データベースまたはコンピューティングクラスタにクエリされるデータをロードせず、及びETLジョブを実行せずに大きなデータセットをクエリすることを可能にする。このようにして、プロセッサ、ストレージ、ネットワーク帯域幅、及び他のタイプのコンピューティングリソースをより効率的に利用することができる。本明細書に具体的に特定されたもの以外の技法的利益は、開示された技法の実施を通じて実現することができる。
一実施形態では、マネージクエリサービスは、サービスプロバイダネットワーク内で実行される。一実施形態では、マネージクエリサービスは、インフラストラクチャを管理せずに、及びETL操作を実行せずに、データをクエリするための機能を提供し得る。例えば、一実施形態では、マネージクエリサービスは、リモートデータに対してクエリを実行するためにコンピューティングクラスタを利用し得る。一実施形態では、コンピューティングクラスタなどのコンピューティングリソースは、マネージクエリサービスでクエリ要求を受信する前に、クエリを処理するようにインスタンス化及び構成することができる。一実施形態では、マネージクエリサービスによる使用に利用可能であるインスタンス化及び構成されたコンピューティングリソースは、次いで、コンピューティングリソースのプールに追加され得る。
一実施形態では、マネージクエリサービスを利用するために、ユーザはクエリされるデータを、ネットワークストレージサービスによって提供される場所にコピーすることができる。いくつかの実施形態では、データは多くのタイプのフォーマットで格納することができる。様々な実施形態では、1つまたは複数のテーブル定義、またはデータの他のスキーマ情報を定義するためのユーザインターフェース(「UI」)も提供される。例えば、一実施形態では、テーブル定義または他のスキーマは、ネットワークデータカタログサービスによって格納され得る。様々な実施形態では、データカタログサービスは、テーブル定義をマネージクエリサービスによって利用されるコンピューティングクラスタに利用可能にすることができる。
いくつかの実施形態では、データをクエリするための要求をユーザから受信するために、クエリUIを提供することもできる。いくつかの実施形態では、クエリが受信されると、コンピューティングリソースを、コンピューティングリソースのプールからプロビジョニングすることができる。いくつかの実施形態では、コンピューティングリソースは、プールからランダムに選択するか、または、限定されないが、同じリクエスタによって送信された以前のクエリ、所望のクエリパフォーマンス、ユーザ設定などを含む、いくつかの要因に基づいて選択することができる。いくつかの実施形態では、選択されたコンピューティングリソースは、クラスタプールから削除され、クエリに(またはクエリの送信者に)割り当てられ得る。次いで、一実施形態では、処理のために選択されたコンピューティングリソースにクエリをルーティングすることができる。いくつかの実施形態では、クエリの結果を、クエリUIに返してユーザに提示するか、またはストレージサービスを利用して格納することができる。
少なくともいくつかの実施形態では、同じ送信者からの後続クエリもまた、選択されたコンピューティングリソースにルーティングすることができる。一実施形態では、選択されたコンピューティングリソースが非アクティブであると判定された場合、選択されたコンピューティングクラスタは、コンピューティングクラスタ内のホストコンピュータによって利用されるメモリまたはディスクからクエリの送信者に関連するデータを除去することなどによって「スクラブ」することができる。一実施形態では、コンピューティングクラスタを、ウォームクラスタプールに戻すことができる。
様々な実施形態では、クラスタプール内のコンピューティングクラスタのクエリ性能を監視することができ、クラスタプールに割り当てられたコンピューティングクラスタの数及び各コンピューティングクラスタのサイズ(すなわち、各コンピューティングクラスタ内のホストコンピュータの数)を調整することができる。
図1は、いくつかの実施形態による、マネージクエリ実行を示す。上述のように、様々な実施形態では、(例えば、マネージクエリサービスの一部として実施される)マネージクエリ実行は、クエリを送信するクライアント、ユーザ、または他のエンティティが、クエリを実行する方法を意識することなく実行され得る。このようにして、いくつかの実施形態では、マネージクエリ実行は、異なるフォーマットで格納されている多くの異なる種類のデータに、アクセスしクエリするための共通のインターフェースを提供することができる。例えば、図1に示すように、一実施形態では、マネージクエリ実行110は、クエリ102などのクエリのネットワークエンドポイント及びインターフェースとして機能し、生成されたクエリ結果104を提供し得る。一実施形態では、マネージクエリサービス110のクライアントは、プロビジョニングされたコンピューティングリソースなどの処理リソースと直接、相互作用することはできない。複数の異なるクライアントは、同じネットワークエンドポイントにクエリを送信できるが、クエリは、異なるコンピューティングリソースにディスパッチされ実行され得る。様々な実施形態では、負荷分散、熱管理、他のクエリ実行のスケーリング考慮事項は、クライアントから隠され得る。
一実施形態では、マネージクエリ実行110は、リソースプール130からコンピューティングリソース(複数可)112をプロビジョニングし得る。いくつかの実施形態では、リソースプール130は、異なるタイプのクエリ(または同じクエリ)を実行するように事前に構成された複数のコンピューティングリソース(複数可)132をホストし得る。コンピューティングリソースが取得されると、次いで、マネージクエリ実行110は、クエリ114を、プロビジョニングされたコンピューティングリソース(複数可)140にルーティングし得る。いくつかの実施形態では、スキーマ情報、クエリ実行パラメータ、及び他の情報もプロビジョニングされたコンピューティングリソース(複数可)に提供され得る。いくつかの実施形態では、プロビジョニングされたコンピューティングリソースは、1つまたは複数のリモートデータストア120に格納されているデータ122にアクセスし得る。いくつかの実施形態では、異なるデータを異なるフォーマット及びデータストアに格納して、結合操作などのクエリ操作を分散されたデータ及び/または異なるフォーマットのデータに対して実行し得る。次いで、クエリ結果116は、(例えば、データストアを介して、またはストリーミング結果として)マネージクエリ実行116に提供され得る。様々な実施形態では、次いで、マネージクエリ実行110は、結果104をクライアントまたは他のリクエスタに返送し得る。
マネージクエリ実行のこれまでの説明は論理的な説明であり、したがって、データストア、リソースプールコンピューティングリソース、またはマネージクエリ実行の実施に関して限定するものと解釈されるべきではないことに留意されたい。
本明細書は、マネージクエリサービスを実施するプロバイダネットワークの一般的な説明から始まる。次いで、サービスを実施する一部として使用され得る、異なる構成要素/モジュール、または構成要素/モジュールの配置を含む、マネージクエリサービス、データカタログサービス、及びリソースマネージャサービスの様々な例が説明される。次いで、マネージクエリ実行を実施するためのいくつかの異なる方法及び技法が説明され、それらのいくつかは添付のフローチャートに示される。最後に、様々な構成要素、モジュール、システム、デバイス、及び/またはノードが実装され得る例示的なコンピューティングシステムの説明が提供される。様々な例が明細書全体を通じて提供される。
図2は、いくつかの実施形態による、マネージクエリサービスを提供するプロバイダネットワークを示す論理ブロック図である。プロバイダネットワーク200は、いくつかの実施形態では、プライベートシステムもしくはクローズドシステムであり得るか、またはインターネット及び/もしくは他のネットワークを介してアクセス可能な(様々なタイプのクラウドベースのストレージなどの)1つまたは複数のサービスをクライアント250に提供するために企業または公的機関などのエンティティによって設定され得る。プロバイダネットワーク200は、単一の場所に実装され得るか、プロバイダネットワーク200によって提供されるインフラストラクチャ及びストレージサービスを実装及び分散するために必要な、物理的及び/または仮想化されたコンピュータサーバ、ストレージデバイス、ネットワーキング機器など(例えば、図15、図16及び図17に関して以下で説明されるコンピューティングシステム2000)の集合のような様々なリソースプールをホストする多数のデータセンターを含み得る。いくつかの実施形態では、プロバイダネットワーク200は、仮想コンピューティングサービス210、データ処理サービス(複数可)220(例えば、リレーショナルまたは非リレーショナル(NoSQL)データベースクエリエンジン、マップリデュース処理、データフロー処理、及び/または他の大規模データ処理技法)、データストレージサービス(複数可)230(例えば、オブジェクトストレージサービス、ブロックベースストレージサービス、または集中アクセスのために異なるタイプのデータを格納し得るデータストレージサービス)、他のサービス240(図示されていない様々な他のタイプのストレージ、処理、分析、通信、イベント処理、視覚化、及びセキュリティサービスを含み得る任意の他のタイプのネットワークベースのサービス)、マネージクエリサービス270、データカタログサービス280、及びリソース管理サービス290などの様々なコンピューティングリソースまたはサービスを実装し得る。
様々な実施形態では、図2に示す構成要素は、コンピュータハードウェア(例えば、マイクロプロセッサまたはコンピュータシステム)によって直接または間接的に実行可能な命令として、またはこれらの技法の組み合わせを使用して、コンピュータハードウェア内に直接実装され得る。例えば、図2の構成要素は、それぞれが、図17に示され以下に説明されるコンピュータシステムの実施形態と同様であり得るいくつかのコンピューティングノード(または単にノード)を含むシステムによって実装され得る。様々な実施形態では、所与のシステムまたはサービス構成要素(例えば、データストレージサービス230の構成要素)の機能は、特定のノードによって実装され得るか、またはいくつかのノードにわたって分散され得る。いくつかの実施形態では、所与のノードは、複数のサービスシステム構成要素(例えば、複数のデータストア構成要素)の機能を実装し得る。
いくつかの実施形態では、仮想コンピューティングサービス210は、プロバイダネットワーク200によって実装され得る。仮想コンピューティングサービス210は、クライアント(複数可)250操作のために様々な構成に従いインスタンスを提供し得る。仮想コンピューティングインスタンスには、例えば、指定された計算能力(CPUのタイプ及び数、メインメモリサイズなどを指示することによって指定され得る)及び指定されたソフトウェアスタック(例えば、ハイパーバイザ上で実行され得ることになるオペレーティングシステムの特定のバージョン)を有する1つまたは複数のサーバが含まれ得る。いくつかの異なるタイプのコンピューティングデバイスは、汎用または特殊用途のコンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含む、様々な実施形態で、コンピューティングインスタンス及びプロバイダネットワーク200を実施するために、単独でまたは組み合わせて使用され得る。いくつかの実施形態では、インスタンスクライアント(複数可)250または他の任意の他のユーザは、ネットワークトラフィックをコンピューティングインスタンスに送信するように構成(及び/または承認)され得る。
コンピューティングインスタンスは、例えば、クライアント(複数可)250が、インスタンスにアクセスすることを必要とせずに、クライアント(複数可)202のアプリケーションを実行するのに適した、アプリケーションサーバインスタンス、Java(商標)仮想マシン(JVM)、汎用もしくは専用のオペレーティングシステム、Ruby、Perl、Python、C、C++などの様々なインタープリタ型もしくはコンパイル型プログラミング言語をサポートするプラットフォーム、または、高性能コンピューティングプラットフォームなど)の様々な異なるプラットフォームを操作または実装し得る。アプリケーション(または他のソフトウェアは、コンピューティングインスタンスによって操作/実装され、カスタム及び/または市販のソフトウェアなどのクライアント(複数可)によって指定され得る。
いくつかの実施形態では、コンピューティングインスタンスは、予想される稼働率に基づいて異なるタイプまたは構成を有する。特定のコンピューティングインスタンスの稼働率は、インスタンスが予約されている合計時間に対する、インスタンスがアクティブ化されている時間の比率として定義され得る。稼働率は、いくつかの実装形態では、利用率とも呼ばれ得る。クライアントが、インスタンスが予約されている時間に比べて、ごくわずかな間(例えば、1年の予約の30%〜35%)に、コンピューティングインスタンスを使用することを想定する場合、クライアントは、インスタンスを低稼働率インスタンスとして予約し、関連する価格設定ポリシーに従って、1時間ごとの割引使用料を支払うことを決定し得る。インスタンスが、ほとんど常に稼働している必要がある定常状態のワークロードであることをクライアントが想定している場合、クライアントは、高稼働率インスタンスを予約し、1時間ごとの使用料をさらに安く支払う可能性があり得るが、いくつかの実施形態では、実際の使用時間数に関係なく、価格設定ポリシーに従って、予約の全期間にわたって、毎時料金を請求され得る。対応する価格設定ポリシーを有する中稼働率のインスタンスに対するオプションは、いくつかの実施形態でもサポートされ得て、その場合、先行費用及び1時間ごとの費用は、対応する高稼働率と低稼働率の間に収まる。
コンピューティングインスタンス構成は、計算集中型アプリケーション(例えば、高トラフィックウェブアプリケーション、広告配信、バッチ処理、ビデオ符号化、分散分析、高エネルギー物理学、ゲノム分析、及び計算流体力学)のための計算ワークロード、グラフィックス集中型ワークロード(例えば、ゲームストリーミング、三次元アプリケーションストリーミング、サーバ側のグラフィックスワークロード、レンダリング、財務モデリング、及びエンジニアリング設計)、メモリ集中型ワークロード(例えば、高性能データベース、分散メモリキャッシュ、インメモリ分析、ゲノム構築及び分析)、及び、ストレージ最適化ワークロード(例えば、データウェアハウジング及びクラスタファイルシステム)などの、一般的な目的または特定の目的を有するコンピューティングインスタンスも含み得る。特定の数の仮想CPUコア、メモリ、キャッシュ、ストレージ、ならびに他のパフォーマンス特性など、コンピューティングインスタンスのサイズ。コンピューティングインスタンスの構成は、特定のデータセンター内の場所、アベイラビリティーゾーン、地理的位置などを含み、(予約されたコンピューティングインスタンスの場合)予約期間の長さも含み得る。図3に関して以下に説明するように、コンピューティングインスタンスの異なる構成は、マネージクエリサービス270によってリソースを選択するためにルーティングされたクエリなど、リソースにルーティングされたジョブを実行するために、リソース管理サービス290によって管理されるリソースの異なるプールに関連するコンピューティングリソースとして実装され得る。
データ処理サービス220は、異なる機能を実行するための様々なタイプのデータ処理サービス(例えば、異常検出、機械学習、データ検索、または任意の他のタイプのデータ処理操作などの機能を実行するためのクエリまたは他の処理エンジン)であり得る。例えば、少なくともいくつかの実施形態では、データ処理サービス230は、データストレージサービス240のうちの1つに格納されているデータに対するマップ削減機能を実施する処理ノードのクラスタを作成するマップ削減サービスを含み得る。他の様々な分散処理アーキテクチャ及び技法(例えば、グリッドコンピューティング、シャーディング、分散ハッシュなど)は、データ処理サービス230によって実施され得る。いくつかの実施形態では、データ処理操作は、データストレージサービス(複数可)230の一部(例えば、指定されたデータに対する要求を処理するクエリエンジン)として実施され得ることに留意されたい。データ処理サービス(複数可)230は、マネージクエリサービス270のプール内のプロビジョニングされたリソースとして、データストレージサービス(複数可)230に格納されたデータセットに関して様々な処理操作を実行するための構造的情報を取得するために、データカタログサービス220のクライアントであり得る。
データカタログサービス280は、プロバイダネットワーク200内のクライアントに代わって、データストレージサービス230内に格納されたデータ及びデータのスキーマを取り込み、位置を特定し、識別するカタログサービスを提供し得る。例えば、非リレーショナルフォーマットで格納されたデータセットは、プロバイダネットワーク200の同じ顧客またはクライアントに代わって、他のデータオブジェクトと共にデータセットを格納するオブジェクトベースのデータストア内のコンテナまたはグループと共に識別され得る。少なくともいくつかの実施形態では、データカタログサービス280は、あるデータフォーマットで取り込まれたデータの別のデータフォーマットへの変換を指示し得る。例えば、データは、単一ファイルまたは半構造化データのセット(例えば、JSON(JavaScript Object Notation))としてデータストレージサービス230に取り込まれ得る。データカタログサービス280は、単一ファイルまたは半構造化データのセットのデータフォーマット、構造、または他のスキーマ情報を識別し得る。少なくともいくつかの実施形態では、別のデータフォーマットで格納されたデータは、(例えば、データセットの構造化バージョンを作成するために、半構造化データのテーブルを構築するためのデータ型、列型、名前、フィールドの区切り文字、及び/または他の任意の情報を検出するため)バックグラウンド操作の一部として異なるデータフォーマットに変換され得る。次いで、データカタログサービス280は、図3〜図7に関して以下で説明するように、データに関するスキーマ情報を、データに関するクエリを処理するように構成されたコンピューティングリソースまたはクラスタなどの他のサービス、コンピューティングデバイス、またはリソースに利用可能にし得る。
データストレージサービス(複数可)230は、クライアント250がクラウドまたはネットワークコンピューティング環境で、データストレージシステムを操作することを可能にするネットワークベースのサービスとして、クライアント250に代わって、データを格納、アクセス、及び管理するための異なるタイプのデータストアを実装し得る。例えば、データストレージサービス(複数可)230は、データを格納、クエリ、及び更新するための様々なタイプの(リレーショナル及び非リレーショナルの両方の)データベースストレージサービスを含み得る。そのようなサービスは、非常にスケーラブルで拡張可能なエンタープライズクラスのデータベースシステムであり得る。クエリは、複数の物理リソースにわたって分散されているデータストレージサービス(複数可)230内のデータベースに送信され得て、データベースシステムは必要に応じて、拡張または縮小され得る。データベースシステムは、異なる実施形態では、様々なタイプ及び/または組織のデータベーススキーマと効果的に連携し得る。いくつかの実施形態では、クライアント/加入者は、例えば、SQLインターフェースを介してデータベースシステムに相互作用的に、いくつかの方法でクエリを送信し得る。他の実施形態では、外部アプリケーション及びプログラムは、データベースシステムへのオープンデータベース接続(ODBC)及び/またはJavaデータベース接続(JDBC)ドライバインターフェースを使用してクエリを送信し得る。
いくつかの実施形態では、1つのデータストレージサービス230は、他のデータストレージサービス内で処理及び/または格納するために、他のデータストレージサービスが、集中データストアに格納されたデータにアクセスし得るように、集中データストアとして実装され得る。データオブジェクトまたはファイルの様々な種類、サイズ、または集合を格納、更新、及び取得するために、様々なタイプのオブジェクトまたはファイルデータストアへのストレージ及びアクセスを提供し得る。そのようなデータストレージサービス(複数可)230は、プログラムインターフェース(例えば、API)またはグラフィカルユーザインターフェースを介してアクセスし得る。集中データストアは、ローカルブロックベースのストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブなど)と同様にマウントまたはアクセスすることができるデータボリュームの一部としてデータを維持するための仮想ブロックベースのストレージを提供し得て、internet small computer interface(iSCSI)などのブロックベースのデータストレージプロトコルまたはインターフェースを利用してアクセスされ得る。
少なくともいくつかの実施形態では、データストレージサービス(複数可)230のうちの1つは、別のデータストレージサービス230の一部として実装される集中データストアを利用するデータウェアハウスサービスであり得る。様々なニーズに応じて、データウェアハウスサービスは、様々な異なるデータ管理サービスをクライアントに提供し得る。場合によっては、クライアントは、販売記録のマーケティング、管理報告、ビジネスプロセス管理、予算予測、財務報告、ウェブサイト分析、または他の多くのタイプまたは種類のデータなど、大量のデータを格納及び維持することを望み得る。クライアントによるデータの使用は、データの格納に使用されるデータ管理システムの設定にも影響を与え得る。例えば、各行内の少数の列から大量のデータを集計するなど、特定のタイプのデータ分析及び他の操作では、列データベーステーブルにより、より効率的なパフォーマンスが提供され得る。言い換えれば、(従来のデータベース方式のように)各データブロックに列の行全体を格納するのではなく、データベーステーブルからの列情報をディスク上のデータブロックに格納し得る。
マネージクエリサービス270は、図3〜図7に関して以下でより詳細に説明するように、様々な実施形態では、クライアントがクエリを実行するためにリソースを構成することなく、(例えば、オブジェクトストア及びデータベースサービスなどの異なるデータストレージサービスで)1つまたは複数の場所に格納されたデータに対してクエリを実行し得るように、クライアントに代わって、クエリの実行を管理し得る。リソース管理サービス290は、図1に関して上述したように、異なるサービスに代わってジョブを実行するために、マネージクエリサービス270のような異なるサービスのためのコンピューティングリソースのプールを管理し提供し得る。
一般的に言えば、クライアント250は、ストレージサービスに対する要求(例えば、データストレージサービス(複数可)240内のデータを作成、読み取り、書き込み、取得、または修正する要求など)またはマネージクエリサービス270に対する要求(例えば、データストレージサービス(複数可)230に格納されているデータセット内のデータをクエリする要求)を含む、ネットワーク260を介してネットワークベースの要求をプロバイダネットワーク200に送信するように構成可能な任意のタイプのクライアントを包含し得る。例えば、所与のクライアント250は、適切なバージョンのウェブブラウザを含み得るか、またはウェブブラウザによって提供される実行環境へのまたは実行環境内での拡張機能として実行し得るプラグインモジュールまたは他のタイプのコードモジュールを含み得る。あるいは、クライアント250は、データストレージサービス(複数可)240内のストレージリソースを使用してデータを格納及び/またはデータにアクセスして、様々なアプリケーションを実施し得る、データベースアプリケーション(またはそのユーザインターフェース)、メディアアプリケーション、オフィスアプリケーション、または他のアプリケーションなどのアプリケーションを包含し得る。いくつかの実施形態では、そのようなアプリケーションは、必ずしも、全てのタイプのネットワークベースのデータに対する完全なブラウザサポートを実装することなく、ネットワークベースのサービス要求を生成及び処理するための(例えば、適切なバージョンのハイパーテキストトランスファープロトコル(HTTPの))十分なプロトコルサポートを含み得る。すなわち、クライアント250は、プロバイダネットワーク200と直接、相互作用し得るアプリケーションであり得る。いくつかの実施形態では、クライアント250は、Representational State Transfer(REST)スタイルのネットワークベースのサービスアーキテクチャ、文書ベースまたはメッセージベースのネットワークベースのサービスアーキテクチャ、または他の適切なネットワークベースのサービスアーキテクチャに従って、ネットワークベースのサービス要求を生成し得る。
いくつかの実施形態では、クライアント250は、それらのアプリケーションに対して透過的な方法で、プロバイダネットワーク200へのアクセスを他のアプリケーションに提供し得る。例えば、クライアント250は、オペレーティングシステムまたはファイルシステムと統合して、データストレージサービス(複数可)240(例えば、ブロックベースのストレージサービス)のうちの1つにストレージを提供し得る。しかし、オペレーティングシステムまたはファイルシステムは、ファイル、ディレクトリ及び/またはフォルダの従来のファイルシステム階層など、アプリケーションに対して異なるストレージインターフェースを提示し得る。そのような実施形態では、ストレージシステムサービスモデルを使用するためにアプリケーションを修正する必要がなくなり得る。代わりに、データストレージサービス(複数可)240へのインターフェースの詳細は、オペレーティングシステム環境内で実行されているアプリケーションに代わって、クライアント250及びオペレーティングシステムまたはファイルシステムによって調整され得る。
クライアント250は、ネットワークベースのサービス要求(例えば、データストレージサービス(複数可)240内のデータ、データ処理サービス(複数可)230の一部として実行されている、操作、タスク、またはジョブに送信される要求、またはデータカタログサービス220と相互作用するために送信されるアクセス要求)をネットワーク260を介してプロバイダネットワーク200に伝達し、プロバイダネットワーク200から応答を受信し得る。様々な実施形態では、ネットワーク260は、クライアント250とプロバイダネットワーク200との間にネットワークベースの通信を確立するのに必要なネットワーキングハードウェア及びプロトコルの任意の適切な組み合わせを包含し得る。例えば、ネットワーク260は、概して、インターネットを集合的に実装する様々な電気通信ネットワーク及びサービスプロバイダを包含し得る。ネットワーク260は、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)などのプライベートネットワーク、ならびにパブリックまたはプライベートの無線ネットワークも含み得る。例えば、所与のクライアント250及びプロバイダネットワーク200の両方が、それ自体の内部ネットワークを有する企業内にそれぞれプロビジョニングされ得る。そのような実施形態では、ネットワーク260は、所与のクライアント250とインターネットとの間、ならびにインターネットとプロバイダネットワーク200との間のネットワークリンクを確立するために必要なハードウェア(例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバなど)及びソフトウェア(例えば、プロトコルスタック、会計ソフトウェア、ファイアウォール/セキュリティソフトウェアなど)を含み得る。いくつかの実施形態では、クライアント250は、パブリックインターネットではなくプライベートネットワークを使用してプロバイダネットワーク200と通信し得ることに留意されたい。
図3は、いくつかの実施形態による、マネージクエリサービスを示す論理ブロック図である。図4〜図8に関して以下に説明するように、マネージクエリサービス270は、プロバイダネットワーク200内の様々な他のサービスの機能を利用し得る。例えば、マネージクエリサービス270は、リソース管理サービス290を利用して、クエリを実行し、事前構成クエリのリソースを提供し、利用可能なリソースを利用可能な状態に戻すために事前構成リソースのプールをプロビジョニング及び管理し得る。例えば、リソース管理サービス290は、仮想コンピューティングサービス210内のコンピューティングリソース(複数可)354及びデータ処理サービス(複数可)220内のコンピューティングリソース(複数可)356など、1つまたは複数の異なるリソースサービスからのプールリソース(複数可)352a〜352nを含むリソースプール(複数可)350a〜350nをインスタンス化し、構成し、提供し得る。リソース管理サービス290は、他のネットワークベースのサービスに代わってジョブを実行するために、特定のリソースプールのリソース352を作成、構成、タグ付け(または他の方法で関連付け)、終了、再起動、それ以外では、リソース352を操作する要求を送信し得る。
プールから(例えば、利用するリソースの識別子または他のインジケータを受信することによって)リソースが提供されると、様々な実施形態では、マネージクエリサービス270は、仮想コンピューティングサービス210内のリソース354またはデータ処理サービス220内のリソース356と直接、相互作用してクエリを実行し得る。いくつかの実施形態では、マネージクエリサービス270は、データカタログサービス280を利用して、図5〜図7に関して以下で説明するように、いくつかの実施形態では、後でクエリを処理するときに使用するために、図4に関して以下で説明するように、データセットスキーマ352を格納し得る。例えば、データセットスキーマは、いくつかの実施形態では、(コンピューティングリソース上で実行される)クエリエンジンが、クエリされているデータを解釈することができ得るように、テーブル定義の一部としてテーブルのフィールドまたは列のデータタイプを識別し得る。いくつかの実施形態では、マネージクエリサービス270はまた、データストレージサービス(複数可)230と相互作用して、データセット370を直接、調達するか、またはクエリ結果380を取得し得る。
マネージクエリサービス270は、図4に関して以下で説明するように、異なるクライアントインターフェースからの要求を処理するためにマネージクエリインターフェース310を実装し得る。例えば、アプリケーションプログラマインターフェース(API)、標準クエリプロトコルもしくは接続に従ってフォーマットされた要求、またはマネージクエリサービスの一部として実装されるホスト型グラフィカルユーザインターフェースを介して受信された要求などの異なるタイプの要求は、マネージクエリインターフェース310によって処理され得る。
マネージクエリサービス270は、サービスリソースの操作(例えば、マネージクエリインターフェース310の要求ディスパッチャ、リソースプランナ330のリソースプランナワーカ、またはクエリトラッカ340のクエリトラッカモニタ)を管理するために、マネージクエリサービス制御プレーン320を実装し得る。マネージクエリサービス制御プレーン320は、図5及び図6に関して以下で説明するように、適切な構成要素に要求を送信し得る。マネージクエリサービス270は、マネージクエリインターフェース310を介して受信した要求を処理するための認証及び承認制御を実装し得る。例えば、マネージクエリサービス制御プレーン320は、(例えば、アクセス資格情報を検証することにより)クライアントから受信したクエリで識別されたデータセットにアクセスするために、クライアントのアイデンティティまたは権限を検証し得る。少なくともいくつかの実施形態では、マネージクエリサービス制御プレーン320は、クエリ履歴、お気に入りクエリ、またはクエリ実行ログ、及び他のマネージクエリサービス履歴データを、(内部データストア内で、またはデータストレージサービス(複数可)230のうちの1つなどの外部データストア内のデータセットの一部として)維持し得る。いくつかの実施形態では、クエリ実行費用は、マネージクエリサービスのユーザに使用状況を報告するための請求サービス(図示せず)または他のシステムに対して、マネージクエリサービス制御プレーン320によって請求、計算、または報告され得る。
いくつかの実施形態では、マネージクエリサービス270は、クエリの実行のためにプールから利用可能なコンピューティングリソースをインテリジェントに選択するためにリソースプランナ330を実装し得る。例えば、リソースプランナ330は、(例えば、コンピューティングリソースによって報告される)クエリ実行に関連する収集されたデータ統計を評価し、いくつかのパラメータセット内でクエリを実行するためのコンピューティングリソースの推定数または構成(例えば、費用、時間など)を決定し得る。例えば、一実施形態では、リソースの数/構成を決定するために、受信したクエリの特徴に適用することができるクエリ推定モデルを生成するために、機械学習技術がリソースプランナ330によって適用され得る。次いで、一実施形態では、リソースプランナ330は、プールからのクエリを実行するために利用可能なリソースの中から、推定数/構成に最も適合し得るリソースを提供または識別し得る。
様々な実施形態では、マネージクエリサービス270は、コンピューティングクラスタでのクエリの実行を管理し、クエリのステータスを追跡し、リソース管理サービス290からクエリを実行するためのリソースを取得するために、クエリトラッカ340を実装し得る。例えば、クエリトラッカ340は、プロビジョニングされたコンピューティングリソース(例えば、図5〜図7に関して以下で説明するようなコンピューティングクラスタ)上に実装された異なるマネージクエリサービスエージェントから受信したアップデートに基づいてデータベースまたは他のトラッキング情報のセットを維持し得る。
図4は、いくつかの実施形態による、クライアントとマネージクエリサービスとの間の相互作用を示す図である。クライアント(複数可)400は、上記の図2のクライアント(複数可)250または他のクライアント(例えば、プロバイダネットワーク200の一部として、またはデータ探索もしくは視覚化ツール(例えば、Tableau、Looker、MicroStrategy、Qliktech、またはSpotfire)などの外部のサービス、システムまたは、構成要素の一部として実装される他のサービスシステムまたは構成要素)であり得る。クライアント400は、マネージクエリインターフェース310を介してマネージクエリサービス270に様々な要求を送信することができる。マネージクエリインターフェース310は、クエリ442を送信するためのユーザインターフェース(例えば、グラフィカルまたはコマンドラインのユーザインターフェース)、またはクエリを実行するためのデータスキーマ444を登録するためのユーザインターフェースを提供し得る、管理コンソール440を提供し得る。例えば、管理コンソール440は、クエリを送信するか、またはデータスキーマを登録するための様々なグラフィカルユーザインターフェース要素(例えば、テキスト編集ウィンドウ、ドロップダウンメニュー、ボタン、ウィザード、またはワークフロー)を提供するネットワークベースのサイト(例えば、プロバイダネットワーク200のインターネットウェブサイト)の一部として実装され得る。マネージクエリインターフェース310は、クエリ、及び様々な他の例示された要求を実行するために、プログラムインターフェース410(例えば、様々なアプリケーションプログラミングインターフェース(API)コマンド)を実装し得る。いくつかの実施形態では、マネージクエリインターフェース310は、JDBCドライバ430またはODBCドライバ420などのデータをクエリするための標準通信プロトコルをサポートするカスタムドライバを実装し得る。
クライアント400は、多くの異なるタイプの要求を、マネージクエリインターフェース310に送信することができる。例えば、一実施形態では、クライアント400は、データスキーマを作成、読み取り、修正、または削除するための要求450を送信することができる。例えば、新しいテーブルスキーマを要求450を介して送信することができる。様々な実施形態では、要求450は、データセットの名前(例えば、テーブル)、データセットの場所(例えば、データストレージサービス230などのオブジェクトストレージサービス内のオブジェクト識別子、ファイルパス、ユニフォームリソースロケータ、または他のロケーションインジケータ)、フィールドまたは列の列数、列名、データ型(例えば、文字列、整数、ブール値、タイムスタンプ、配列、マップ、カスタムデータ型、または複合データ型)、データフォーマット(例えば、限定されないが、JSON、CSV、AVRO、ORC、PARQUET、タブ区切り、カンマ区切り、ならびにカスタムまたは標準のシリアライザ/デシリアライザを含むフォーマット)、データセットのパーティション(例えば、時間、地理的位置、または他の次元に従う)、またはデータセットに関するプロセスクエリの他のスキーマ情報を含み得る。少なくともいくつかの実施形態では、データセットスキーマを作成/読み取り/変更/削除する要求は、Hiveクエリ言語(HQL)などのデータ定義言語(DDL)を使用して実行され得る。マネージクエリインターフェース310は、データカタログサービス280に関してそれぞれのAPI呼び出しまたは他の要求452を実行して、データセットのスキーマを(例えば、テーブルスキーマ402の一部として)格納し得る。テーブルスキーマ402は、異なるフォーマット(例えば、Apache Hive)で格納され得る。他の実施形態では、マネージクエリサービス270は、独自のメタデータストアを実装し得ることに留意されたい。
様々な実施形態では、図5及び図6に関して以下で説明するように、クライアント400はまた、クエリ460及びクエリステータス470の要求をマネージクエリインターフェース310に送信し得て、マネージクエリインターフェース310は、それらの要求460及び470を、マネージクエリサービス制御プレーン320に送信し得る。クエリ460は、構造化クエリ言語(SQL)またはHQLなどの様々なタイプのクエリ言語に従ってフォーマットされ得る。
クライアント(複数可)400はまた、クエリ履歴480またはクエリを管理する他のアカウント関連クエリ情報(例えば、お気に入りまたは共通のクエリ)に対する要求を送信し得る。いくつかの実施形態では、クライアント(複数可)400は、保存クエリ490を実行する要求を送信することによって、過去のクエリの実行をプログラム的にトリガし得て、マネージクエリサービス制御プレーン320がルックアップして実行し得る。例えば、保存されたクエリ実行要求は、特定のユーザアカウントまたはクライアント用に格納または保存されたクエリに対するポインタまたは他の識別子を含み得る。次いで、マネージクエリサービス制御プレーン320は、そのユーザクエリストアにアクセスして(図5〜図7に関して以下で説明する技法に従って)クエリを取得して実行し得る。
図5は、いくつかの実施形態による、クエリのマネージ実行のためのシーケンス図である。クエリ530は、実行のために選択されたクラスタ536を示すクエリトラッカ340にクエリ532を送信し得るマネージクエリサービス制御プレーン320で受信され得る。クエリトラッカ340は、リソース管理サービス290からクラスタ534をリースし得て、リソース管理サービス290は、クラスタ536を返し得る。リソース管理サービス290及びクエリトラッカ340は、クエリトラッカによってリースされ、受信されたクエリを実行するために割り当てられたリソースのリース状態情報を維持し得る。次いで、クエリトラッカ340は、プロビジョニングされたクラスタ510でクエリ538の実行を開始し、クエリ実行命令をマネージクエリエージェント512に送信し得る。
マネージクエリエージェント512は、データカタログサービス280からデータセット(複数可)520のスキーマ540を取得し得て、データカタログサービス280は、(例えば、クエリを「読み取り時に」処理するためにスキーマを適用するための手法を実装する)適切なスキーマ542を返し得る。次いで、プロビジョニングされたクラスタ510は、クエリ実行計画を生成し、クエリ計画に従ってデータセット(複数可)520に対してクエリ544を実行することができる。マネージクエリエージェント512は、クエリステータス546の要求の取得に応答して、クエリステータス548を報告し、クエリステータス550を示す応答550を送信し得るクエリトラッカ340にクエリステータス546を送信し得る。プロビジョニングされたクラスタ510は、クエリ結果552を結果ストア522(データストレージサービス230であり得る)に格納し得る。いくつかの実施形態では、マネージクエリサービス制御プレーン320は、クエリ結果554を取得し、結果ストア522からクエリ結果556を取得し、それに応答して、クエリ結果558を提供するために、q要求を受信し得る。
図6は、いくつかの実施形態による、リソースプランナを利用したクエリのマネージ実行のシーケンス図である。クエリ630は、クエリ632をリソースプランナ340に送信し得るマネージクエリサービス制御プレーン320で受信され得る。リソースプランナ340は、クエリを分析し、クエリを処理するための履歴データ及びリソース管理サービス290から受信した利用可能なクラスタ(複数可)634に基づいて、クエリを処理するのに最適なクラスタを決定し得る。次いで、リソースプランナ340は、クエリを選択し、実行のために選択されたクラスタ636を示すクエリトラッカ340にクエリを送信し得る。次いで、クエリトラッカ340は、プロビジョニングされたクラスタ610でクエリ638の実行を開始し、クエリ実行命令をマネージクエリエージェント612に送信し得る。
マネージクエリエージェント612は、データカタログサービス280からデータセット(複数可)620のスキーマ640を取得し得て、データカタログサービス280は、適切なスキーマ642を返し得る。次いで、プロビジョニングされたクラスタ610は、クエリ実行計画を生成し、クエリ計画に従ってデータセット(複数可)620に対してクエリ644を実行することができる。マネージクエリエージェント612は、クエリステータス646の要求の取得に応答して、クエリステータス648を報告し、クエリステータス650を示す応答650を送信し得るクエリトラッカ340にクエリステータス646を送信し得る。プロビジョニングされたクラスタ610は、クエリ結果652を結果ストア622(データストレージサービス230であり得る)に格納し得る。いくつかの実施形態では、マネージクエリサービス制御プレーン320は、クエリ結果654を取得し、結果ストア622からクエリ結果656を取得し、それに応答して、クエリ結果658を提供するために、q要求を受信し得る。
いくつかの実施形態では、異なるタイプのコンピューティングリソースは、リソースプールにプロビジョニング及び構成され得る。単一ノードクラスタまたはマルチノードコンピューティングクラスタは、マネージクエリサービス270のクエリに情報を提供するために、リソース管理サービス290によってリソースプール内にプロビジョニング及び構成されたタイプのコンピューティングリソースの一例であり得る。図7は、いくつかの実施形態による、マネージクエリ実行の一部としてクエリを処理するクラスタを示す論理ブロック図である。クラスタ710は、(クラスタ710によって実装されるクエリエンジン724に従って)リーダーノードであるコンピューティングノード720を実装し得る。いくつかの実施形態では、単一のノードはリーダーノードになり得ないか、またはリーダーノードは、あるクエリの処理から次のクエリへと交代し得る。マネージクエリエージェント722は、プロビジョニングされたリソース、クラスタ710と、マネージクエリサービス270及びリソース管理サービス290の他の構成要素との間のインターフェースを提供するために、リーダーノード720の一部として実装され得る。例えば、マネージクエリエージェント722はさらに、クエリのステータス708(例えば、実行中、I/Oの実行中、集約の実行中など)及びメトリクス706(例えば、ヘルスメトリクス、リソース利用メトリクス、費用メトリクス、時間長、実行メトリクスなど)などのデータをマネージクエリサービス270に提供し得る。いくつかの実施形態では、マネージクエリエージェント722は、(修正イベント、リース要求などのプール管理決定を行うために)クラスタ/クエリステータス708及びメトリック(複数可)706をリソース管理サービス290に提供し得る。例えば、マネージクエリエージェント722は、クエリが完了したこと、及びクラスタ710が再割り当て(または図10に関して以下で説明するように、他のリソースライフサイクル操作)の準備ができていることを示すクラスタステータス708をリソース管理サービス290に示し得る。
リーダーノード720は、クエリ703としてマネージクエリエージェント722を介して受信され得るクエリ702などのクエリを実行するためにクエリエンジン724を実装し得る。例えば、マネージクエリエージェントは、(図5及び図6で上述したように)クエリトラッカのためのプログラムインターフェースを実装してクエリを送信し、次いで、適切なクエリ実行命令を生成し、クエリエンジン724に送信し得る。クエリエンジン724は、受信したクエリ703のクエリ実行計画を生成し得る。少なくともいくつかの実施形態では、リーダーノード720は、スキーマデータをクエリ計画の生成及びクエリの実行に取り込むため、データカタログサービス280またはデータ762のメタデータストア(例えば、データ762のスキーマ情報を維持する、データ辞書、他のメタデータストア、データベースシステムなどの他のデータ処理サービス)からデータセット(複数可)770のスキーマ情報を取得し得る。リーダーノード720は、クエリ実行命令740を生成し、データストア(複数可)760内のデータ762にアクセスしてクエリを適用するコンピューティングノードに送信し得る。ノード730a、730b、及び730nなどのコンピュートノードは、クエリエンジン732a、732b、及び732nをそれぞれ実装して、クエリ命令を実行し、クエリをデータ750に適用し、リーダーノード720に部分結果740を返し得て、次いで、リーダーノード720は、クエリ結果704を生成及び送信し得る。クエリエンジン724及びクエリエンジン732は、オープンソースのPresto分散クエリフレームワークまたはApache Sparkフレームワークなど、様々な種類の分散クエリまたはデータ処理フレームワークを実装し得る。
図8は、いくつかの実施形態による、リソース管理サービスとリソースのプールとの間の相互作用を示す論理ブロック図である。リソース管理サービス290は、他のネットワークベースのサービス(またはクライアントもしくはプロバイダネットワーク)が、リソース管理サービス290によって管理されるリソースプールから事前設定されたリソースの要求を送信することを可能にするプログラムインターフェース(例えば、API)または他のインターフェースを実装し得る。例えば、クエリを実行するためのクラスタを取得するために、(例えば、クエリトラッカ340から)クラスタ830の要求を受信し得る。リソース管理サービス290は、要求830に対して適切なプールを決定し、要求に情報を提供するためのクラスタをランダムに(または図10に関して以下で説明する技法に従って選択的に)決定し得る。次いで、リソース管理サービス290は、(例えば、識別されたコンピューティングリソースにアクセスするための場所、識別子、または他の情報を指定することによって)識別されたクラスタ840を提供し得る。リソース管理サービスは、クラスタの状態情報を更新して、クラスタがリースされているか、そうでない場合は、利用できないことを示し得る。リソース管理サービス290はまた、現在の割り当てからクラスタ850を解放する要求を受信し得る。次いで、いくつかの実施形態では、リソース管理サービス290は、クラスタ及びプールに関する状態情報を更新して、クラスタをプールに戻し得る。
860に示されるように、リソース管理サービス290は、自動的に(または要求(図示せず)に応答して)、クラスタ810のプール(複数可)をコミッションまたはデコミッションし得る。例えば、いくつかの実施形態では、リソース管理サービス290は、ウォームクラスタプール810のコンピューティングクラスタ820の数及びサイズを選択する技法を実行し得る。いくつかの実施形態では、ウォームクラスタプール810内のコンピューティングクラスタ820の数及びサイズは、限定されないが、クエリ要求の履歴及び/または予想されるクエリ要求の量、コンピューティングクラスタ820を実装するために利用されるコンピューティングリソースの価格、及び/または他の要因または考慮事項を含む、様々な要因に基づいて決定することができる。
コンピューティングクラスタ820の数及びサイズを決定すると、コンピューティングクラスタ820は、図2で上述したように、オンデマンドコンピューティングサービス、または仮想コンピューティングサービスまたはデータ処理サービスの使用などによって、インスタンス化され得る。次いで、インスタンス化されたコンピューティングクラスタ820は、マネージクエリサービスでクエリを受信する前に、クエリを処理するように構成することができる。例えば、限定されないが、1つまたは複数の分散クエリフレームワークまたは他のクエリ処理エンジンを、各コンピューティングクラスタ820内のコンピューティングノードにインストールすることができる。上述したように、特定の一実施態様では、分散クエリフレームワークは、オープンソースのPRESTO分散クエリフレームワークであり得る。他の分散クエリフレームワークは、他の構成で利用することができる。さらに、分散処理フレームワークまたは他のクエリエンジンは、各コンピューティングクラスタ820内のホストコンピュータにインストールすることもできる。上述したように、分散処理フレームワークは、分散クエリフレームワークと同様に利用することができる。またはその代わりに、例えば、ある特定の構成では、APACHE SPARK分散処理フレームワークを、コンピューティングクラスタ820内のホストコンピュータにインストールすることもできる。
いくつかの実施形態では、マネージクエリサービス104による使用に利用可能なインスタンス化及び構成されたコンピューティングクラスタ820が、ウォームクラスタプール810に追加される。様々な実施形態では、ウォームクラスタプール内のコンピューティングクラスタ820の数またはサイズを調整する必要があるかどうかに関して判定を行うことができる。ウォームクラスタプール810内のコンピューティングクラスタ820のパフォーマンスは、クラスタプールから受信したメトリック(複数可)890に基づいて監視することができる。次いで、ウォームクラスタプール810に割り当てられたコンピューティングクラスタ820の数及びウォームクラスタプール810内の各コンピューティングクラスタ820のサイズ(すなわち、各コンピューティングクラスタ820内のホストコンピュータの数)を調整することができる。そのような技法は、ウォームクラスタプール810内のコンピューティングクラスタ820の数及びサイズを継続的に最適化するために繰り返し実行することができる。
880に示されるように、いくつかの実施形態では、リソース管理サービスは、クラスタがクライアントデータを保持せずに別のクエリを処理する準備ができるように、クラスタに動作(例えば、再起動)を実行させることによって、クラスタ(複数可)880をスクラブし得る。例えば、リソース管理サービス290は、コンピューティングクラスタ820が、非アクティブ(例えば、コンピューティングクラスタ820が、所定の時間内にクエリを受信していない)であるかどうかを判定し得る。リソース管理サービス290が、コンピューティングクラスタ820が非アクティブであると判定した場合、コンピューティングクラスタ820は、クエリの送信者から切り離され得る。次いで、コンピューティングクラスタは、コンピューティングクラスタ820内のホストコンピュータによって利用されるメモリ(例えば、メインメモリまたはキャッシュ)または大容量ストレージデバイス(例えば、ディスクまたはソリッドステートストレージデバイス)からクエリの送信者に関連付けられたデータを削除することなどによって「スクラブ」され得る。次いで、コンピューティングクラスタ820は、他のクエリの処理に使用するために、ウォームクラスタプール810に戻され得る。いくつかの実施形態では、非アクティブであるいくつかのクラスタは、特定のシナリオでは特定のユーザから切り離されない可能性がある。これらのシナリオでは、ユーザは、それらの使用に利用可能なクラスタ810の専用ウォームプールを有し得る。
図2〜図8は、マネージクエリサービスを実装するために、複数の異なるサービスを利用するプロバイダネットワークの文脈で説明及び例示されてきたが、図2〜図8で例示及び説明した様々な構成要素は、リモートデータストアに及び/または異なるフォーマットで格納されたデータセットに関してクエリの実行を管理する他のマネージクエリ実行技術、システム、またはデバイスに容易に適用され得る。したがって、図2〜図8は、マネージクエリ実行を実施し得るシステムの他の実施形態に関して限定することを意図するものではない。図9は、いくつかの実施形態による、マネージクエリ実行を実施するための様々な方法及び技法を例示するハイレベルフローチャートである。様々な異なるシステム及びデバイスは、単独でまたは連動する、以下に説明される様々な方法及び技法を実施し得る。例えば、データ処理サービス及び/またはストレージサービスは、図2〜図8に関して上述したようなデータカタログサービス及びマネージクエリサービスと共に、様々な方法を実施し得る。あるいは、異なるシステム及びデバイスを組み合わせて、これらの方法を実施し得る。したがって、上記の例、及び例示された方法を実行するものとして参照される他の任意のシステムまたはデバイスは、他の異なる構成要素、モジュール、システム、またはシステム及びデバイスの構成に関して限定することを意図しない。
910に示されるように、様々な実施形態では、リモートデータストアに個別に格納されたデータセット(複数可)に送信された第1のクエリが受信され得る。例えば、一実施形態では、図4に関して上述した様々なタイプのインターフェース(プログラム、ユーザコンソール、ドライバなど)を介してクエリを受信し得る。クエリは、異なるクエリ言語、または構造化クエリ言語(SQL)及び/Hiveクエリ言語(HQL)を含むクエリ言語の仕様に従ってフォーマットされ得る。いくつかの実施形態では、クエリは、実行ヒント、利用するクエリ実行エンジンのタイプの指定、クエリ実行制限、またはクエリの実行を構成するための他のパラメータもしくはプロパティを含み得る。
920に示されるように、第1のクエリを実行するためのコンピューティングリソース(複数可)は、クエリを実行するように構成されたコンピューティングリソースのプールから受信され得る。上述したように、コンピューティングリソースのプールは、クエリを受信して処理する準備ができるように、ウォームであり得るか、そうでない場合は、以前に構成されたものであり得る。コンピューティングリソースは、PrestoまたはSparkなどの様々な分散クエリ処理フレームワークを含む、様々なクエリ実行エンジンを使用して構成され得る。コンピューティングリソースは、識別されたプール(例えば、図10に関して以下に説明するように、受信したクエリのタイプを実行するように構成されたコンピューティングリソースのプール)から利用可能なコンピューティングリソースをランダムに選択することによってプロビジョニングされ得るか、または、コンピューティングリソースのプロパティの分析に基づいて、確定的にプールのコンピューティングリソースを選択し得るか、第1のクエリの同じ送信者に代わって、別のクエリを既に実行しているコンピューティングリソース(例えば、同じクライアント、同じユーザ、同じアカウント、同じ資格情報など)を選択し得る。
930に示されるように、様々な実施形態では、第1のクエリは、リモートデータストア(複数可)に個別に格納されたデータセット(複数可)に関して第1のクエリを実行するために、プロビジョニングされたコンピューティングリソース(複数可)にルーティングされ得る。例えば、いくつかの実施形態では、要求はフォーマットされ、マネージクラスタエージェントに送信されて、実行するクエリ、クエリの実行のための構成パラメータ、またはクエリの結果を送信する場所または宛先が示され得る。少なくともいくつかの実施形態では、クエリはクエリエンジンに直接送信され得る。
図10は、いくつかの実施形態による、クエリを実行するために、コンピューティングリソースのプールからコンピューティングリソースを選択するための様々な方法及び技法を示すハイレベルフローチャートである。1010に示されるように、様々な実施形態では、リモートデータストアに格納されたデータセット(複数可)に送信された第1のクエリが受信され得る。1020に示すように、コンピューティングリソース(複数可)は、クエリを実行するように選択することができるように構成されたコンピューティングリソースのプールから選択され得る。例えば、いくつかの実施形態では、クエリを実行するためのプールは、クエリのタイプ(例えば、読み取りクエリ、書き込みクエリ、スキーマ変更、または他のデータ定義言語(DDL)ベースのクエリ)に従って決定され得る。いくつかの実施形態では、異なるサイズのコンピューティングリソースが利用可能であり得て、したがって、コンピューティングリソースは、クエリに対して最適な(またはクライアント指定のサイズ)で選択され得る。いくつかの実施形態では、異なるタイプのクエリエンジンは、異なるプール内の異なるコンピューティングリソースに実装され得る。リソースは、クエリエンジンのタイプに基づいて選択され得る(例えば、読み取りクエリでは、メモリベースのクエリエンジンを選択することになり得て、書き込みクエリでは、メモリ及びディスク動作可能なクエリエンジンを選択することになり得る)。少なくともいくつかの実施形態では、選択されたリソースは、受信されたクエリを実行するためのウォームクラスタプールとして識別されたリソースプールからのリソースであり得る。いくつかの実施形態では、クエリを実行するためのコンピューティングリソース(例えば、コンピューティングクラスタ)の選択は、限定されないが、同じリクエスタによって送信された以前のクエリ、必要なクエリパフォーマンス、ユーザ設定、クエリされるデータ量、列統計、経験的データ、クエリを実行するために利用されるコンピューティングリソースの価格、クラスタ106のパフォーマンスに関連する他のタイプの統計などを含むいくつかの要素に基づくことができる。いくつかの実施形態では、コンピューティングリソースは、選択されたコンピューティングリソースへの同じ送信者からの受信された後続クエリのために再び選択され得る。
1030に示されるように、選択されると、選択されたコンピューティングクラスタは、コンピューティングリソース(例えば、ウォームクラスタプールからのクラスタ)のプールから削除され得る。1040に示すように、様々な実施形態では、削除されたコンピューティングリソース(複数可)は、第1のクエリに(または、いくつかの実施形態では、送信者からのその後の要求が、同じコンピューティングリソースに割り当てられ得るように、第1のクエリの送信者に)関連付けられ得る。コンピューティングリソースは、ユーザが管理コンソールにログインしたときなど、別の時点でユーザに関連付けることもできる。1050に示されるように、次いで、様々な実施形態では、第1のクエリは、第1のクエリと関連付けられたコンピューティングリソース(複数可)にルーティングされ得る。1060に示されるように、様々な実施形態では、関連付けられたコンピューティングリソースで生成されたクエリの結果を提供することができる。例えば、一実施形態では、結果は、クエリ結果に対して指定された宛先または場所に(例えば、クライアント要求で)送信することができる。結果は、(例えば、データストレージサービス230のようなデータストアに)ストリームバックされるかまたは集約され、クエリを受信した同じインターフェース(例えば、プログラム、グラフィック、ドライバ、コンソールなど)を介してバッチ(またはページ付けされた結果などのバッチ)として提供され得る。
図11は、いくつかの実施形態による、クエリ実行制限に関してクエリの実行を監視するための様々な方法及び技法を示すハイレベルフローチャートである。1110に示されるように、様々な実施形態では、クエリに関連付けられたコンピューティングリソース(複数可)のクエリ実行メトリック(複数可)を監視し得る。例えば、一実施形態では、クエリ実行メトリクスは、利用メトリクスまたは消費メトリクス(例えば、消費されたI/O帯域幅、消費されたプロセッサ容量、消費されたネットワーク帯域幅)を含み得る。一実施形態では、クエリ実行メトリクスは、(例えば、作業単位、金額単位、時間単位などに関する)利用メトリクスまたは消費メトリクスから算出された費用値とし得る。
1120に示されるように、いくつかの実施形態では、監視されたクエリ実行メトリクスは、クエリ実行制限に関して判定され得る。例えば、一実施形態では、クエリは、クエリステートメントのヒント、コメント、または他の「実行不可能」部分として実行制限を含み得て、実行制限はクエリに適用するための制限を示し得る。いくつかの実施形態では、既定の費用、単位、利用、または他の消費制限が適用され得るか、または他の実施形態では、実行時間制限が適用され得る。様々な実施形態では、1120からの肯定出口によって示されるように、クエリ実行制限を超えた場合、クエリの実行はコンピューティングリソース(複数可)で停止され得る。例えば、部分的な結果または他の完了した作業がクエリ結果として提供され得る(いくつかの実施形態では、クエリ実行制限のために結果が部分的または停止したクエリであることを示し得る)。リソース上のエージェントまたは構成要素(例えば、図7のマネージクエリエージェント722)は、クエリ実行の監視及び/または停止を実行し得るか、または(例えば、図3のクエリトラッカ340の)個別の監視構成要素は、クエリ実行メトリックを監視し、クエリの実行を停止させ得る。
図12は、いくつかの実施形態による、リモートデータストアに格納されたデータのスキーマを格納するための様々な方法及び技法を示すハイレベルフローチャートである。1210に示すように、いくつかの実施形態では、リモートデータストアに格納されているデータの場所を登録し得る。例えば、一実施形態では、データセットの場所、名前、アクセス制御、またはデータにアクセスために必要な他の情報を示す、一実施形態では、ファイルパス、オブジェクト識別子、データストレージサービス、ネットワークアドレス、または他の識別子を提供し得る。1220に示されるように、いくつかの実施形態では、テーブル定義はデータのスキーマの一部としてデータ内のフィールド(複数可)にマッピングし得る。例えば、整数、文字列、浮動小数点数、または文字などの標準データ型、日付、uniform resource locator(URL)、性別などのカスタムまたは複合データ型は、テーブルの様々な列にマッピングし得る。
1230に示されるように、様々な実施形態では、データのフォーマットはデータのスキーマの一部として指定し得る。例えば、一実施形態では、限定されないが、Avro、CSV、TSV、Parquet、ORC、JSON、Apache Web Serverログ、カスタム区切り文字を含み、データフォーマットのシリアライザ/デシリアライザを含む、データの保存方法に関する様々なデータフォーマットは、要求で指定し得る。1240に示されるように、データのパーティションは、データのスキーマの一部として指定し得る。例えば、一実施形態では、データは、時間または他の次元に基づいてパーティション内のリモートデータストアに格納され得る。1250に示されるように、様々な実施形態では、スキーマはメタデータストアに格納され得る。例えば、上記の技法を実行するマネージクエリサービスは、データ登録サービス280のためのインターフェースを利用するテーブル定義または他のスキーマを格納するために、データ登録UI444などのインターフェースを利用し得る。いくつかの実施形態では、スキーマは、APACHE HIVEメタデータストアに従って格納され得る。しかし、他の実施形態では、他のタイプのフォーマットまたはメタデータストアを利用することができる。いくつかの実施形態では、メタデータストアに格納されると、スキーマは、登録されたデータに送信されたクエリを処理するために利用可能にされ得る。例えば、一実施形態では、データカタログサービス280は、マネージクエリサービスによって利用されるコンピューティングクラスタに利用可能なデータのためのテーブル定義を作成することもできる。
本明細書に記載の方法は、様々な実施形態では、ハードウェアとソフトウェアの任意の組み合わせによって実施し得る。例えば、一実施形態では、方法は、プロセッサに結合されたコンピュータ可読記憶媒体に格納されたプログラム命令を実行する1つまたは複数のプロセッサを含むコンピュータシステム(例えば、図15のようなコンピュータシステム)によって実施され得る。プログラム命令は、本明細書に記載の機能(例えば、本明細書に記載のネットワークベースの仮想コンピューティングリソースプロバイダを実装する様々なサーバ及び他の構成要素の機能)を実装するように構成され得る。本明細書で図に例示され、説明される様々な方法は、方法の例示的な実施形態を表す。任意の方法の順序は変更され得て、様々な要素の追加、再順位付け、組み合わせ、除外、変更などがされ得る。
図13は、いくつかの実施形態による、本明細書に記載の機能の態様を実施することができるサービスプロバイダネットワークを含む、例示的な動作環境を示す論理ブロック図である。上述したように、サービスプロバイダネットワーク200は、永続的または必要に応じて、VMインスタンス及びストレージなどのコンピューティングリソースを提供することができる。他のタイプの機能のうちで、サービスプロバイダネットワーク200によって提供されるコンピューティングリソースは、上述した様々なサービスを実施するために利用することができる。また、上述したように、サービスプロバイダネットワーク200によって提供されるコンピューティングリソースは、VMインスタンスなどのデータ処理リソース、データストレージリソース、ネットワーキングリソース、データ通信リソース、ネットワークサービスなどの様々なタイプのコンピューティングリソースを含むことができる。
サービスプロバイダネットワーク200によって提供される各タイプのコンピューティングリソースは、汎用とすることができるか、または、いくつかの特定の構成で利用可能とすることができる。例えば、データ処理リソースは、いくつかの様々な構成の物理コンピュータまたはVMインスタンスとして利用可能とすることができる。VMインスタンスは、ウェブサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバ、上述のサービスの一部または全部、及び/または他のタイプのプログラムを含む、アプリケーションを実行することができる。VMインスタンスはまた、上述した方法でコンピューティングクラスタに構成することもできる。データストレージリソースは、ファイルストレージデバイス、ブロックストレージデバイスなどを含むことができる。サービスプロバイダネットワーク200はまた、本明細書で具体的に述べられていない他のタイプのコンピューティングリソースを提供することもできる。
サービスプロバイダネットワークによって提供されるコンピューティングリソースは、いくつかの実施形態では、1つまたは複数のデータセンター1304A〜1304N(本明細書では「1つのデータセンター1304」と単数で、または「複数のデータセンター1304」と複数で呼ぶことがある)によって実装され得る。データセンター1304は、コンピュータシステム及び関連する構成要素を収容し操作するために利用される設備である。データセンター1304は通常、冗長電源及びバックアップ電源、通信、冷却、及びセキュリティシステムを含む。データセンター1304は、地理的に離れた場所に配置することもできる。本明細書に開示される技術を実装するために、利用することができるデータセンター1304のための1つの例示的な構成は、図14に関して以下に説明される。
サービスプロバイダネットワーク200の顧客及び他のユーザは、ネットワーク1302を介してサービスプロバイダネットワーク200によって提供されるコンピューティングリソースにアクセスすることができ、ネットワーク1302は、インターネット、イントラネットまたはインターネットサービスプロバイダ(「ISP」)ネットワークなどの広域通信ネットワーク(「WAN」)、またはそのようなネットワークの組み合わせとすることができる。例えば、限定されないが、サービスプロバイダネットワーク200の顧客または他のユーザによって操作されるコンピューティングデバイス1300は、ネットワーク1302を介してサービスプロバイダネットワーク200にアクセスするために利用することができる。データセンター1304を、遠隔の顧客及び他のユーザに接続する当技術分野で既知のローカルエリアネットワーク(「LAN」)、インターネット、または任意の他のネットワーキングトポロジを利用することができることを理解されたい。また、そのようなネットワークの組み合わせも利用できることを理解されたい。
図14は、様々な実施形態による、本明細書に開示される技法の態様を実施するために利用することができるデータセンターのための構成を例示する論理ブロック図であり、いくつかの実施形態では、マネージクエリ実行サービス270などのマネージクエリ実行を提供するために、本明細書に開示される技術の態様を実施するデータセンター1304のための1つの構成を示すコンピューティングシステム図である。図14に示される例示的なデータセンター1304は、コンピューティングリソース1404A〜1404Eを提供するためのいくつかのサーバコンピュータ1402A〜1402F(本明細書では「1つのデータセンター1402」と単数で、または「複数のデータセンター1402」と複数で呼ぶことがある)を含む。
サーバコンピュータ1402は、本明細書に記載のコンピューティングリソース(コンピューティングリソース1404A〜1404Eとして図14に示す)を提供するように適切に構成された標準のタワー型、ラックマウント型、またはブレード型サーバコンピュータとすることができる。上述したように、プロバイダネットワーク200によって提供されるコンピューティングリソースは、VMインスタンスまたはハードウェアコンピューティングシステム、コンピューティングクラスタ、データストレージリソース、データベースリソース、ネットワーキングリソースなどのデータ処理リソースとすることができる。サーバ1402のうちのいくつかは、コンピューティングリソースをインスタンス化及び/または管理することが可能なリソースマネージャ1406を実行することもできる。例えば、VMインスタンスの場合、リソースマネージャ1406はハイパーバイザとすることができる、または別のタイプのプログラムが単一のサーバコンピュータ1402上で複数のVMインスタンスの実行を可能にし得る。データセンター1304内のサーバコンピュータ1402は、ネットワークサービス及び他のタイプのサービスも提供することができ、そのうちのいくつかは、図2に関して上記で詳細に説明されている。
図14に示されるデータセンター1304はまた、上述したソフトウェア構成要素の一部または全部を実行することができるサーバコンピュータ1402Fを含む。例えば、限定されないが、サーバコンピュータ1402Fは、マネージクエリサービス270、データカタログサービス280、リソース管理サービス290、及び(例えば、上述した)他のサービス1410などのプロバイダネットワーク200の異なるサービスを提供するための様々な構成要素及び/または上述した他のソフトウェア構成要素を実行できる。サーバコンピュータ1402Fはまた、他の構成要素を実行し、及び/または本明細書に記載の機能の一部または全部を提供するためのデータを格納することもできる。これに関連して、サーバコンピュータ1402F上で実行されるように図14に例示されるサービスは、様々な構成でデータセンター1304内の他の多くの物理サーバまたは仮想サーバ上で実行することができることを理解されたい。
図14に示されるデータセンター1304の例では、適切なLAN1406も、サーバコンピュータ1402A〜1402Fを相互接続するために利用される。LAN1406は、図13に示すネットワーク1302にも接続される。本明細書に記載の構成及びネットワークトポロジは非常に単純化されており、本明細書に開示される様々なコンピューティングシステムを相互接続し、上述した機能を提供するために、さらに多くのコンピューティングシステム、ソフトウェア構成要素、ネットワーク、及びネットワーキングデバイスを利用できることを理解されたい。適切な負荷分散デバイスまたは他のタイプのネットワークインフラストラクチャ構成要素は、各データセンター1304A〜1304N間、各データセンター1304内の各サーバコンピュータ1402A〜1402F間、及び、潜在的に、各データセンター1304内のコンピューティングリソース間で、負荷のバランスをとるためにも利用することができる。図14を参照して説明したデータセンター1304の構成は単なる例示であり、他の実施態様を利用することができることを理解されたい。
本明細書に記載されているようなマネージクエリ実行の実施形態は、様々な他のデバイスと相互作用し得る、1つまたは複数のコンピュータシステム上で実行され得る。そのようなコンピュータシステムの1つが図15に示されている。異なる実施形態では、コンピュータシステム2000は、限定されないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、またはネットブックコンピュータ、メインフレームコンピュータシステム、携帯情報端末、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータなどの周辺機器、または一般的な任意のタイプのコンピューティングデバイス、コンピューティングノード、コンピュートノード、コンピューティングシステム、コンピュートシステム、または電子デバイスを含む、任意の様々なタイプのデバイスとし得る。
例示される実施形態では、コンピュータシステム2000は、入力/出力(I/O)インターフェース2030を介して、システムメモリ2020に結合された1つまたは複数のプロセッサ2010を含む。コンピュータシステム2000は、I/Oインターフェース2030に結合されたネットワークインターフェース2040、及びカーソル制御デバイス2060、キーボード2070、及びディスプレイ(複数可)2080などの1つまたは複数の入力/出力デバイス2050をさらに含む。ディスプレイ(複数可)2080は、標準のコンピュータモニタ(複数可)及び/または他のディスプレイシステム、技術またはデバイスを含み得る。少なくともいくつかの実装態様では、入力/出力デバイス2050は、ユーザがスタイラス型デバイス及び/または1つまたは複数の数字を介して入力を入力するためのパッドまたはタブレットなどのタッチまたはマルチタッチ対応デバイスも含み得る。いくつかの実施形態では、実施形態は、コンピュータシステム2000の単一のインスタンスを使用して実施され得るが、他の実施形態では、複数のそのようなシステム、またはコンピュータシステム2000を構成する複数のノードが、実施形態の異なる部分またはインスタンスをホストし得ることが考えられる。例えば、一実施形態では、いくつかの要素は、他の要素を実装するノードとは異なるコンピュータシステム2000の1つまたは複数のノードを介して実装され得る。
様々な実施形態では、コンピュータシステム2000は、1つのプロセッサ2010を含むユニプロセッサシステム、またはいくつかのプロセッサ2010(例えば、2つ、4つ、8つ、または別の適切な数)を含むマルチプロセッサシステムであり得る。プロセッサ2010は、命令を実行することが可能な任意の適切なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ2010は、x86、PowerPC、SPARC、もしくはMIPS ISA、または任意の他の適切なISAなどの様々な命令セットアーキテクチャ(ISA)のうちのいずれかを実装する、汎用または埋め込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ2010の各々は、同じISAを一般的に実装し得るが、必要ではない。
いくつかの実施形態では、少なくとも1つのプロセッサ2010はグラフィック処理装置であり得る。グラフィック処理装置またはGPUは、パーソナルコンピュータ、ワークステーション、ゲームコンソールまたは他のコンピューティングデバイスもしくは電子デバイス用の専用グラフィックレンダリングデバイスと考えられ得る。現代のGPUは、コンピュータグラフィックスを操作し表示するのに非常に効率的であり得て、それらの高度に並列な構造は、複雑なグラフィカルアルゴリズムの範囲に関しては、典型的なCPUよりも効果的であり得る。例えば、グラフィックプロセッサは、いくつかのグラフィックプリミティブ操作を、ホスト中央処理装置(CPU)を使用して画面に直接描画するよりもはるかに速く実行する方法で実施し得る。様々な実施形態では、グラフィックレンダリングは、少なくとも部分的に、そのようなGPUのうちの1つでの実行、または2つ以上のそのようなGPUでの並列実行のために構成されたプログラム命令によって実施され得る。GPU(複数可)は、プログラマがGPU(複数可)の機能を呼び出すことを可能にする1つまたは複数のアプリケーションプログラマインターフェース(API)を実装し得る。適切なGPUは、NVIDIA Corporation、ATI Technologies(AMD)などのベンダから市販され得る。
システムメモリ2020は、プロセッサ2010によってアクセス可能なプログラム命令及び/またはデータを格納し得る。様々な実施形態では、システムメモリ2020は、スタティックランダムアクセスメモリ(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。例示される実施形態では、上述のそれらのような所望の機能を実装するプログラム命令及びデータは、それぞれプログラム命令2025及びデータストレージ2035として、システムメモリ2020内に格納されることが示される。他の実施形態では、プログラム命令及び/またはデータは、異なるタイプのコンピュータアクセス可能媒体上、またはシステムメモリ2020もしくはコンピュータシステム2000とは別の同様の媒体上で受信、送信または格納され得る。一般的に言えば、非一時的コンピュータ可読記憶媒体は、I/Oインターフェース2030を介してコンピュータシステム2000に結合された磁気媒体または光学媒体、例えば、ディスクまたはCD/DVD−ROMなどの記憶媒体またはメモリ媒体を含み得る。コンピュータ可読媒体を介して格納されたプログラム命令及びデータは、ネットワークインターフェース2040を介して実施され得るような、ネットワーク及び/または無線リンクなどの通信媒体を介して伝達され得る、電気信号、電磁信号、またはデジタル信号などの伝送媒体または信号によって伝送され得る。
一実施形態では、I/Oインターフェース2030は、プロセッサ2010、システムメモリ2020、及びネットワークインターフェース2040または入力/出力デバイス2050などの他の周辺インターフェースを含む、デバイス内の任意の周辺デバイスの間のI/Oトラフィックを調整し得る。いくつかの実施形態では、I/Oインターフェース2030は、ある構成要素(例えば、システムメモリ2020)からのデータ信号を、別の構成要素(例えば、プロセッサ2010)による使用に適したフォーマットに変換するために、任意の必要なプロトコル、タイミング、または他のデータ変換を実行し得る。いくつかの実施形態では、I/Oインターフェース2030は、例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス規格、またはユニバーサルシリアルバス(USB)規格の変形など、様々なタイプの周辺バスを通じて取設されるデバイスに対するサポートを含み得る。いくつかの実施形態では、I/Oインターフェース2030の機能は、例えば、ノースブリッジ及びサウスブリッジなどの2つ以上の個別の構成要素に分割され得る。さらに、いくつかの実施形態では、システムメモリ2020へのインターフェースなどのI/Oインターフェース2030の機能性の一部または全部は、プロセッサ2010に直接組み込まれ得る。
ネットワークインターフェース2040は、コンピュータシステム2000と他のコンピュータシステムなどのネットワークに接続された他のデバイスとの間、またはコンピュータシステム2000のノード間でデータを交換することを可能にし得る。様々な実施形態では、ネットワークインターフェース2040は、例えば、任意の適切なタイプのネットワークなどの有線または無線の一般データネットワークを介した、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/テレフォニネットワークを介した、ファイバチャネルSANなどのストレージエリアネットワークを介した、または任意の他の適切なタイプのネットワーク及び/またはプロトコルを介した通信をサポートし得る。
入力/出力デバイス2050は、いくつかの実施形態では、1つまたは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、走査デバイス、音声または光学認識デバイス、または1つまたは複数のコンピュータシステム2000によるデータの入力または取得に適した任意の他のデバイスを含み得る。複数の入力/出力デバイス2050は、コンピュータシステム2000内に存在し得るか、またはコンピュータシステム2000の様々なノード上に分散され得る。いくつかの実施形態では、類似の入力/出力デバイスは、コンピュータシステム2000とは分離され得て、ネットワークインターフェース2040を介するなど、有線または無線接続を通じてコンピュータシステム2000の1つまたは複数のノードと相互作用し得る。
図15に示されるように、メモリ2020は、プログラム命令2025を含み得て、本明細書に記載されているような様々な方法及び技法、ならびにプログラム命令2025によってアクセス可能な様々なデータを含む、データストレージ2035を実装し得る。一実施形態では、プログラム命令2025は、本明細書に記載されるような、及び図に例示されるような実施形態のソフトウェア要素を含み得る。データストレージ2035は、実施形態で使用され得るデータを含み得る。他の実施形態では、他のまたは異なるソフトウェア要素及びデータが含まれ得る。
コンピュータシステム2000は単なる例示であり、本明細書に記載されるような技術の範囲を限定することを意図するものではないことを当業者なら理解するであろう。具体的には、コンピュータシステム及びデバイスは、コンピュータ、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、またはネットブックコンピュータ、メインフレームコンピュータシステム、携帯情報端末、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、ネットワークデバイス、インターネット機器、PDA、ワイヤレス電話、ポケットベル、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータなどの周辺機器、または一般的な任意のタイプのコンピューティングデバイスまたは電子デバイスなどを含む、指示された機能を実行することができるハードウェアまたはソフトウェアの任意の組み合わせを含み得る。コンピュータシステム2000はまた、例示されていない他のデバイスに接続され得るか、またはその代わりに、スタンドアロンシステムとして動作し得る。さらに、例示された構成要素によって提供される機能は、いくつかの実施形態では、より少ない構成要素に組み合わされ得るか、または追加の構成要素に分散され得る。同様に、いくつかの実施形態では、例示された構成要素のいくつかの機能は提供され得ない、及び/または他の追加の機能が利用可能であり得る。
様々なアイテムが使用されている間に、メモリまたはストレージに格納されるように示されているが、これらのアイテムまたはその一部は、メモリ管理及びデータの完全性の目的で、メモリと他のストレージデバイスとの間で送信され得ることも当業者なら理解するであろう。あるいは、他の実施形態では、ソフトウェア構成要素の一部または全部が別のデバイス上のメモリ内で実行され、コンピュータ間通信を介して例示されたコンピュータシステムと通信し得る。システム構成要素またはデータ構造の一部または全部はまた、コンピュータアクセス可能媒体または適切なドライブによって読み取られる携帯物品に(例えば、命令または構造化データとして)格納され得て、その様々な実施例が上述される。いくつかの実施形態では、コンピュータシステム2000とは別の非一時的なコンピュータアクセス可能媒体に格納された命令は、ネットワーク及び/または無線リンクなどの通信媒体を介して伝送される、伝送媒体または電気信号、電磁信号、もしくはデジタル信号などの信号を介してコンピュータシステム2000に送信され得る。様々な実施形態は、命令の受信、送信、もしくは格納、及び/またはコンピュータアクセス可能媒体に関する前述の説明に従って実行されたデータをさらに含み得る。したがって、本発明は、他のコンピュータシステム構成で実施され得る。
本明細書に記載の分散システムの実施形態のいずれか、またはそれらの構成要素のいずれかが、1つまたは複数のウェブサービスとして実装され得ることに留意されたい。例えば、データウェアハウスシステム内のリーダーノードは、データストレージサービス及び/またはデータベースサービスを、ネットワークベースのサービスとしてクライアントに提示し得る。いくつかの実施形態では、ネットワークベースのサービスは、ネットワークを介した相互運用可能な機器同士の相互作用をサポートするように設計されたソフトウェア及び/またはハードウェアシステムによって実装され得る。ネットワークベースのサービスは、ウェブサービス記述言語(WSDL)などの機械処理可能なフォーマットで記述されたインターフェースを有し得る。他のシステムは、ネットワークベースのサービスのインターフェースの記述によって規定された方法でウェブサービスと相互作用し得る。例えば、ネットワークベースのサービスは、他のシステムが呼び出し得る様々な操作を定義し得て、様々な操作を要求するときに、他のシステムが準拠することが予想され得る特定のアプリケーションプログラミングインターフェース(API)を定義し得る。
様々な実施形態では、ネットワークベースのサービスは、ネットワークベースのサービス要求に関連付けられたパラメータ及び/またはデータを含むメッセージの使用によって要求または呼び出され得る。そのようなメッセージは、拡張マークアップ言語(XML)などの特定のマークアップ言語に従ってフォーマットされ得る、及び/またはシンプルオブジェクトアクセスプロトコル(SOAP)などのプロトコルを使用してカプセル化され得る。ウェブサービス要求を実行するために、ネットワークベースのサービスクライアントは、ハイパーテキストトランスファープロトコル(HTTP)などのインターネットベースのアプリケーション層転送プロトコルを使用して、要求を含むメッセージを組み立て、そのメッセージをウェブサービスに対応するアドレス指定可能なエンドポイント(例えば、Uniform Resource Locator(URL))に伝達し得る。
いくつかの実施形態では、ウェブサービスは、メッセージベースの技法ではなく、Representational State Transfer(「RESTful」)技法を使用して実装され得る。例えば、RESTful技法に従って実装されたウェブサービスは、SOAPメッセージ内にカプセル化されるのではなく、PUT、GET、またはDELETEなどのHTTPメソッド内に含まれるパラメータによって呼び出し得る。
本明細書で図に例示され、説明される様々な方法は、方法の例示的な実施形態を表す。本方法は、ソフトウェア、ハードウェア、またはこれらの組み合わせで実装され得る。方法の順序は変更され得て、様々な要素の、追加、再順位付け、組み合わせ、除外、変更などがされ得る。
本開示の利点を有する当業者に明白であるように、様々な変形及び変更が行われ得る。本発明は、全てのそのような変形及び変更を含むことを意図しており、したがって、上記説明が限定的な意味ではなく、例示的であると考えるべきである。

Claims (20)

  1. システムであって、
    少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサに、少なくとも、
    1つまたは複数のリモートデータストア内の1つまたは複数のデータセットを示すスキーマを受信し、
    前記スキーマを、クエリを実行するように構成されたコンピューティングリソースのプールとは別に格納し、
    前記1つまたは複数のリモートデータストア内の前記1つまたは複数のデータセットに送信された第1のクエリを受信し、前記1つまたは複数のデータセットは、クエリを実行するように構成された前記コンピューティングリソースのプールとは別に格納され、
    前記第1のクエリの前記受信に応答して、
    クエリを実行するように構成された前記コンピューティングリソースのプールから前記第1のクエリを実行するための1つまたは複数のコンピューティングリソースをプロビジョニングし、
    前記リモートデータストアに前記に格納された1つまたは複数のデータセットに関して前記第1のクエリを実行するために、前記プロビジョニングされたコンピューティングリソースに前記第1のクエリをルーティングし、前記プロビジョニングされたコンピューティングリソースは、前記第1のクエリの実行の一部として、前記1つまたは複数のデータセットを示す前記別に格納されたスキーマを取得し、
    前記プロビジョニングされたコンピューティングリソースで生成された前記第1のクエリの結果を提供する
    ための方法を実行させるプログラム命令を格納するためのメモリを含む、前記システム。
  2. 前記または複数のデータセットを示す前記スキーマは、メタデータストアに格納され
    前記プロビジョニングされたコンピューティングリソースが、記メタデータストア内の前記スキーマにアクセスして前記スキーマを取得する、請求項1に記載のシステム。
  3. 前記第1のクエリ及び前記スキーマが、同じユーザインターフェースを介して受信される、請求項2に記載のシステム。
  4. 前記少なくとも1つのプロセッサが、ネットワークベースのマネージクエリサービスの一部として実装され、少なくとも1つの前記データセットが、ネットワークベースのデータストレージサービスに格納され、前記スキーマが、ネットワークベースのデータカタログサービスに格納され、前記プロビジョニングされたコンピューティングリソースが、仮想コンピューティングサービスの一部として実装され、前記マネージクエリサービス、データストレージサービス、データカタログサービス、及び仮想計算サービスが、同じプロバイダネットワークの一部として提供される、請求項3に記載のシステム。
  5. 方法であって、
    少なくとも1つのプロセッサが、1つまたは複数のリモートデータストア内の1つまたは複数のデータセットを示すスキーマを受信し、
    前記少なくとも1つのプロセッサが、前記スキーマを、クエリを実行するように構成されたコンピューティングリソースのプールとは別に格納し、
    少なくとも1つのプロセッサが、前記1つまたは複数のリモートデータストア内の前記1つまたは複数のデータセットに送信された第1のクエリを受信することであって、前記1つまたは複数のデータセットは、クエリを実行するように構成された前記コンピューティングリソースのプールとは別に格納される、前記受信することと、
    前記第1のクエリを受信することに応答して、
    前記少なくとも1つのプロセッサが、クエリを実行するように構成された前記コンピューティングリソースのプールから前記第1のクエリを実行するための1つまたは複数のコンピューティングリソースをプロビジョニングすることと、
    前記少なくとも1つのプロセッサが、前記リモートデータストアに前記に格納されたデータセットに関して前記第1のクエリを実行するために、前記プロビジョニングされたコンピューティングリソースに前記第1のクエリをルーティングすることであって、前記プロビジョニングされたコンピューティングリソースは、前記第1のクエリの実行の一部として、前記1つまたは複数のデータセットを示す前記別に格納されたスキーマを取得する、前記ルーティングすることと、
    を含む、前記方法。
  6. 前記1つまたは複数のコンピューティングリソースを前記プロビジョニングすることが、前記第1のクエリを実行するための特定のクエリエンジンを実装する1つまたは複数のコンピューティングリソースを選択ことを備える、請求項5に記載の方法。
  7. 前記特定のクエリエンジンが、前記第1のクエリで指示される、請求項6に記載の方法。
  8. 少なくともある前記データセットが、別の前記データセットとは異なるデータフォーマットに従って格納され、前記少なくとも一方のデータセットが、他方の前記データセットとは異なるリモートデータストアに格納される、請求項5に記載の方法。
  9. 前記第1のクエリの1つまたは複数のクエリ実行メトリックを監視することと、
    前記監視することに基づいて、前記第1のクエリの実行メトリックが、クエリ実行制限を超えていると判定することと、
    前記コンピューティングリソースで前記第1のクエリの実行を停止することとをさらに含む、請求項5に記載の方法。
  10. または複数のデータセットを示す前記スキーマは、メタデータストアに格納され
    前記プロビジョニングされたコンピューティングリソースが、記メタデータストア内の前記スキーマにアクセスして前記スキーマを取得する、請求項5に記載の方法。
  11. 前記第1のクエリが、プログラムインターフェースを介して受信され、前記方法が、前記プログラムインターフェースを介して前記プロビジョニングされたコンピューティングリソースで生成された前記第1のクエリの結果を返すことをさらに含む、請求項5に記載の方法。
  12. 前記第1のクエリが、前記第1のクエリの結果の宛先を示し、前記方法が、前記プロビジョニングされたコンピューティングリソースで生成された前記第1のクエリの結果を、前記結果の宛先に送信することをさらに含む、請求項5に記載の方法。
  13. 前記第1のクエリが、前記受信すること、前記プロビジョニングすること、及び前記ルーティングすることを実行するネットワークベースのサービスのサービスエンドポイントで受信され、前記第1のクエリが、第1のクライアントから受信され、複数の他のクエリが、前記データセットとは異なる1つまたは複数のデータセットにアクセスする複数の他のクライアントから、前記サービスエンドポイントで受信され、前記ネットワークベースのサービスが、前記他の受信したクエリに対して、前記受信すること、前記プロビジョニングすること、及び前記ルーティングすることを実行し、前記サービスエンドポイントは前記少なくとも1つのプロセッサである、請求項5に記載の方法。
  14. 1つまたは複数のコンピューティングデバイスによって実行されると、前記1つまたは複数のコンピューティングデバイスに、
    1つまたは複数のリモートデータストア内の1つまたは複数のデータセットを示すスキーマを受信することと、
    前記スキーマを、クエリを実行するように構成されたコンピューティングリソースのプールとは別に格納することと、
    前記1つまたは複数のリモートデータストア内の前記1つまたは複数のデータセットに送信された第1のクエリを受信することであって、前記1つまたは複数のデータセットは、クエリを実行するように構成された前記コンピューティングリソースのプールとは別に格納される、前記受信することと、
    前記第1のクエリを受信することに応答して、
    エリを実行するように構成された前記コンピューティングリソースのプールから前記第1のクエリを実行するための1つまたは複数のコンピューティングリソースを選択することと、
    前記選択されたコンピューティングリソースを前記コンピューティングリソースのプールから削除することと、
    前記削除されたコンピューティングリソースを前記第1のクエリと関連付けることと、
    前記リモートデータストアに前記に格納されたデータセットに関して前記第1のクエリを実行するために、前記選択された1つまたは複数のコンピューティングリソースに前記第1のクエリをルーティングすることであって、前記選択された1つまたは複数のコンピューティングリソースは、前記第1のクエリの実行の一部として、前記1つまたは複数のデータセットを示す前記別に格納されたスキーマを取得する、前記ルーティングすること
    を実施させるプログラム命令を格納する、非一時的コンピュータ可読記憶媒体。
  15. 前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
    前記第1のクエリの1つまたは複数のクエリ実行メトリックを監視することと、
    前記監視することに基づいて、前記第1のクエリの実行メトリックが、クエリ実行制限を超えていると判定することと、
    前記コンピューティングリソースで前記第1のクエリの実行を停止することとを実施させる、請求項14に記載の非一時的コンピュータ可読記憶媒体。
  16. 前記第1のクエリが、構造化照会言語(SQL)に従ってフォーマットされる、請求項14に記載の非一時的コンピュータ可読記憶媒体。
  17. 前記第1のクエリが、プログラムインターフェースを介して受信され、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記プログラムインターフェースを介して前記選択されたコンピューティングリソースで生成された前記第1のクエリの結果を返すことをさらに実施させる、請求項14に記載の非一時的コンピュータ可読記憶媒体。
  18. または複数のデータセットを示す前記スキーマは、メタデータストアに格納され
    前記選択されたコンピューティングリソースが前記メタデータストア内の前記スキーマにアクセスして前記スキーマを取得する、請求項14に記載の非一時的コンピュータ可読記憶媒体。
  19. 前記第1のクエリ及び前記スキーマが、同じユーザインターフェースを介して受信される、請求項18に記載の非一時的コンピュータ可読記憶媒体。
  20. 前記1つまたは複数のコンピューティングデバイスが、ネットワークベースのマネージクエリサービスの一部として実装され、少なくとも1つの前記データセットが、ネットワークベースのデータストレージサービスに格納され、前記スキーマが、ネットワークベースのデータカタログサービスに格納され、前記選択されたコンピューティングリソースが、仮想コンピューティングサービスの一部として実装され、前記マネージクエリサービス、データストレージサービス、データカタログサービス、及び仮想コンピューティングサービスが、同じプロバイダネットワークの一部として提供される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
JP2019511461A 2016-09-01 2017-08-31 マネージクエリサービス Active JP6750102B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662382477P 2016-09-01 2016-09-01
US62/382,477 2016-09-01
US15/470,829 2017-03-27
US15/470,829 US10803060B2 (en) 2016-09-01 2017-03-27 Managed query service
PCT/US2017/049640 WO2018045185A1 (en) 2016-09-01 2017-08-31 Managed query service

Publications (2)

Publication Number Publication Date
JP2019534496A JP2019534496A (ja) 2019-11-28
JP6750102B2 true JP6750102B2 (ja) 2020-09-02

Family

ID=61242674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019511461A Active JP6750102B2 (ja) 2016-09-01 2017-08-31 マネージクエリサービス

Country Status (7)

Country Link
US (9) US20180060132A1 (ja)
EP (1) EP3507716A1 (ja)
JP (1) JP6750102B2 (ja)
CN (1) CN109643312B (ja)
AU (1) AU2017321715B2 (ja)
SG (1) SG11201901511QA (ja)
WO (1) WO2018045185A1 (ja)

Families Citing this family (171)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9229983B2 (en) * 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US11487771B2 (en) * 2014-06-25 2022-11-01 Microsoft Technology Licensing, Llc Per-node custom code engine for distributed query processing
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10681071B1 (en) 2016-08-02 2020-06-09 ThreatConnect, Inc. Enrichment and analysis of cybersecurity threat intelligence and orchestrating application of threat intelligence to selected network security events
US20180060132A1 (en) 2016-09-01 2018-03-01 Amazon Technologies, Inc. Stateful resource pool management for job execution
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US10726009B2 (en) * 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US12013895B2 (en) 2016-09-26 2024-06-18 Splunk Inc. Processing data using containerized nodes in a containerized scalable environment
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US10326657B1 (en) 2016-09-30 2019-06-18 Juniper Networks, Inc. Multi vendor device support in network management systems
US10230585B1 (en) 2016-09-30 2019-03-12 Juniper Networks, Inc. Multi vendor device support in network management systems
US10397130B2 (en) * 2016-11-11 2019-08-27 Vmware, Inc. Multi-cloud resource reservations
US11663205B2 (en) * 2017-05-04 2023-05-30 Salesforce, Inc. Technologies for asynchronous querying
US10956435B2 (en) * 2017-05-05 2021-03-23 Servicenow, Inc. Global search
US10678580B2 (en) * 2017-05-09 2020-06-09 Vmware, Inc. Methods and apparatus to publish internal commands as an application programming interface in a cloud infrastructure
US11372858B2 (en) * 2017-05-18 2022-06-28 Oracle International Corporation Estimated query performance
US11210133B1 (en) * 2017-06-12 2021-12-28 Pure Storage, Inc. Workload mobility between disparate execution environments
US11989429B1 (en) 2017-06-12 2024-05-21 Pure Storage, Inc. Recommending changes to a storage system
US10713248B2 (en) * 2017-07-23 2020-07-14 AtScale, Inc. Query engine selection
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US10579431B2 (en) * 2017-08-12 2020-03-03 Facebook, Inc. Systems and methods for distributed management of computing resources
CN109428912B (zh) * 2017-08-24 2020-07-10 阿里巴巴集团控股有限公司 一种分布式***资源分配方法、装置及***
US11113413B2 (en) * 2017-08-25 2021-09-07 Immuta, Inc. Calculating differentially private queries using local sensitivity on time variant databases
US10313413B2 (en) * 2017-08-28 2019-06-04 Banjo, Inc. Detecting events from ingested communication signals
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US10778806B2 (en) * 2017-10-10 2020-09-15 Facebook, Inc. Shard sandboxing
US11017455B1 (en) * 2017-11-10 2021-05-25 Core Scientific, Inc. Dynamic computer marketplace system and method
US10456673B1 (en) * 2017-11-17 2019-10-29 Amazon Technologies, Inc. Resource selection for hosted game sessions
US10891290B2 (en) * 2017-12-22 2021-01-12 Teradata Us, Inc. Query plan searching and optimization
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11200402B2 (en) * 2018-01-26 2021-12-14 GICSOFT, Inc. Application execution based on object recognition
US11762706B1 (en) * 2018-02-01 2023-09-19 Vmware, Inc. Computing environment pooling
US10949252B1 (en) * 2018-02-13 2021-03-16 Amazon Technologies, Inc. Benchmarking machine learning models via performance feedback
CN110321214A (zh) * 2018-03-29 2019-10-11 阿里巴巴集团控股有限公司 一种数据查询方法、装置及设备
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
US20190361999A1 (en) * 2018-05-23 2019-11-28 Microsoft Technology Licensing, Llc Data analysis over the combination of relational and big data
US11030204B2 (en) 2018-05-23 2021-06-08 Microsoft Technology Licensing, Llc Scale out data storage and query filtering using data pools
US10922316B2 (en) 2018-06-13 2021-02-16 Amazon Technologies, Inc. Using computing resources to perform database queries according to a dynamically determined query size
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10824624B2 (en) * 2018-07-12 2020-11-03 Bank Of America Corporation System for analyzing, optimizing, and remediating a proposed data query prior to query implementation
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN109032803B (zh) 2018-08-01 2021-02-12 创新先进技术有限公司 数据处理方法和装置、客户端
US11356532B1 (en) * 2018-08-10 2022-06-07 Meta Platforms, Inc. Systems and methods for packaging web resources
US12013856B2 (en) 2018-08-13 2024-06-18 Amazon Technologies, Inc. Burst performance of database queries according to query size
US10997250B2 (en) * 2018-09-24 2021-05-04 Salesforce.Com, Inc. Routing of cases using unstructured input and natural language processing
US10924398B2 (en) * 2018-09-25 2021-02-16 Ebay Inc. Time-series data monitoring with sharded server
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) * 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US20200125664A1 (en) * 2018-10-19 2020-04-23 Sap Se Network virtualization for web application traffic flows
CN111125207B (zh) * 2018-10-30 2021-03-12 亿度慧达教育科技(北京)有限公司 一种数据获取方法、装置、连接器及presto引擎
US10938821B2 (en) * 2018-10-31 2021-03-02 Dell Products L.P. Remote access controller support registration system
CN109408580B (zh) * 2018-10-31 2020-10-20 北京百分点信息科技有限公司 一种跨数据源的sql编译装置及方法
US11093620B2 (en) 2018-11-02 2021-08-17 ThreatConnect, Inc. Ahead of time application launching for cybersecurity threat intelligence of network security events
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
IT201800021343A1 (it) * 2018-12-28 2020-06-28 Telecom Italia Spa Sistema per fornire un servizio
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11042402B2 (en) * 2019-02-26 2021-06-22 Sap Se Intelligent server task balancing based on server capacity
US11126466B2 (en) 2019-02-26 2021-09-21 Sap Se Server resource balancing using a fixed-sharing strategy
US11307898B2 (en) 2019-02-26 2022-04-19 Sap Se Server resource balancing using a dynamic-sharing strategy
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11327970B1 (en) * 2019-03-25 2022-05-10 Amazon Technologies, Inc. Context dependent execution time prediction for redirecting queries
US11803798B2 (en) 2019-04-18 2023-10-31 Oracle International Corporation System and method for automatic generation of extract, transform, load (ETL) asserts
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11436259B2 (en) * 2019-04-30 2022-09-06 Oracle International Corporation System and method for SaaS/PaaS resource usage and allocation in an analytic applications environment
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11308100B2 (en) 2019-06-25 2022-04-19 Amazon Technologies, Inc. Dynamically assigning queries to secondary query processing resources
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US12019633B2 (en) * 2019-07-19 2024-06-25 International Business Machines Corporation Providing multi-tier query execution options in a serverless query environment
US11216446B2 (en) * 2019-08-29 2022-01-04 Snowflake Inc. Identifying software regressions based on query retry attempts in a database environment
US10915418B1 (en) * 2019-08-29 2021-02-09 Snowflake Inc. Automated query retry in a database environment
US11409626B2 (en) 2019-08-29 2022-08-09 Snowflake Inc. Decoupling internal and external tasks in a database environment
CN112540843B (zh) * 2019-09-20 2024-05-07 杭州海康威视数字技术股份有限公司 资源的分配方法、装置、存储设备及存储介质
US11442931B2 (en) * 2019-09-27 2022-09-13 Amazon Technologies, Inc. Enabling federated query access to Heterogeneous data sources
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
WO2021167659A1 (en) * 2019-11-14 2021-08-26 Trideum Corporation Systems and methods of monitoring and controlling remote assets
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
CN110928721B (zh) * 2020-01-22 2020-06-19 北京懿医云科技有限公司 任务执行方法与装置、电子设备、存储介质
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11048716B1 (en) * 2020-01-31 2021-06-29 Snowflake Inc. Managed virtual warehouses for tasks
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11863573B2 (en) * 2020-03-06 2024-01-02 ThreatConnect, Inc. Custom triggers for a network security event for cybersecurity threat intelligence
US10860609B1 (en) * 2020-03-25 2020-12-08 Snowflake Inc. Distributed stop operator for query processing
US11520616B2 (en) * 2020-05-01 2022-12-06 International Business Machines Corporation Virtual server creation monitoring and resource allocation system
US11537616B1 (en) 2020-06-29 2022-12-27 Amazon Technologies, Inc. Predicting query performance for prioritizing query execution
US20220043822A1 (en) * 2020-08-04 2022-02-10 International Business Machines Corporation Shadow experiments for serverless multi-tenant cloud services
US11687833B2 (en) * 2020-08-27 2023-06-27 Google Llc Data management forecasting from distributed tracing
RU2751441C1 (ru) * 2020-09-11 2021-07-13 Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный университет имени М.В.Ломоносова» (МГУ) Способ формирования вычислительного комплекса
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11586624B2 (en) * 2020-09-28 2023-02-21 Databricks, Inc. Integrated native vectorized engine for computation
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
CN111930780B (zh) * 2020-10-12 2020-12-18 上海冰鉴信息科技有限公司 数据查询方法及***
US11500830B2 (en) 2020-10-15 2022-11-15 International Business Machines Corporation Learning-based workload resource optimization for database management systems
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
US11750451B2 (en) * 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11762860B1 (en) 2020-12-10 2023-09-19 Amazon Technologies, Inc. Dynamic concurrency level management for database queries
US11782918B2 (en) * 2020-12-11 2023-10-10 International Business Machines Corporation Selecting access flow path in complex queries
US11880364B2 (en) * 2021-01-25 2024-01-23 Snowflake Inc. Predictive resource allocation for distributed query execution
US11138038B1 (en) * 2021-01-29 2021-10-05 Snowflake Inc. Adaptive freepool size prediction
US11853324B2 (en) * 2021-05-10 2023-12-26 Argo AI, LLC Systems and methods for atomic publication of distributed writes to a distributed data warehouse
US11755621B2 (en) 2021-05-10 2023-09-12 Argo AI, LLC Systems and methods for atomic publication of distributed writes to a distributed data warehouse
US11681698B2 (en) 2021-05-10 2023-06-20 Argo AI, LLC Systems and methods for atomic publication of distributed writes to a distributed data warehouse
CN113222449A (zh) * 2021-05-27 2021-08-06 湖北文理学院 标准化作业有效执行度评估方法及装置
CN115550354A (zh) * 2021-06-11 2022-12-30 腾讯云计算(北京)有限责任公司 一种数据处理方法、装置及计算机可读存储介质
US11985144B2 (en) 2021-06-25 2024-05-14 ThreatConnect, Inc. Browser extension for cybersecurity threat intelligence and response
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN113434556B (zh) * 2021-07-22 2022-05-31 支付宝(杭州)信息技术有限公司 一种数据处理方法和***
CN113918561A (zh) * 2021-09-10 2022-01-11 上海跬智信息技术有限公司 基于云上分析场景的混合查询方法和***、存储介质
US11954473B2 (en) 2021-09-20 2024-04-09 Microstrategy Incorporated Deployment architecture for multi-tenant cloud computing systems
US11995476B1 (en) 2021-09-22 2024-05-28 Amazon Technologies, Inc. Client-configurable retention periods for machine learning service-managed resources
US20230125765A1 (en) * 2021-10-21 2023-04-27 International Business Machines Corporation Container pool management
US11893038B2 (en) * 2021-10-21 2024-02-06 Treasure Data, Inc. Data type based visual profiling of large-scale database tables
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
US11579663B1 (en) 2021-12-13 2023-02-14 Dell Products L.P. Modular information handling system with automated housing cover removal
US11907042B2 (en) 2021-12-13 2024-02-20 Dell Products L.P. Reduction of high battery voltage by ratios using a main board for power supply of processing unit based on battery voltage changes over time
US11829223B2 (en) 2021-12-13 2023-11-28 Dell Products L.P. Information handling system battery disposition automated using performance metrics
US11915207B2 (en) 2021-12-13 2024-02-27 Dell Products L.P. Modular information handling system with automated display removal
US11861342B2 (en) 2022-01-28 2024-01-02 Microstrategy Incorporated Enhanced cloud-computing environment deployment
US20230267148A1 (en) * 2022-02-22 2023-08-24 Bank Of America Corporation Automated Query Analysis and Remediation Tool
US11924115B2 (en) * 2022-05-20 2024-03-05 Ipco 2012 Limited Systems and methods for use in balancing network resources
CN115277657B (zh) * 2022-05-30 2023-06-13 上海上讯信息技术股份有限公司 一种数据库协议运维的方法及设备
US11947555B1 (en) * 2022-09-30 2024-04-02 Amazon Technologies, Inc. Intelligent query routing across shards of scalable database tables

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216109B1 (en) * 1994-10-11 2001-04-10 Peoplesoft, Inc. Iterative repair optimization with particular application to scheduling for integrated capacity and inventory planning
US6366915B1 (en) * 1998-11-04 2002-04-02 Micron Technology, Inc. Method and system for efficiently retrieving information from multiple databases
US6314447B1 (en) * 1999-10-04 2001-11-06 Sony Corporation System uses local registry and load balancing procedure for identifying processing capabilities of a remote device to perform a processing task
US6473750B1 (en) * 1999-10-15 2002-10-29 Microsoft Corporation Adaptive query execution in a distributed database system
US6859926B1 (en) 2000-09-14 2005-02-22 International Business Machines Corporation Apparatus and method for workload management using class shares and tiers
US20030187841A1 (en) * 2002-03-28 2003-10-02 International Business Machines Corporation Method and structure for federated web service discovery search over multiple registries with result aggregation
US7243093B2 (en) * 2002-11-27 2007-07-10 International Business Machines Corporation Federated query management
JP2004287801A (ja) * 2003-03-20 2004-10-14 Sony Computer Entertainment Inc 情報処理システム、情報処理装置、分散情報処理方法及びコンピュータプログラム
US7406461B1 (en) * 2004-06-11 2008-07-29 Seisint, Inc. System and method for processing a request to perform an activity associated with a precompiled query
US7870565B2 (en) * 2005-06-30 2011-01-11 Intel Corporation Systems and methods for secure host resource management
US7634590B2 (en) * 2005-10-12 2009-12-15 Computer Associates Think, Inc. Resource pool monitor
US7613742B2 (en) 2006-05-02 2009-11-03 Mypoints.Com Inc. System and method for providing three-way failover for a transactional database
US7788544B2 (en) * 2006-05-03 2010-08-31 Computer Associates Think, Inc. Autonomous system state tolerance adjustment for autonomous management systems
US20080033964A1 (en) 2006-08-07 2008-02-07 Bea Systems, Inc. Failure recovery for distributed search
US10122593B2 (en) 2007-02-20 2018-11-06 Oracle America, Inc. Method and system for managing computing resources using an electronic leasing agent
US8782075B2 (en) * 2007-05-08 2014-07-15 Paraccel Llc Query handling in databases with replicated data
US8429096B1 (en) * 2008-03-31 2013-04-23 Amazon Technologies, Inc. Resource isolation through reinforcement learning
JP5238432B2 (ja) * 2008-09-26 2013-07-17 株式会社東芝 メタデータ収集装置、ならびにその方法およびプログラム
US8285710B2 (en) * 2008-10-09 2012-10-09 International Business Machines Corporation Automated query path reporting in distributed databases
US8145652B2 (en) * 2008-10-09 2012-03-27 International Business Machines Corporation Automated propagation of non-conflicting queries in distributed databases
US20100094891A1 (en) * 2008-10-13 2010-04-15 Bid Solve, Inc. Client-Server System for Multi-Resource Searching
US8819106B1 (en) * 2008-12-12 2014-08-26 Amazon Technologies, Inc. Managing distributed execution of programs
US8296419B1 (en) * 2009-03-31 2012-10-23 Amazon Technologies, Inc. Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US8429097B1 (en) 2009-08-12 2013-04-23 Amazon Technologies, Inc. Resource isolation using reinforcement learning and domain-specific constraints
US9495429B2 (en) 2010-07-09 2016-11-15 Daniel Paul Miranker Automatic synthesis and presentation of OLAP cubes from semantically enriched data sources
JP5417287B2 (ja) 2010-09-06 2014-02-12 株式会社日立製作所 計算機システム、及び、計算機システムの制御方法
US9355148B2 (en) * 2011-04-29 2016-05-31 Hewlett Packard Enterprise Development Lp Systems and methods for in-memory processing of events
US9052941B1 (en) * 2011-05-27 2015-06-09 Amazon Technologies, Inc. Automated testing of online functionality providers
US8881142B1 (en) 2011-06-21 2014-11-04 Amazon Technologies, Inc. Determining and using probable instance lifetimes
US9275102B2 (en) 2011-07-20 2016-03-01 International Business Machines Corporation System load query governor
US8959223B2 (en) * 2011-09-29 2015-02-17 International Business Machines Corporation Automated high resiliency system pool
US9372827B2 (en) 2011-09-30 2016-06-21 Commvault Systems, Inc. Migration of an existing computing system to new hardware
JP5865668B2 (ja) * 2011-10-21 2016-02-17 クラリオン株式会社 情報端末、プログラムおよび検索方法
US9026864B2 (en) * 2012-02-29 2015-05-05 Red Hat, Inc. Offloading health-checking policy
US9294236B1 (en) 2012-03-27 2016-03-22 Amazon Technologies, Inc. Automated cloud resource trading system
US9240025B1 (en) 2012-03-27 2016-01-19 Amazon Technologies, Inc. Dynamic pricing of network-accessible resources for stateful applications
US8676622B1 (en) 2012-05-01 2014-03-18 Amazon Technologies, Inc. Job resource planner for cloud computing environments
US8775282B1 (en) * 2012-05-18 2014-07-08 Amazon Technologies, Inc. Capacity management of draining-state platforms providing network-accessible resources
US9219749B2 (en) 2012-09-07 2015-12-22 Oracle International Corporation Role-driven notification system including support for collapsing combinations
US9621435B2 (en) 2012-09-07 2017-04-11 Oracle International Corporation Declarative and extensible model for provisioning of cloud based services
US9058219B2 (en) * 2012-11-02 2015-06-16 Amazon Technologies, Inc. Custom resources in a resource stack
US9449039B2 (en) * 2012-11-26 2016-09-20 Amazon Technologies, Inc. Automatic repair of corrupted blocks in a database
US9229983B2 (en) 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US10552774B2 (en) * 2013-02-11 2020-02-04 Amazon Technologies, Inc. Cost-minimizing task scheduler
US9342557B2 (en) 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
US9208032B1 (en) 2013-05-15 2015-12-08 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US8977600B2 (en) 2013-05-24 2015-03-10 Software AG USA Inc. System and method for continuous analytics run against a combination of static and real-time data
US9384359B2 (en) 2013-08-01 2016-07-05 Palo Alto Research Center Incorporated Information firewall
US10198292B2 (en) 2013-11-27 2019-02-05 Actian Sub Iii, Inc. Scheduling database queries based on elapsed time of queries
US20150163223A1 (en) * 2013-12-09 2015-06-11 International Business Machines Corporation Managing Resources In A Distributed Computing Environment
US10325032B2 (en) 2014-02-19 2019-06-18 Snowflake Inc. Resource provisioning systems and methods
US20170132042A1 (en) * 2014-04-23 2017-05-11 Hewlett Packard Enterprise Development Lp Selecting a platform configuration for a workload
WO2016133435A1 (en) * 2015-02-17 2016-08-25 Telefonaktiebolaget Lm Ericsson (Publ) Method and device for deciding where to execute subqueries of an analytics continuous query
US9787709B2 (en) 2015-06-17 2017-10-10 Bank Of America Corporation Detecting and analyzing operational risk in a network environment
US20170142157A1 (en) * 2015-11-13 2017-05-18 International Business Machines Corporation Optimization of cloud compliance services based on events and trends
US9760477B1 (en) * 2016-04-12 2017-09-12 Linkedin Corporation Self-healing job executor pool
JP7271059B2 (ja) * 2016-04-28 2023-05-11 スノーフレーク インク. マルチクラスタウェアハウス
US10153941B2 (en) * 2016-05-17 2018-12-11 Microsoft Technology Licensing, Llc Distributed operational control in computing systems
US20180060132A1 (en) 2016-09-01 2018-03-01 Amazon Technologies, Inc. Stateful resource pool management for job execution
US10545492B2 (en) * 2016-09-26 2020-01-28 Rockwell Automation Technologies, Inc. Selective online and offline access to searchable industrial automation data

Also Published As

Publication number Publication date
US11403297B2 (en) 2022-08-02
CN109643312A (zh) 2019-04-16
SG11201901511QA (en) 2019-03-28
EP3507716A1 (en) 2019-07-10
AU2017321715B2 (en) 2020-06-18
US11461330B2 (en) 2022-10-04
US11803546B2 (en) 2023-10-31
US20210049175A1 (en) 2021-02-18
US20180060393A1 (en) 2018-03-01
US10803060B2 (en) 2020-10-13
US20180060133A1 (en) 2018-03-01
US20180060394A1 (en) 2018-03-01
JP2019534496A (ja) 2019-11-28
US10762086B2 (en) 2020-09-01
US20200233869A1 (en) 2020-07-23
US20180060395A1 (en) 2018-03-01
WO2018045185A1 (en) 2018-03-08
US20180060400A1 (en) 2018-03-01
AU2017321715A1 (en) 2019-03-21
CN109643312B (zh) 2023-08-11
US20180060132A1 (en) 2018-03-01
US10614066B2 (en) 2020-04-07
US20210097080A1 (en) 2021-04-01
US11461329B2 (en) 2022-10-04

Similar Documents

Publication Publication Date Title
JP6750102B2 (ja) マネージクエリサービス
US10936589B1 (en) Capability-based query planning for heterogenous processing nodes
US11487760B2 (en) Query plan management associated with a shared pool of configurable computing resources
US10447772B2 (en) Managed function execution for processing data streams in real time
US10970303B1 (en) Selecting resources hosted in different networks to perform queries according to available capacity
US9996565B2 (en) Managing an index of a table of a database
Zheng et al. Service-generated big data and big data-as-a-service: an overview
US11055352B1 (en) Engine independent query plan optimization
US10002170B2 (en) Managing a table of a database
US10909114B1 (en) Predicting partitions of a database table for processing a database query
US9185008B1 (en) Operational reporting in a computing environment
US10944814B1 (en) Independent resource scheduling for distributed data processing programs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200512

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200714

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200812

R150 Certificate of patent or registration of utility model

Ref document number: 6750102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250