JP2022155454A - ワークロードクラスを使用したsql文のエラスティックコンピュートノードへのルーティング - Google Patents

ワークロードクラスを使用したsql文のエラスティックコンピュートノードへのルーティング Download PDF

Info

Publication number
JP2022155454A
JP2022155454A JP2021181142A JP2021181142A JP2022155454A JP 2022155454 A JP2022155454 A JP 2022155454A JP 2021181142 A JP2021181142 A JP 2021181142A JP 2021181142 A JP2021181142 A JP 2021181142A JP 2022155454 A JP2022155454 A JP 2022155454A
Authority
JP
Japan
Prior art keywords
sql statement
elastic compute
node
query
execution
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.)
Pending
Application number
JP2021181142A
Other languages
English (en)
Inventor
ジェヨン・チェ
Jaeyoung Choi
ドク・ヘ・キム
Deok Hoe Kim
キュ・ファン・キム
Kyu Hwan Kim
チェ・クワン・イ
Chae Kwang Lee
ジェーン・ジュン・イ
Jung Lee Jane
ジュチャン・イ
Juchang Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Publication of JP2022155454A publication Critical patent/JP2022155454A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/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/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/242Query formulation
    • 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/24537Query rewriting; Transformation of operators
    • 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/24552Database cache 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/2457Query processing with adaptation to user needs
    • G06F16/24573Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(SQL)文をエラスティックコンピュートノード(ECN)にルーティングするための技術を提供すること。【解決手段】エラスティックコンピュートノードは、永続的データベーステーブルを記憶していない。たとえば、SQL文が、分散型データベース環境内での実行に向けて受領され得る。SQL文のプロパティにマッチングするワークロードクラスが、識別され得る。そのワークロードクラスに基づいて、エラスティックコンピュートノードの組を識別するルーティングロケーションヒントを取得することができる。次いで、SQL文を、実行に向けて、識別されたエラスティックコンピュートノードのうちの1つにルーティングすることができる。エラスティックコンピュートノードにおけるSQL文の実行は、永続的データベーステーブルを記憶している他のノードからデータベースデータを読み出すことを含むことができる。【選択図】図4

Description

本出願は、分散型データベースに関し、より詳しくは、分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(SQL)文をエラスティックコンピュートノード(elastic compute node、ECN)にルーティングするための技術に関する。
分散型データベースシステムにおいては、構造化クエリ言語(structured query language、SQL)文を適正なワーカノードに(たとえば、SQL文を最も効率的に処理することができるワーカノードに)ルーティングすることが重要である。分散型データベースシステムは、通常、データアフィニティに基づいて、SQL文をワーカノードにルーティングする。たとえば、SQL文が特定のデータベーステーブルからのデータを使用する場合には、SQL文は、特定のデータベーステーブルが記憶されているワーカノードにルーティングされ得る。
SAP(登録商標)Hana(登録商標)分散型データベースシステムにおいては、クライアント側文ルーティング(client-side statement routing)と称される自動SQL文ルーティングシステムが存在する。SQLコンパイル時に、クライアント側文ルーティング機構は、どのワーカノードが所与のSQL文に必要なデータセットを有するかを決定し、次いで、そのワーカノードのロケーションをクライアント側にキャッシュする。同じSQL文が、将来、実行されるとき、クライアント側は、自動的に、決定されたワーカノードに直接、SQL文をルーティングする。そのような自動的なクライアント側文ルーティングは、状況によっては効率的な場合があるが、ワークロードの分散の制御には柔軟性を与えていない。
この「発明の概要」は、「発明を実施するための形態」においてさらに後述する概念の選定を簡略化された形態で紹介するために与えられる。この「発明の概要」は、特許請求される主題の主要な特徴または本質的な特徴を特定することを意図するものでも、特許請求される主題の範囲を限定するのに使用されることを意図するものでもない。
本明細書では、分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(SQL)文をエラスティックコンピュートノード(elastic compute node、ECN)にルーティングするための様々な技術について説明する。エラスティックコンピュートノードは、永続的データベーステーブルを記憶していない。たとえば、SQL文が、分散型データベース環境内での実行に向けて受領され得る。SQL文のプロパティにマッチングするワークロードクラスが識別され得る。そのワークロードクラスに基づいて、エラスティックコンピュートノードの組を識別するルーティングロケーションヒントを取得することができる。次いで、SQL文は、実行に向けて、識別されたエラスティックコンピュートノードのうちの1つにルーティングされ得る。エラスティックコンピュートノードにおけるSQL文の実行は、永続的データベーステーブルを記憶している他のノードからデータベースデータを読み出すことを含むことができる。
コーディネータノードおよびワーカノードを含む、SQL文をルーティングするための例示的な従来技術の環境を示す図である。 コーディネータノードおよびエラスティックコンピュートノードを含む、SQL文をルーティングするための例示的な環境を示す図である。 SQL文をエラスティックコンピュートノードにルーティングするための例示的なルーティングシナリオを示す略図である。 分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(SQL)文をエラスティックコンピュートノード(ECN)にルーティングするための例示的な過程のフローチャートである。 ECNにおいてSQL文を実行するステップを含む、分散型データベース環境内でワークロードクラスを使用してSQL文をECNにルーティングするための例示的な過程のフローチャートである。 いくつかの説明した実施形態が実装され得る例示的なコンピューティングシステムの略図である。 本明細書に説明する技術と併せて使用され得る例示的なクラウドコンピューティング環境を示す図である。
概観
次の説明は、分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(SQL)文をエラスティックコンピュートノード(ECN)にルーティングするための技術を対象とする。たとえば、SQL文が、分散型データベース環境内での実行に向けて受領され得る。SQL文のプロパティにマッチングするワークロードクラスが識別され得る。そのワークロードクラスに基づいて、エラスティックコンピュートノードの組を識別するルーティングロケーションヒントを取得することができる。エラスティックコンピュートノードは、永続的データベーステーブルを記憶していない。次いで、SQL文は、実行に向けて、識別されたエラスティックコンピュートノードのうちの1つにルーティングされ得る。エラスティックコンピュートノードにおけるSQL文の実行は、永続的データベーステーブルを記憶している他のノードからデータベースデータを読み出すことを含むことができる。
いくつかの従来の解決策においては、ユーザは、特定の文を特定のノードにルーティングすることができる。たとえば、SAP「route_to」ヒントを所与のクエリについて入力して、そのクエリを所与のノードにルーティングすることができる。しかしながら、「route_to」ヒントは、クエリごとに設定する必要があり、そのため、時間がかかり、使用が不便である。加えて、このヒントは、ワークロードクラスのルーティングの制御に使用することができない。
本明細書に説明する技術を使用すると、SQL文の、エラスティックコンピュートノードを含む特定のノードへのルーティングを制御するために、ワークロードクラスマッピングが使用され得る。この技術を使用すると、ユーザは、ワークロードクラス(および関連のマッピングおよびルーティングロケーションヒント)を定義して、(たとえば、セッションなどのプロパティ、または他のプロパティに基づいて) SQL文の特定のグループがいかにしてルーティングされることになるかを制御することができる。たとえば、ユーザは、特定のコンピュート集約型ワークロードを識別し、それらを特定のエラスティックコンピュートノードにルーティングする一方、(たとえば、コンピュート集約型でない)他のタイプのワークロードを他のノードに(たとえば、コーディネータノード、ワーカノード、および/または他のタイプのノードに)ルーティングすることができる。この解決策は、SQL文ルーティングの制御を可能にし、分散型データベース環境の効率性を改善する(たとえば、輻輳の低減、応答時間の改善など)。加えて、ワークロードクラスマッピングを使用する本明細書に説明する技術は、「route_to」ヒントなどの技術の使用よりも優れた利点を提供する。たとえば、アプリケーションを変更すること(たとえば、書き換えること)が必要なときに、「route_to」を含むクエリ文字列の修正ができない場合がある。加えて、ユーザはいくつかの条件が満たされているときしかクエリをルーティングすることができないので(たとえば、アプリケーションの名称が「BW」から始まる場合にはクエリをルーティングすることができる)、ワークロードクラスマッピングの使用により、柔軟性がもたらされる。
エラスティックコンピュートノード
本明細書に説明する技術においては、様々なタイプのノードが、分散型データベース環境においてクエリ(たとえば、SQLクエリ)を実行することに関与する。概して、ノードは、ノードのコンピューティングリソース(たとえば、プロセッサリソース、メモリリソース、および/またはストレージリソース)において動作する、データ処理および/またはストレージタスクを行うためのソフトウェアを起動する。
1つのノードタイプが、コーディネータノードである。コーディネータノードは、デフォルトのノードとして機能して、SQLクエリを実行することができ、またデータ(たとえば、テータベーステーブル)の永続的ストレージも行うことができる。コーディネータノードはまた、ルーティングロケーションヒント情報を(たとえば、クライアントアプリケーション、および/またはクライアントライブラリに)提供することもできる。
別のノードタイプは、ワーカノードである。ワーカノードは、データ(たとえば、データベーステーブル)の永続的ストレージを維持する。いくつかの解決策においては、SQLクエリは、SQLクエリによって利用されるデータを記憶しているワーカノードに向けられる。
別のノードタイプは、エラスティックコンピュートノードである。本明細書に説明する技術においては、エラスティックコンピュートノードは、SQLクエリを受領し、コンピュートタスクを行う。ただし、ワーカノードと異なり、エラスティックコンピュートノードは、SQLクエリによって使用されるデータを永続的に記憶していない(すなわち、エラスティックコンピュートノードは、永続的データベーステーブルを記憶していない)。いくつかの実装形態においては、エラスティックコンピュートノードは、たとえ永続的データベーステーブルを記憶していなくても、レプリカテーブル(たとえば、読取り専用のレプリカテーブル)を記憶することができる。加えて、いくつかの実装形態においては、エラスティックコンピュートノードは、中間クエリ結果(たとえば、永続的データベーステーブルが記憶されている他のノードにおいて行われるクエリ動作から得られる結果)のキャッシュを記憶する。
エラスティックコンピュートノードは、分散型データベース環境における利点を提供し、効率性を改善することができる。たとえば、コンピュート集約型ワークロードは、エラスティックコンピュートノードに向けることができ、それにより、他のノードにおけるリソースが解放される(たとえば、普通なら、オーバーロードされることになって結果的に応答時間の遅さを招く可能性があるコーディネータノードにおけるリソースが解放される)。エラスティックコンピュートノードは、(たとえば、他のノードにおいて行われるクエリ演算子からの)中間クエリ結果を使用し、普通なら他のノードに性能問題をもたらすことになるコンピュート集約型タスクを行うことができる。コンピュート集約型タスクは、sort演算子、join演算子、および演算子別のグループなどのクエリ演算子を含むことができる。いくつかの実装形態においては、コンピュート集約型タスクは、テーブルアクセス演算子以外のクエリ演算子を含む。
ワークロードクラス
本明細書に説明する技術においては、SQL文を特定のノードに向けるために、ワークロードクラスが使用される。具体的には、ユーザは、SQL文の組についてのルーティング振舞いを制御するワークロードクラスを定義する。いくつかの実装形態においては、ワークロードクラスの定義および改変は、SQL文を使用して行われる。
ワークロードクラスは、その名称、ならびにその関連のワークロードマッピングおよびルーティングロケーションヒントを定義することによって作成される。下記は、「ECN_WC」という名称のワークロードクラスを作成する一例である。たとえば、ユーザは、例示的な下記のSQL文を入力して、ワークロードクラス「ECN_WC」を作成することが可能になる。
CREATE WORKLOAD CLASS “ECN_WC”
次いで、ワークロードマッピングがワークロードクラスに関連付けられる。ワークロードマッピングは、どのタイプのSQL文がワークロードクラスにマッピングされることになるかを定義する。下記は、ワークロードクラス「ECN_WC」についてのワークロードクラスマッピング「ECN_WC_mapping」を作成する一例である。たとえば、ユーザは、例示的な下記のSQL文を入力して、ワークロードクラスマッピング「ECN_WC_mapping」を作成することが可能になる。
CREATE WORKLOAD MAPPING “ECN_WC_mapping”
WORKLOAD CLASS “ECN_WC” SET 'APPLICATION NAME'='BW*'
このワークロードクラスマッピング「ECN_WC_mapping」は、名称が「BW」で始まるアプリケーションをワークロードクラス「ECN_WC」にマッピングする。このマッピングを使用すると、名称が「BW」で始まるアプリケーションによって開始されるSQL文は、ワークロードクラス「ECN_WC」に従ってルーティングされることになる。
概して、ワークロードクラスは、任意の数のワークロードマッピングを有することができる。ワークロードマッピングは、セッションプロパティなど、データベース環境に関連付けられている様々なプロパティに基づくができる。たとえば、ワークロードマッピングは、次の、アプリケーションプロパティ(たとえば、SQL文を開始するアプリケーションに関連付けられているアプリケーションプロパティ)、データベースオブジェクトプロパティ(たとえば、スキーマ名称、テーブル名称など)、データベースユーザ名(たとえば、SQL文を開始するユーザのユーザ名)、アプリケーションユーザ名、および/またはアプリケーションコンポーネント名称、のうちの1つまたは複数を含むプロパティ(たとえば、セッション変数および/または他のタイプのプロパティ)に基づくができる。
次に、ワークロードクラスの実行に使用されることになるECNノードは、グループラベルを使用してグループ化される。下記は、(「ECN_node1」および「ECN_node2」と称される)2つのECNノードをグループ化し、ラベル「ECN_group1」をグループに割り当てる一例である。たとえば、ユーザは、下記の例示的なSQL文を入力して、グループ「ECN_group1」を作成することが可能になる。
ALTER SYSTEM ALTER TABLE PLACEMENT LOCATION ECN_group1
SET (INCLUDE=>'ECN_node1, ECN_node2') WITH RECONFIGURE
最後に、ワークロードクラスについてのルーティングロケーションヒントが定義される。ルーティングロケーションヒントは、所与のワークロードクラスを1つまたは複数のECNノードの所与のグループに関連付ける。下記は、ワークロードクラス「ECN_WC」をラベル「ECN_group1」によりグループ化されたECNノードに関連付けるルーティングロケーションヒントの一例である。たとえば、ユーザは、下記の例示的なSQL文を入力して、ワークロードクラス「ECN_WC」についてのルーティングロケーションヒントを作成することが可能になる。
ALTER WORKLOAD CLASS “ECN_WC” SET 'ROUTING LOCATION HINT'='ECN_group1'
所与のワークロードクラスについてのルーティングロケーションヒントは、いかなるときでもディスエーブルまたはリイネーブル可能である。たとえば、ユーザは、下記の例示的なSQL文を入力して、「ECN_WC」ワークロードクラスについてのルーティングロケーションヒントをディスエーブルすること(および後になってそれをリイネーブルすること、または上述したALTER WORKLOAD CLASS文を使用して、ECNノードの異なったグループによりそれをイネーブルすること)ができる。
ALTER WORKLOAD CLASS “ECN_WC” UNSET 'ROUTING LOCATION HINT'
ワークロードクラスを使用すると、ユーザは、どのワークロード(たとえば、所与のアプリケーションに関連付けられているSQL文など、関係のあるSQL文のグループ)が特定のエラスティックコンピュートノードによって処理されることになるかを定義することができる。これにより、ユーザは、ワークロードを(たとえば、コーディネータノードによって処理されるのではなく)エラスティックコンピュートノードにオフロードすることが可能になる。加えて、ワークロードをルーティングするのにワークロードクラスを使用することによって、ルーティング情報はSQL文に含められない。これにより、コンパイルされるSQL文(または演算子)についてでさえも、(たとえば、ワークロードマッピングによって定義される)SQL文の組についてルーティングを変更することが可能になる。加えて、ルーティングは、SQL文を改変する必要なしにSQL文の組について変更することが可能である(たとえば、アプリケーションソフトウェアを、SQL文ルーティングの詳細を含めるように改訂する必要はない)。
コーディネータノードおよびワーカノードを使用する例示的な環境
いくつかの従来技術の分散型データベース解決策においては、SQLルーティングは、コーディネータノードおよびワーカノードを使用して行われる。図1は、コーディネータノードおよびワーカノードを含む、SQL文をルーティングするための例示的な従来技術の環境100である。具体的には、例示的な従来技術の環境100は、コーディネータノード120、ワーカノード130、およびワーカノード140を含む分散型データベース環境の一部を示している。
例示的な従来技術の環境100は、クライアントアプリケーション110、および関連のクライアントライブラリ115を含む。クライアントアプリケーション110は、分散型データベースシステムと相互作用するためのソフトウェアリソースを含む。クライアントアプリケーション110は、様々なタイプのソフトウェアリソース(たとえば、ウェブブラウザリソース、データベースクライアントソフトウェアなど)を使用して実装され、様々なタイプのハードウェアリソース(たとえば、デスクトップ、サーバ、およびラップトップなどのコンピューティングデバイス、仮想コンピューティングリソース、クラウドコンピューティングリソースなど)において動作することができる。クライアントアプリケーション110は、クライアントライブラリ115を使用して、分散型データベースシステムにアクセスする。いくつかの実装形態においては、クライアントライブラリ115は、分散型データベースシステムにアクセスするためのアプリケーションプログラミングインタフェース(application programming interface、API)を含む。たとえば、クライアントライブラリ115は、Open Database Connectivity (ODBC)、Java Database Connectivity (JDBC)、および/またはSQL Database Connectivity (SQLDBC)などのAPIによって少なくとも一部、実装され得る。
例示的な従来技術の環境100は、分散型データベース環境の一部(たとえば、SAP Hana分散型データベース環境の一部)を示しており、ここでは、SQL文は、どのノードがSQL文を実行するのに必要なデータ(たとえば、1つまたは複数のデータベーステーブル)を有するかに基づいてノードにルーティングされる。具体的には、例示的な従来技術の環境においては、永続的テーブルの組122(この例では、永続的テーブルt1、t2、およびt3)がコーディネータノード120に記憶され、永続的テーブルの組132(この例では、永続的テーブルt4およびt5)がワーカノード130に記憶され、永続的テーブルの組142(この例では、永続的テーブルt6およびt7)がワーカノード140に記憶されている。クライアントアプリケーション110がSQL文を実行に向けて送出すると、クライアントライブラリ115は、SQL文を実行するのに必要なデータを記憶しているノードにSQL文をルーティングする。1つの例として、クライアントライブラリ115が永続的テーブルt1からのデータを使用するSQL文を有する場合には、クライアントライブラリ115は、150において示されているように、SQL文をコーディネータノード120に送出することになる。別の例として、クライアントライブラリ115が永続的テーブルt6からのデータを使用するSQL文を有する場合には、クライアントライブラリ115は、155において示されているように、SQL文をワーカノード140に送出することになる。
いくつかの実装形態においては、クライアントライブラリ115は、クライアント側文ルーティングを使用して、どのノードが実行に必要なデータ(たとえば、1つまたは複数のデータベーステーブル)を記憶しているかに少なくとも一部基づいて、所与のSQL文を実行に向けてどのノードに送出すべきか(たとえば、ノード120、130、または140のうちのどれか)を決定する。たとえば、クライアントライブラリ115は、SQLコンパイル時にノードを決定することができる。クライアントライブラリ115は、後になって同じSQL文が見つかった場合、そのSQL文が自動的にルーティングされ得るように、決定されたノードをキャッシュすることができる。
コーディネータノードおよびエラスティックコンピュートノードを使用する例示的な環境
本明細書に説明する技術においては、SQL文ルーティングは、エラスティックコンピュートノードを含む、ワークロード分類を使用する分散型データベース環境内で行われる。加えて、SQL文は、たとえSQL文によって使用されるテーブルがエラスティックコンピュートノードに位置していなくても、実行に向けてエラスティックコンピュートノードにルーティングされ得る。
図2は、コーディネータノードおよびエラスティックコンピュートノードを含む、SQL文をルーティングするための例示的な環境200である。具体的には、例示的な環境200は、コーディネータノード220、エラスティックコンピュートノード230、およびエラスティックコンピュートノード240を含む分散型データベース環境の一部を示している。概して、分散型データベース環境は、任意の数のエラスティックコンピュートノードおよび/または任意の数の他のノード(たとえば、ワーカノード)を有することができる。例示的な環境200は、エラスティックコンピュートノードを使用する分散型データベース環境において、いかにしてクエリルーティングおよびクエリ実行が行われるかを示している。
例示的な環境200は、クライアントアプリケーション210、および関連のクライアントライブラリ215を含む。クライアントアプリケーション210は、分散型データベースシステムと相互作用するためのソフトウェアリソースを含む。クライアントアプリケーション210は、様々なタイプのソフトウェアリソース(たとえば、ウェブサーバリソース、データベースクライアントソフトウェアなど)を使用して実装され、様々なタイプのハードウェアリソース(たとえば、デスクトップ、サーバ、およびラップトップなどのコンピューティングデバイス、仮想コンピューティングリソース、クラウドコンピューティングリソースなど)において動作することができる。クライアントアプリケーション210は、クライアントライブラリ215を使用して、分散型データベースシステムにアクセスする。いくつかの実装形態においては、クライアントライブラリ215は、分散型データベースシステムにアクセスするためのアプリケーションプログラミングインタフェース(application programming interface、API)を含む。たとえば、クライアントライブラリ215は、Open Database Connectivity (ODBC)、Java Database Connectivity (JDBC)、および/またはSQL Database Connectivity (SQLDBC)などのAPIによって少なくとも一部、実装され得る。いくつかの実装形態においては、クライアントアプリケーション210は、データベースサービスをエンドユーザクライアント(たとえば、ウェブブラウザを実行するエンドユーザクライアント)に提供する、分散型データベース環境のホスト型アプリケーション(たとえば、ホスト型ウェブアプリケーション)である。
例示的な環境200においては、永続的テーブルの組222(永続的テーブルt1、t2、t3、t4、およびt5)がコーディネータノード220に記憶されている。クライアントアプリケーション210が、SQL文を実行に向けて送出すると、クライアントライブラリ215は、SQL文を実行に向けてノードのうちの1つに(たとえば、コーディネータノード220、エラスティックコンピュートノード230、またはエラスティックコンピュートノード240に)ルーティングする。クライアントライブラリ215は、様々な基準に基づいて(たとえば、ワークロード分類、現在のノード利用などに基づいて)そのルーティング決定を行う。たとえば、クライアントライブラリ215は、永続的テーブルt4からのデータを使用するSQL文を受領することができる。クライアントライブラリ215は、たとえ永続的テーブルt4がエラスティックコンピュートノード230に記憶されていなくても、260において示されているように、(たとえば、ワークロード分類および/または他の基準に基づいて)SQL文をエラスティックコンピュートノード230にルーティングすることができる。この状況においては、エラスティックコンピュートノード230は、(永続的テーブルt4を記憶している)コーディネータノード220から、クエリを実行するためのデータを読み出すことができる。いくつかの実装形態においては、エラスティックコンピュートノード230は、分散型クエリ処理インターフェース250を使用してクエリを実行するためのデータを読み出す。
いくつかの実装形態においては、エラスティックコンピュートノードにおけるSQL文の実行は、SQL文についてのクエリ演算子(たとえば、演算子、演算子別のグループからのselect演算子など)の組の決定を含む。クエリ演算子が永続的テーブルからのデータにアクセスする必要があるとき、クエリ演算子は、(永続的テーブルは、エラスティックコンピュートノードに記憶されていないので)エラスティックコンピュートノード以外のノードにおいて実行され得る。いくつかの実装形態においては、クエリ演算子は、コーディネータノード、または永続的テーブルが記憶されている(エラスティックコンピュートノード以外の)別のタイプのノードにおいて実行される。いくつかの実装形態においては、分散型クエリ処理インターフェースを使用して、他のノードにおいてクエリ演算子を実行し、結果(たとえば、中間クエリ結果)をエラスティックコンピュートノードに提供してさらに処理する。たとえば、例示的な環境200を参照すると、クライアントライブラリ215は、260において示されているように、SQL文を実行に向けてエラスティックコンピュートノード230に送出することができる。エラスティックコンピュートノード230は、SQL文についてのクエリ演算子の組を決定することができる。クエリ演算子のうちの1つ(たとえば、filter演算子)が永続的テーブルt4内のデータにアクセスする必要がある場合、エラスティックコンピュートノード230は、分散型クエリインターフェース250を使用してコーディネータノード220からデータを読み出す(たとえば、エラスティックコンピュートノード230は、永続的テーブルt4を使用するクエリ演算子の実行に向けて、クエリ演算子をコーディネータノード220に送出し、コーディネータノード220から中間クエリ結果を受領する)。エラスティックコンピュートノード230は、中間クエリ結果を受領し、追加のクエリ演算子(たとえば、sort演算子、join演算子、演算子別のグループなど)を行って、SQL文の実行を完了する。エラスティックコンピュートノード230は、SQL文を実行した結果を(たとえば、クライアントアプリケーション210によって表示するために、またはエンドユーザクライアントに送出するために)クライアントライブラリ215に返送することがで
きる。
いくつかの実装形態においては、各ノードは、それら自体のクエリコンパイラおよびクエリオプティマイザを有する。たとえば、エラスティックコンピュートノード230がクライアントライブラリ215からSQL文を受領すると、エラスティックコンピュートノード230は、SQL文をコンパイルする。次いで、エラスティックコンピュートノード230において動作するクエリオプティマイザは、(たとえば、コストに基づいて)どのクエリ演算子を処理のために他のノードに送出すべきかを決める。たとえば、クエリオプティマイザは、filterクエリ演算子をコーディネータノード220に送出して、コーディネータノード220に記憶されている永続的テーブル222のうちの1つを使用して中間クエリ結果を読み出すことができる。中間クエリ結果は、SQL文の他のクエリ演算子を実行するためにエラスティックコンピュートノード230において使用され得る。
いくつかの実装形態においては、エラスティックコンピュートノードは、中間クエリ結果を記憶するローカルキャッシュを有する。たとえば、エラスティックコンピュートノード230は、エラスティックコンピュートノード230において実行されるSQL文についての中間クエリ結果を記憶するローカルキャッシュ231を有し、エラスティックコンピュートノード240は、エラスティックコンピュートノード240において実行されるSQL文についての中間クエリ結果を記憶するローカルキャッシュ241を有する。中間クエリ結果は、同じSQL文(または同じクエリ演算子)が再度、受領された場合、(たとえば、クエリ演算子をコーディネータノード220に送出する必要なしに)キャッシュから再使用することができる。
例示的な環境200においては、クライアントライブラリ215は、SQL文を実行に向けて送出すべきところを決定する。決定を行うために、クライアントライブラリ215は、ワークロードクラス情報を使用する。たとえば、クライアントライブラリ215が、ルーティングする必要のあるSQL文を受領すると、クライアントライブラリ215は、マッチングワークロードクラスについてチェックする(たとえば、マッピングのうちの1つがSQL文のプロパティにマッチングするかどうかを決定するために、1つまたは複数のワークロードクラスについてワークロードクラスマッピングをチェックする)。マッチングワークロードクラスを見出すと同時に、クライアントライブラリ215は、識別されたワークロードクラスからのルーティングロケーションヒントを使用して、SQL文をどのノードに送出すべきかを決定する。たとえば、ルーティングロケーションヒントは、エラスティックコンピュートノード240を識別することが可能になり、それに応答して、クライアントライブラリ215は、SQL文を実行に向けてエラスティックコンピュートノード240に送出することができる。
いくつかの状況においては、クライアントライブラリ215は、所与のSQL文の実行に向けて、いくつかの利用可能なエラスティックコンピュートノードから特定のエラスティックコンピュートノードを選定する。この状況は、ワークロードクラスが所与のSQL文について決定されたときに生じ、決定されたワークロードクラスは、複数のエラスティックコンピュートノードを識別するルーティングロケーションヒントを有する。これが起きると、ルーティングロケーションヒントに関連付けられている複数のエラスティックコンピュートノードから、1つのエラスティックコンピュートノードが、所与のSQL文の実行に向けて選定される。いくつかの実装形態においては、選定されたエラスティックコンピュートノードは、ルーティングロケーションヒントに関連付けられている複数のエラスティックコンピュートノードのうちの1つをランダムに選定することによって決定される。たとえば、決定されたワークロードクラスについてのルーティングロケーションヒントがエラスティックコンピュートノード230および240を識別した場合には、それのうちの一方がランダムに選択され得る。他の実装形態においては、エラスティックコンピュートノードは、ルーティングロケーションヒントに関連付けられている複数のエラスティックコンピュートノードの中から、利用可能性(たとえば、現在のロード)によって決定される(たとえば、最も低いロードのエラスティックコンピュートノードが選定される)。選定に利用可能なエラスティックコンピュートノードが存在しない場合(たとえば、エラスティックコンピュートノードがオーバーロードされている場合)には、SQL文は、コーディネータノードにルーティングされ得る。他の実装形態においては、これらの技法および/または他の技法の組合せが使用される。
例示的なSQL文ルーティング
図3は、SQL文をエラスティックコンピュートノードにルーティングするための例示的なルーティングシナリオ300を示す略図である。具体的には、例示的なルーティングシナリオ300においては、いくつかの動作が、クライアントライブラリ215と、コーディネータノード220と、エラスティックコンピュートノード230および240との間でSQL文をルーティングするように示されている。
第1の動作においては、(たとえば、クライアントライブラリ215においてこれまでに見たことのない)新規SQL文が、310において示されているように、クライアントライブラリ215からコーディネータノード220にルーティングされる。コーディネータノード220において、新規SQL文312は、コンパイルされて、コンパイルされたSQLプラン314を生成する。たとえば、クライアントライブラリ215には、新規SQL文312についてのマッチングワークロードクラスが、現在、存在しない(たとえば、新規SQL文についてのルーティングロケーションヒントがない)ので、新規SQL文312は、コーディネータノード220にルーティングされ得(たとえば、コーディネータノード220は、SQL文をルーティングするためのデフォルトとして使用され得)、新規SQL文312は、コーディネータノード220に位置している永続的テーブルt1を使用する。新規SQL文312がコンパイルされた後、コンパイルされたSQLプラン314は、コーディネータノードに位置しているキャッシュ内に記憶される。加えて、SQL文312にマッチングするワークロードクラス332が、コーディネータノード220において、ワークロードクラスレポジトリ330内に記憶される(たとえば、ワークロードクラス332は、作成される場合もあれば、または既に存在している場合もあり得る)。次いで、新規SQL文312は、コンパイルされたSQLプラン314に基づいて、コーディネータノード220によって実行される。
第2の動作においては、コーディネータノード220において新規SQL文312を実行した結果は、(コーディネータノード220を示す)ルーティングロケーションとともに、クライアントライブラリ215に返送される。ルーティングロケーションは、クライアントライブラリ215において、クライアント側ルーティングロケーションヒントキャッシュ320内にルーティングロケーションヒントとして記憶される。(たとえば、文オブジェクト識別子などのいくつかのマッチング基準に基づいて)クライアントライブラリ215において同じSQL文が再度、受領された場合には、そのSQL文は、クライアント側ルーティングロケーションヒントキャッシュ320内の記憶されているルーティングロケーションヒントに従ってルーティングされることになる(そのSQL文は、現在、記憶されているルーティングロケーションヒントに従ってコーディネータノード220にルーティングされることになる)。
第3の動作においては、改変ワークロードクラスコマンドが、コーディネータノード220に記憶されているワークロードクラス332についてのルーティングロケーションヒントを変更するように、コーディネータノード220において実行される。たとえば、コマンドは、ユーザから(たとえば、データベースアドミニストレータから)SQLコマンド(たとえば、ALTER WORKLOAD CLASSコマンド)として受領することができる。このコマンドは、ルーティングロケーションヒントを改変する。この例においては、ルーティングロケーションヒントは、コーディネータノード220からエラスティックコンピュートノード230および240に変更される。
第4の動作においては、クライアントライブラリ215において同じSQL文が再度、受領されたとき、クライアントライブラリは、(クライアント側ルーティングロケーションヒントキャッシュ320内に現在、記憶されているルーティングロケーションヒントに基づいて)SQL文をコーディネータノード220にルーティングすることになる。コーディネータノード220は、SQL文を実行することになる。コーディネータノード220はまた、(SQL文にマッチングする)ワークロードクラス332が(第3の動作から変更したルーティングロケーションヒントに基づいて)変更したことを決定し、SQL文を実行した結果とともに、ワークロードクラス332についての更新済みルーティングロケーションヒントをクライアントライブラリ215に送り返すことになる。代替として、この動作においてコーディネータノード220がSQL文を実行するのではなく、コーディネータノード220は、クライアントライブラリ215が更新済みルーティングロケーションヒントを使用してSQL文を実行すべきであるという指示とともに、ワークロードクラス332についての更新済みルーティングロケーションヒントをクライアントライブラリ215に送り返すことができる。次いで、クライアントライブラリ215は、更新済みルーティングロケーションヒントに基づいてSQL文をリルーティングすることになる(この例においては、更新済みルーティングロケーションヒントは、エラスティックコンピュートノード230および240を指示することになる)。
第5の動作においては、クライアントライブラリ215は、更新済みルーティングロケーションヒントを受領すると同時に、そのクライアント側ルーティングロケーションヒントキャッシュ320内に記憶されているルーティングロケーションヒントを更新することになる。この例においては、更新済みルーティングロケーションヒントは、エラスティックコンピュートノード230および240を識別する。
第6の動作においては、クライアントライブラリ215において同じSQL文が再度、受領されたとき、クライアントライブラリ215は、そのクライアント側ルーティングロケーションヒントキャッシュ320からの更新済みルーティングロケーションヒントを使用して、SQL文を識別されたエラスティックコンピュートノード230または240のうちの一方にルーティングすることになる。たとえば、クライアントライブラリ215は、(たとえば、エラスティックコンピュートノード230および240のロードに基づいて)エラスティックコンピュートノード230を選定し、340において示されているように、SQL文を送出する。
いくつかの実装形態においては、クライアントライブラリ(たとえば、クライアントライブラリ215)は、予め用意された文に基づいてSQL文ルーティングを行う。この場合においては、クライアントライブラリは、予め用意された文を、同じ予め用意された文を将来、実行する必要がある場合、再使用するためにキャッシュする。加えて、クライアント側ルーティングロケーションヒントキャッシュ320内に記憶されているルーティングロケーションヒントは、予め用意された文に関連付けられている。たとえば、クライアントライブラリ215は、コーディネータノード220からルーティングロケーションヒントを受領することができ、ただし、ルーティングロケーションヒントは、所与の予め用意された文に関連付けられている。クライアントライブラリ215は、ルーティングロケーションヒントを、それがどの予め用意された文に関連付けられているかについての指示とともに、クライアント側ルーティングロケーションヒントキャッシュ320内に記憶することができる。クライアントライブラリ215が同じ予め用意された文を使用するSQL文を受領すると、クライアントライブラリ215は、クライアント側ルーティングロケーションヒントキャッシュ320内の同じ予め用意された文にマッチングするルーティングロケーションヒントを見出し、それを、実行に向けて、指示されたノード(たとえば、エラスティックコンピュートノード230または240のうちの一方)に送出する。
ワークロードクラスを使用してSQL文をECNにルーティングするための方法
本明細書に説明する技術においては、分散型データベース環境内でワークロードクラスを使用してSQL文をエラスティックコンピュートノードにルーティングするための方法が提供され得る。例示的な方法は、ソフトウェアリソースおよび/またはハードウェアリソースを使用して実装され得る。たとえば、方法は、分散型データベース環境の1つまたは複数の要素によって、たとえばクライアントアプリケーション(たとえば、クライアントアプリケーション210)、クライアントライブラリ(たとえば、クライアントライブラリ215)、コーディネータノード(たとえば、コーディネータノード220)、エラスティックコンピュートノード(たとえば、エラスティックコンピュートノード230もしくは240)によって、および/または分散型データベース環境の他の要素によって実装され得る。
図4は、分散型データベース環境内でワークロードクラスを使用してSQL文をエラスティックコンピュートノードにルーティングするため例示的な過程400のフローチャートである。410において、SQL文が、分散型データベース環境内での実行に向けて受領される。
420において、SQL文のプロパティにマッチングするワークロードクラスが識別される。ワークロードクラスは、いくつかの利用可能なワークロードクラスから識別される。たとえば、ワークロードクラスは、1つまたは複数のプロパティ(たとえば、アプリケーション名称、ユーザ名など)をワークロードクラスのワークロードマッピングにマッチングさせることによって識別され得る。
430において、ルーティングロケーションヒントが、識別されたワークロードクラスから読み出される。ルーティングロケーションヒントは、ワークロードクラスに関連付けられている1つまたは複数のエラスティックコンピュートノードを識別する。
440において、SQL文は、ルーティングロケーションヒントによって識別された1つまたは複数のエラスティックコンピュートノードの中から選定されたエラスティックコンピュートノードにルーティングされる。SQL文は、選定されたエラスティックコンピュートノードによって実行される。加えて、選定されたエラスティックコンピュートノードは、永続的データベーステーブルを記憶していない。そのため、エラスティックコンピュートノードにおけるSQL文の実行が任意の永続的テーブルデータにアクセスする必要がある場合、永続的テーブルデータは、異なるノード(たとえば、コーディネータノード、またはエラスティックコンピュートノードではない分散型データベース環境の別のノード)を介してアクセスされることが必要になる。たとえば、エラスティックコンピュートノードは、SQL文の少なくとも一部分(たとえば、1つまたは複数のクエリ演算子)を異なるノードに送出して、異なるノードに記憶されている永続的データベーステーブルからデータベースデータを(たとえば、中間結果の形態で)読み出すことができる。
図5は、分散型データベース環境内でワークロードクラスを使用してSQL文をエラスティックコンピュートノードにルーティングするための例示的な過程500のフローチャートである。510において、SQL文が、分散型データベース環境内での実行に向けて受領される。
520において、SQL文のプロパティにマッチングするワークロードクラスが識別される。ワークロードクラスは、いくつかの利用可能なワークロードクラスから識別される。たとえば、ワークロードクラスは、1つまたは複数のプロパティ(たとえば、アプリケーション名称、ユーザ名など)をワークロードクラスのワークロードマッピングにマッチングさせることによって識別され得る。
530において、ルーティングロケーションヒントが、識別されたワークロードクラスから読み出される。ルーティングロケーションヒントは、ワークロードクラスに関連付けられている1つまたは複数のエラスティックコンピュートノードを識別する。
540において、SQL文は、ルーティングロケーションヒントによって識別された1つまたは複数のエラスティックコンピュートノードの中から選定されたエラスティックコンピュートノードにルーティングされる。SQL文は、たとえ選定されたエラスティックコンピュートノードに永続的データベーステーブルが記憶されていなくても、選定されたエラスティックコンピュートノードにルーティングされる。
550において、SQL文は、選定されたエラスティックコンピュートノードによって実行される。SQL文は、永続的データベーステーブルからのデータベースデータを使用する。エラスティックコンピュートノードは永続的データベーステーブルを記憶していないので、データベースデータは、分散型データベース環境の他のノードから取得される。たとえば、エラスティックコンピュートノードは、SQL文の少なくとも一部分(たとえば、1つまたは複数のクエリ演算子)を異なるノードに送出して、異なるノードに記憶されている永続的データベーステーブルからデータベースデータを(たとえば、中間結果の形態で)読み出すことができる。
いくつかの実装形態においては、他のノードからエラスティックコンピュートノードによって読み出されたデータベースデータは、エラスティックコンピュートノードに(たとえば、中間結果キャッシュなど、結果のキャッシュとして)記憶される。エラスティックコンピュートノードにおいて同じSQL文が再度、受領された場合、エラスティックコンピュートノードは、他のノードからデータベースデータを読み出さずに、キャッシュからデータベースデータを取得することができる。
コンピューティングシステム
図6は、説明した技術革新が実装され得る適切なコンピューティングシステム600の概略化された例を示している。コンピューティングシステム600は、技術革新が多様な汎用または専用のコンピューティングシステムにおいて実装可能であるように、使用または機能の範囲についていかなる限定をも示唆することを意図するものではない。
図6を参照すると、コンピューティングシステム600は、1つまたは複数の処理ユニット610、615、およびメモリ620、625を含む。図6においては、この基本構成630は、破線内に含められている。処理ユニット610、615は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用の中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)におけるプロセッサ、または任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいては、多数の処理ユニットが、処理パワーを高めるようにコンピュータ実行可能命令を実行する。たとえば、図6は、中央処理ユニット610、ならびにグラフィックス処理ユニットまたは共処理ユニット615を示している。有形メモリ620、625は、処理ユニットがアクセスすることのできる揮発性メモリ(たとえば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(たとえば、ROM、EEPROM、フラッシュメモリなど)、またはこの2つの何らかの組合せであってもよい。メモリ620、625は、処理ユニットによって実行されるのに適しているコンピュータ実行可能命令の形態で、本明細書に説明する1つまたは複数の技術革新を実装するソフトウェア680を記憶している。
コンピューティングシステムは、追加の機能を有することができる。たとえば、コンピューティングシステム600は、ストレージ640、1つまたは複数の入力デバイス650、1つまたは複数の出力デバイス660、および1つまたは複数の通信接続部670を含む。バス、コントローラ、またはネットワークなどの相互接続機構(図示せず)が、コンピューティングシステム600の構成要素を相互接続している。典型的には、オペレーティングシステムソフトウェア(図示せず)が、コンピューティングシステム600内で実行する他のソフトウェアについてのオペレーティング環境を提供し、コンピューティングシステム600の構成要素の活動を調整する。
有形ストレージ640は、リムーバブルであっても、または非リムーバブルであってもよく、磁気ディスク、磁気テープまたはカセット、CD-ROM、DVD、または非一時的なやり方で情報を記憶するのに使用可能であるとともに、コンピューティングシステム600内でアクセス可能である任意の他の媒体を含む。ストレージ640は、本明細書に説明する1つまたは複数の技術革新を実装するソフトウェア680のための命令を記憶している。
入力デバイス650は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、またはコンピューティングシステム600に入力を提供する別のデバイスとすることができる。ビデオ符号化の場合、入力デバイス650は、カメラ、ビデオカード、TVチューナカード、またはアナログもしくはデジタルの形態でビデオ入力を受け入れる同様のデバイス、あるいはビデオサンプルをコンピューティングシステム600に読み込むCD-ROMまたはCD-RWとすることができる。出力デバイス660は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティングシステム600から出力を提供する別のデバイスとすることができる。
通信接続部670は、通信媒体を経由した別のコンピューティングエンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能命令などの情報、音声またはビデオの入力もしくは出力、または変調されたデータ信号における他のデータを搬送する。変調されたデータ信号は、情報を信号に符号化するような方式でその特性のうちの1つまたは複数を設定または変更した信号である。限定ではなく、例として、通信媒体は、電気、光学、RF、または他のキャリアを使用することができる。
技術革新については、プログラムモジュールに含まれているものなど、ターゲットの現実または仮想のプロセッサ上のコンピューティングシステムにおいて実行されるコンピュータ実行可能命令の一般的文脈で説明することができる。概して、プログラムモジュールは、特定のタスクを行う、または特定の抽象データタイプを実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、様々な実施形態において説明したように、組み合わせることも、またはプログラムモジュール間で分割することもできる。プログラムモジュールについてのコンピュータ実行可能命令は、ローカルのコンピューティングシステム内で実行することも、または分散型のコンピューティングシステム内で実行することもできる。
「システム(system)」、および「デバイス(device)」という用語は、本明細書においては互換的に使用される。文脈において特段の明示がない限り、いずれの用語も、コンピューティングシステムまたはコンピューティングデバイスのタイプに関していかなる限定をも暗示するものではない。概して、コンピューティングシステムまたはコンピューティングデバイスは、ローカルであっても、または分散型であってもよく、本明細書において説明する機能を実装するソフトウェアと専用のハードウェアおよび/または汎用のハードウェアとの任意の組合せを含むことができる。
提示の目的で、詳細の説明は、コンピューティングシステム内のコンピュータ動作を説明するのに、「決定する(determine)」、および「使用する(use)」のような用語を使用している。これらの用語は、コンピュータが行う動作の高レベルな抽象的概念であり、人間が行う行為と混同すべきではない。これらの用語に対応する実際のコンピュータ動作は、実装形態に応じて変わる。
クラウドコンピューティング環境
図7は、説明した技術が実装され得る例示的なクラウドコンピューティング環境700を示している。クラウドコンピューティング環境700は、クラウドコンピューティングサービス710を含む。クラウドコンピューティングサービス710は、コンピュータサービス、データストレージレポジトリ、データベースリソース、ネットワーキングリソースなど、様々なタイプのクラウドコンピューティングリソースを含むことができる。クラウドコンピューティングサービス710は、中央に位置していても(たとえば、企業または組織のデータセンタによって設けられても)、または分散型であってもよい(たとえば、異なるデータセンタなど、異なるロケーションに位置している、および/または異なる市もしくは国に位置している様々なコンピューティングリソースによって設けられてもよい)。
クラウドコンピューティングサービス710は、コンピューティングデバイス720、722、および724など、様々なタイプのコンピューティングデバイス(たとえば、クライアントコンピューティングデバイス)によって利用される。たとえば、コンピューティングデバイス(たとえば、720、722、および724)は、コンピュータ(たとえば、デスクトップコンピュータもしくはラップトップコンピュータ)、モバイルデバイス(たとえば、タブレットコンピュータもしくはスマートフォン)、または他のタイプのコンピューティングデバイスとすることができる。たとえば、コンピューティングデバイス(たとえば、720、722、および724)は、クラウドコンピューティングサービス710を利用して、コンピューティング演算子を行うこと(たとえば、データ処理、およびデータストレージなど)ができる。
例示的な実装形態
開示された方法のうちのいくつかの動作について、便宜上、提示するために特定の順番で説明しているが、この説明方式は、特定の順序付けが後述する特定の言語によって必要とされない限り、再構成を包含することを理解すべきである。たとえば、順次、説明した動作は、場合によっては、再構成されても、または同時に行われてもよい。その上、簡略化するために、添付の図面は、開示された方法が他の方法と併せて使用され得る様々なやり方を示していない場合もある。
開示された方法のいずれも、1つまたは複数のコンピュータ可読ストレージ媒体において記憶され、コンピューティングデバイス(すなわち、スマートフォン、もしくはコンピューティングハードウェアを含む他のモバイルデバイスを含む、任意の利用可能なコンピューティングデバイス)において実行されるコンピュータ実行可能命令またはコンピュータプログラム製品として実装され得る。コンピュータ可読ストレージ媒体は、コンピューティング環境内でアクセス可能な有形の媒体(DVDもしくはCDなどの1つまたは複数の光学媒体ディスク、(DRAMもしくはSRAMなどの)揮発性メモリ、または(フラッシュメモリもしくはハードドライブなどの)不揮発性メモリ)である。例として、図6を参照すると、コンピュータ可読ストレージ媒体は、メモリ620および625、ならびにストレージ640を含む。コンピュータ可読ストレージ媒体という用語は、信号およびキャリア波を含まない。加えて、コンピュータ可読ストレージ媒体という用語は、670などの通信接続部を含まない。
開示された技法を実装するためのコンピュータ実行可能命令のいずれか、ならびに開示された実施形態の実装中に作成され使用される任意のデータは、1つまたは複数のコンピュータ可読ストレージ媒体において記憶され得る。コンピュータ実行可能命令は、たとえば、専用のソフトウェアアプリケーション、またはウェブブラウザを介してアクセスされる、もしくはダウンロードされるソフトウェアアプリケーション、あるいは(リモートコンピューティングアプリケーションなどの)他のソフトウェアアプリケーションの一部とすることができる。そのようなソフトウェアは、たとえば、1つまたは複数のネットワークコンピュータを使用する単一のローカルコンピュータ(たとえば、任意の適切な市販のコンピュータ)上で、またはネットワーク環境内で(たとえば、インターネット、広域ネットワーク、ローカルエリアネットワーク、(クラウドコンピューティングネットワークなどの)クライアント/サーバネットワーク、または他のそのようなネットワークを介して)実行され得る。
明瞭にするために、ソフトウェアベースの実装形態の特定の選定された態様のみについて説明している。当技術分野でよく知られている他の詳細は省略されている。たとえば、開示された技術が、いずれの特定のコンピュータ言語またはプログラムに限定されないことを理解すべきである。例として、開示された技術は、C++、Java、Perl、または任意の他の適切なプログラミング言語で書かれているソフトウェアによって実装され得る。同様に、開示された技術は、任意の特定のコンピュータまたは任意の特定のタイプのハードウェアに限定されない。適切なコンピュータおよびハードウェアの特定の詳細は、よく知られており、本開示において詳細に記載する必要はない。
さらには、ソフトウェアベースの実施形態(たとえば、コンピュータに、開示された方法のいずれをも行わせるためのコンピュータ実行可能命令を含む)のいずれもが、適切な通信手段を通してアップロード、ダウンロード、またはリモートでアクセス可能である。そのような適切な通信手段は、たとえば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル(光ファイバケーブルを含む)、磁気通信部、電磁気通信部(RF、マイクロ波、および赤外線通信部を含む)、電子通信部、または他のそのような通信手段を含む。
開示された方法、装置、およびシステムは、いかなる形でも限定と見なすべきではない。代わりに、本開示は、単独でおよび互いとの様々な組合せでおよび副組合せで、様々な開示された実施形態のすべての新規で自明でない特徴および態様に向けられている。開示された方法、装置、およびシステムは、任意の特定の態様もしくは特徴、またはそれらの組合せに限定するものでも、または開示された実施形態は、任意の1つまたは複数の特定の利点が存在すること、もしくは問題が解決されることを必要としているわけでもない。
任意の例からの技術は、他の例のうちのいずれか1つまたは複数において説明した技術と組み合わせることができる。開示された技術の原理が適用され得る多くの可能な実施形態に鑑みて、例示の実施形態が、開示された技術の例であり、開示された技術の範囲における限定と解釈すべきではないことを認識すべきである。むしろ、開示された技術の範囲は、添付の特許請求の範囲の範囲および趣旨によってカバーされることを含む。
100 従来技術の環境
110 クライアントアプリケーション
115 クライアントライブラリ
120 コーディネータノード
122、132、142 永続的テーブルの組
130、140 ワーカノード
t1、t2、t3、t4、t5、t6、t7 永続的テーブル
200 例示的な環境
210 クライアントアプリケーション
215 クライアントライブラリ
220 コーディネータノード
222 永続的テーブルの組
230、240 エラスティックコンピュートノード
231、241 ローカルキャッシュ
250 分散型クエリ処理インターフェース
300 ルーティングシナリオ
312 新規SQL文
314 コンパイルされたSQLプラン
320 クライアント側ルーティングロケーションヒントキャッシュ
330 ワークロードクラスレポジトリ
332 ワークロードクラス
400、500 過程
600 コンピューティングシステム
610 処理ユニット
615 グラフィックス処理ユニットまたは共処理ユニット
620、625 メモリ
640 ストレージ
650 入力デバイス
660 出力デバイス
670 通信接続部
680 ソフトウェア
700 クラウドコンピューティング環境
710 クラウドコンピューティングサービス
720、722、724 コンピューティングデバイス

Claims (20)

  1. 分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(structured query language、SQL)文をエラスティックコンピュートノード(elastic compute nodes、ECN)にルーティングするための、1つまたは複数のコンピューティングデバイスによって行われる方法であって、
    SQL文を前記分散型データベース環境内での実行に向けて受領するステップと、
    複数の利用可能なワークロードクラスから、あるワークロードクラスを識別するステップであって、前記識別されたワークロードクラスが、前記SQL文の1つまたは複数のプロパティにマッチングする、ステップと、
    前記識別されたワークロードクラスからルーティングロケーションヒントを読み出すステップであって、前記ルーティングロケーションヒントが、前記ワークロードクラスに関連付けられている1つまたは複数のエラスティックコンピュートノードを識別する、ステップと、
    前記ルーティングロケーションヒントによって識別された前記1つまたは複数のエラスティックコンピュートノードのうちの選定されたエラスティックコンピュートノードに前記SQL文をルーティングするステップであって、前記SQL文が、前記選定されたエラスティックコンピュートノードによって実行され、前記選定されたエラスティックコンピュートノードが、永続的データベーステーブルを記憶していない、ステップと
    を含む、方法。
  2. 前記データベース環境が、コーディネータノード、および前記1つまたは複数のエラスティックコンピュートノードを含み、前記SQL文が、前記コーディネータノードに記憶されている永続的データベーステーブルからのデータを使用する、請求項1に記載の方法。
  3. 前記ワークロードクラスが、SQLコマンドを使用するユーザによって作成される、請求項1に記載の方法。
  4. 前記選定されたエラスティックコンピュートノードにおいて前記SQL文を実行するステップをさらに含み、前記実行するステップが、
    前記SQL文の少なくとも一部分を実行に向けて別のノードに送出するステップであって、前記別のノードが、前記SQL文の実行に必要な永続的データベーステーブルを記憶している、ステップと、
    前記別のノードから、前記SQL文の前記少なくとも一部分の実行結果を受領するステップと
    を含む、
    請求項1に記載の方法。
  5. 前記選定されたエラスティックコンピュートノードにおいて前記SQL文を実行するステップをさらに含み、前記実行するステップが、
    前記SQL文を実行するためのクエリ演算子の組を決定するステップと、
    前記組のクエリ演算子のうちの少なくとも1つのクエリ演算子を実行に向けて別のノードに送出するステップであって、前記別のノードが、前記少なくとも1つのクエリ演算子の実行に必要な永続的データベーステーブルを記憶している、ステップと、
    前記選定されたエラスティックコンピュートノードにおいて、前記少なくとも1つのクエリ演算子以外の残りのすべてのクエリ演算子を実行するステップと
    を含む、
    請求項1に記載の方法。
  6. 前記選定されたエラスティックコンピュートノードにおいて前記SQL文を実行するステップが、
    前記別のノードから、前記別のノードにおいて前記少なくとも1つのクエリ演算子の実行からの中間クエリ結果を受領するステップ
    をさらに含む、請求項5に記載の方法。
  7. 前記選定されたエラスティックコンピュートノードにおいて前記SQL文を実行するステップをさらに含み、前記実行するステップが、
    前記SQL文を実行するためのクエリ演算子の組を決定するステップと、
    前記組のクエリ演算子のうちの1つまたは複数のクエリ演算子が別のノードに位置している永続的データベーステーブル内のデータにアクセスすることを決定するステップと、
    前記1つまたは複数のクエリ演算子が別のノードに位置している永続的データベーステーブル内のデータにアクセスすることの決定に応答して、前記1つまたは複数のクエリ演算子を実行に向けて前記別のノードに送出するステップと、
    前記別のノードから、前記1つまたは複数のクエリ演算子を実行した結果を受領するステップと、
    前記選定されたエラスティックコンピュートノードにおいて、前記1つまたは複数のクエリ演算子以外の残りのすべてのクエリ演算子を実行するステップと
    を含む、
    請求項1に記載の方法。
  8. 少なくとも一部が、クライアントライブラリによって、および/またはコーディネータノードによって行われる、請求項1に記載の方法。
  9. 前記1つまたは複数のエラスティックコンピュートノードの現在のロードに少なくとも一部基づいて、前記1つまたは複数のエラスティックコンピュートノードからどのエラスティックコンピュートノードを選定すべきかを決定するステップ
    をさらに含む、請求項1に記載の方法。
  10. 前記選定されたエラスティックコンピュートノードが、前記分散型データベース環境の他のノードから前記SQL文を実行するのに必要なデータベースデータを読み出す、請求項1に記載の方法。
  11. 前記選定されたエラスティックコンピュートノードが、分散型クエリ処理インターフェースを介して前記他のノードから前記データベースデータを読み出す、請求項10に記載の方法。
  12. プロセッサ、および
    メモリ
    を備え、コンピュータ実行可能命令を介して、分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(structured query language、SQL)文をエラスティックコンピュートノード(elastic compute nodes、ECN)にルーティングするように構成されている1つまたは複数のコンピューティングデバイスであって、前記動作が、
    SQL文を前記分散型データベース環境内での実行に向けて受領する動作と、
    複数の利用可能なワークロードクラスから、あるワークロードクラスを識別する動作であって、前記識別されたワークロードクラスが、前記SQL文の1つまたは複数のプロパティにマッチングする、動作と、
    前記識別されたワークロードクラスからルーティングロケーションヒントを読み出す動作であって、前記ルーティングロケーションヒントが、前記ワークロードクラスに関連付けられている1つまたは複数のエラスティックコンピュートノードを識別する、動作と、
    前記ルーティングロケーションヒントによって識別された前記1つまたは複数のエラスティックコンピュートノードのうちの選定されたエラスティックコンピュートノードに前記SQL文をルーティングする動作と、
    前記選定されたエラスティックコンピュートノードによって、前記SQL文を実行する動作であって、前記SQL文が、前記選定されたエラスティックコンピュートノードに記憶されていない1つまたは複数の永続的データベーステーブルを使用し、前記SQL文を実行するのに必要なデータベースデータが、前記分散型データベース環境の他のノードから取得される、動作と
    を含む、
    1つまたは複数のコンピューティングデバイス。
  13. 前記選定されたエラスティックコンピュートノードによって前記SQL文を実行する動作が、
    前記SQL文の少なくとも一部分を実行に向けて前記他のノードのうちの1つに送出する動作であって、前記他のノードが、前記SQL文の前記少なくとも一部分の実行に必要な永続的データベーステーブルを記憶している、動作と、
    前記他のノードから、前記SQL文の前記少なくとも一部分の実行結果を受領する動作と
    を含む、請求項12に記載の1つまたは複数のコンピューティングデバイス。
  14. 前記動作が、
    前記SQL文の前記少なくとも一部分の前記受領した実行結果を前記選定されたエラスティックコンピュートノードに位置しているキャッシュ内に記憶する動作
    をさらに含み、前記エラスティックコンピュートノードにおいて同じSQL文が受領されたとき、前記記憶された結果が再使用される、
    請求項13に記載の1つまたは複数のコンピューティングデバイス。
  15. 前記選定されたエラスティックコンピュートノードによって前記SQL文を実行する動作が、
    前記SQL文を実行するためのクエリ演算子の組を決定する動作と、
    前記組のクエリ演算子のうちの少なくとも1つのクエリ演算子を実行に向けて前記他のノードのうちの1つに送出する動作であって、前記他のノードが、前記少なくとも1つのクエリ演算子の実行に必要な永続的データベーステーブルを記憶している、動作と、
    前記他のノードから、前記他のノードにおいて前記少なくとも1つのクエリ演算子の実行からの中間クエリ結果を受領する動作と、
    前記選定されたエラスティックコンピュートノードにおいて、前記少なくとも1つのクエリ演算子以外の残りのすべてのクエリ演算子を実行する動作と
    を含む、請求項12に記載の1つまたは複数のコンピューティングデバイス。
  16. 前記選定されたエラスティックコンピュートノードが、分散型クエリ処理インターフェースを介して、前記他のノードから前記データベースデータを取得する、請求項12に記載の1つまたは複数のコンピューティングデバイス。
  17. 分散型データベース環境内でワークロードクラスを使用して構造化クエリ言語(structured query language、SQL)文をエラスティックコンピュートノード(elastic compute nodes、ECN)にルーティングするための動作を行うための1つまたは複数のコンピューティングデバイスにおいて、コンピュータ実行可能命令を実行に向けて記憶する1つまたは複数のコンピュータ可読ストレージ媒体であって、前記動作が、
    SQL文を前記分散型データベース環境内での実行に向けて受領する動作と、
    複数の利用可能なワークロードクラスから、あるワークロードクラスを識別する動作であって、前記識別されたワークロードクラスが、前記SQL文の1つまたは複数のプロパティにマッチングする、動作と、
    前記識別されたワークロードクラスからルーティングロケーションヒントを読み出す動作であって、前記ルーティングロケーションヒントが、前記ワークロードクラスに関連付けられている1つまたは複数のエラスティックコンピュートノードを識別する、動作と、
    前記ルーティングロケーションヒントによって識別された前記1つまたは複数のエラスティックコンピュートノードのうちの選定されたエラスティックコンピュートノードに前記SQL文をルーティングする動作と、
    前記選定されたエラスティックコンピュートノードによって、前記SQL文を実行する動作であって、前記SQL文が、前記選定されたエラスティックコンピュートノードに記憶されていない1つまたは複数の永続的データベーステーブルを使用し、前記SQL文を実行するのに必要なデータベースデータが、前記分散型データベース環境の他のノードから取得される、動作と
    を含む、
    1つまたは複数のコンピュータ可読ストレージ媒体。
  18. 前記選定されたエラスティックコンピュートノードによって前記SQL文を実行する動作が、
    前記SQL文の少なくとも一部分を実行に向けて前記他のノードのうちの1つに送出する動作であって、前記他のノードが、前記SQL文の前記少なくとも一部分の実行に必要な永続的データベーステーブルを記憶している、動作と、
    前記他のノードから、前記SQL文の前記少なくとも一部分の実行結果を受領する動作と
    を含む、請求項17に記載の1つまたは複数のコンピュータ可読ストレージ媒体。
  19. 前記動作が、
    前記SQL文の前記少なくとも一部分の前記受領した実行結果を前記選定されたエラスティックコンピュートノードに位置しているキャッシュ内に記憶する動作
    をさらに含み、前記エラスティックコンピュートノードにおいて同じSQL文が受領されたとき、前記記憶された結果が再使用される、
    請求項18に記載の1つまたは複数のコンピュータ可読ストレージ媒体。
  20. 前記選定されたエラスティックコンピュートノードによって前記SQL文を実行する動作が、
    前記SQL文を実行するためのクエリ演算子の組を決定する動作と、
    前記組のクエリ演算子のうちの少なくとも1つのクエリ演算子を実行に向けてコーディネータノードに送出する動作であって、前記コーディネータノードが、前記少なくとも1つのクエリ演算子の実行に必要な永続的データベーステーブルを記憶している、動作と、
    前記コーディネータノードから、前記コーディネータノードにおいて前記少なくとも1つのクエリ演算子の実行からの中間クエリ結果を受領する動作と、
    前記選定されたエラスティックコンピュートノードにおけるキャッシュ内に前記中間クエリ結果を記憶する動作と、
    前記選定されたエラスティックコンピュートノードにおいて、前記少なくとも1つのクエリ演算子以外の残りのすべてのクエリ演算子を実行する動作と
    を含む、請求項17に記載の1つまたは複数のコンピュータ可読ストレージ媒体。
JP2021181142A 2021-03-30 2021-11-05 ワークロードクラスを使用したsql文のエラスティックコンピュートノードへのルーティング Pending JP2022155454A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/217,412 2021-03-30
US17/217,412 US11379483B1 (en) 2021-03-30 2021-03-30 Routing SQL statements to elastic compute nodes using workload class

Publications (1)

Publication Number Publication Date
JP2022155454A true JP2022155454A (ja) 2022-10-13

Family

ID=80682697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021181142A Pending JP2022155454A (ja) 2021-03-30 2021-11-05 ワークロードクラスを使用したsql文のエラスティックコンピュートノードへのルーティング

Country Status (6)

Country Link
US (2) US11379483B1 (ja)
EP (1) EP4068112A1 (ja)
JP (1) JP2022155454A (ja)
CN (1) CN115145999A (ja)
AU (1) AU2021258032A1 (ja)
CA (1) CA3136455C (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116108057B (zh) * 2023-04-11 2023-07-04 山东浪潮科学研究院有限公司 一种分布式数据库访问方法、装置、设备及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8898287B2 (en) * 2010-02-24 2014-11-25 Salesforce.Com, Inc. System, method and computer program product for monitoring data activity utilizing a shared data store
US10063443B2 (en) * 2012-05-29 2018-08-28 Openet Telecom Ltd. System and method for managing VoLTE session continuity information using logical scalable units
US9418085B1 (en) * 2013-03-13 2016-08-16 Amazon Technologies, Inc. Automatic table schema generation
US9146946B2 (en) * 2013-05-09 2015-09-29 International Business Machines Corporation Comparing database performance without benchmark workloads
US10067969B2 (en) * 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10437506B2 (en) * 2015-08-17 2019-10-08 Microsoft Technology Licensing Llc Optimal storage and workload placement, and high resiliency, in geo-distributed cluster systems
US10146592B2 (en) * 2015-09-18 2018-12-04 Salesforce.Com, Inc. Managing resource allocation in a stream processing framework
US10824639B2 (en) * 2015-12-18 2020-11-03 Sap Se Smart elastic scaling based on application scenarios
US10298702B2 (en) * 2016-07-05 2019-05-21 Sap Se Parallelized replay of captured database workload
CN106372177B (zh) * 2016-08-30 2019-09-27 东华大学 支持混合数据类型的关联查询及模糊分组的查询扩展方法
US10592528B2 (en) * 2017-02-27 2020-03-17 Sap Se Workload capture and replay for replicated database systems
US10977227B2 (en) * 2017-06-06 2021-04-13 Sap Se Dynamic snapshot isolation protocol selection
EP3677015B1 (en) * 2017-08-31 2021-12-08 Genesys Telecommunications Laboratories, Inc. Systems and methods for load balancing across media server instances
US11886454B2 (en) * 2018-01-25 2024-01-30 Capital One Services, Llc Systems and methods for storing and accessing database queries
US10791168B1 (en) * 2018-05-21 2020-09-29 Rafay Systems, Inc. Traffic aware network workload management system
US20200233861A1 (en) * 2019-01-18 2020-07-23 Salesforce.Com, Inc. Elastic data partitioning of a database
US20210034586A1 (en) * 2019-08-02 2021-02-04 Timescale, Inc. Compressing data in database systems using hybrid row/column storage representations
US11810089B2 (en) * 2020-01-14 2023-11-07 Snowflake Inc. Data exchange-based platform
CN111475584B (zh) * 2020-06-19 2021-01-22 阿里云计算有限公司 数据处理方法、系统以及装置
US11848998B2 (en) * 2020-07-29 2023-12-19 Control Plane Corporation Cross-cloud workload identity virtualization

Also Published As

Publication number Publication date
EP4068112A1 (en) 2022-10-05
CA3136455C (en) 2023-11-07
US11599543B2 (en) 2023-03-07
CA3136455A1 (en) 2022-09-30
US11379483B1 (en) 2022-07-05
US20220318249A1 (en) 2022-10-06
CN115145999A (zh) 2022-10-04
AU2021258032A1 (en) 2022-10-20

Similar Documents

Publication Publication Date Title
US11847319B2 (en) Storage system interface
US11979285B2 (en) System and method for generic configuration management system application programming interface
US10824474B1 (en) Dynamically allocating resources for interdependent portions of distributed data processing programs
US11157242B2 (en) Systems, methods, and apparatuses for local web components development within a cloud based computing environment
US9535949B2 (en) Dynamic rules to optimize common information model queries
EP4080377A1 (en) Method to implement multi-tenant/shared redis cluster using envoy
US10725795B2 (en) Systems, methods, and apparatuses for dynamic creation of an external code segment within a cloud based computing environment
US11704114B2 (en) Data structures for managing configuration versions of cloud-based applications
US11966732B2 (en) Data structures for managing configuration versions of cloud-based applications
US11599543B2 (en) Routing SQL statements to elastic compute nodes using workload class
US20190220917A1 (en) Inventory data model for large scale flash sales
US11281666B2 (en) Interception of database queries for delegation to an in memory data grid
US12001458B2 (en) Multi-cloud object store access
US11727017B2 (en) Methods for introspecting code in a multi-tenant environment
US11436059B2 (en) Method and system for proximity based workload and data placement
US11914610B1 (en) Multi-way data store conversion
US11968278B2 (en) Method and system for decentralized message handling for distributed computing environments
US20240202051A1 (en) Routing for data grid in a computing cluster
US20220391749A1 (en) Method and system for discovery of inference servers in a machine learning serving infrastructure

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240430