(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-27
(45)【発行日】2024-07-05
(54)【発明の名称】データクエリ方法、装置、およびデバイス
(51)【国際特許分類】
G06F 9/50 20060101AFI20240628BHJP
G06F 16/2455 20190101ALI20240628BHJP
【FI】
G06F9/50 120A
G06F16/2455
(21)【出願番号】P 2020552239
(86)(22)【出願日】2019-03-18
(86)【国際出願番号】 CN2019078418
(87)【国際公開番号】W WO2019184739
(87)【国際公開日】2019-10-03
【審査請求日】2022-03-18
(31)【優先権主張番号】201810268968.0
(32)【優先日】2018-03-29
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】シアン ジョウ
(72)【発明者】
【氏名】ビン リー
(72)【発明者】
【氏名】ヨンチュン ジャオ
(72)【発明者】
【氏名】シャオジン ウェン
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2013/0205028(US,A1)
【文献】中国特許出願公開第102360314(CN,A)
【文献】米国特許出願公開第2016/0188594(US,A1)
【文献】米国特許出願公開第2017/0213257(US,A1)
【文献】米国特許出願公開第2017/213257(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 16/2455
(57)【特許請求の範囲】
【請求項1】
データクエリ方法であって、
受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得すること
(201;402)と、
前記リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノード
の数を動的に調整すること
(202;403)と、
前記
リソースプール内の1つまたは複数の計算ノードを使用することによって前記クエリ要求に対応するデータをクエリすること(203;404)と、を含む、方法
であって、
前記特徴情報は、下記、すなわちクエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用のうちの1つまたはこれらの組み合わせを含み、
クエリ複雑度は、前記クエリ要求の実装に関する複雑度であり、前記クエリ要求によって運ばれるクエリキーワードに基づいて得られる複雑度値によって表され、
走査されたクエリデータは、履歴データに従って、前記クエリ要求の実装中に返されるデータのサイズであり、
クエリ応答時間は、前記履歴データに従って、前記クエリ要求を実装するのに費やされる時間であり、
リソース利用は、前記クエリ要求が実装されたときに消費されるリソースであることを特徴とする方法。
【請求項2】
前記受信されたクエリ要求の前記特徴情報に従って前記リソースオーバーヘッドを前記取得する
(201;402)前に、前記方法は、
前記特徴情報がクエリ複雑度を含む
との判定に応答して、前記クエリ要求からクエリキーワードを取得することと、
前記クエリキーワードを使用することによって
クエリキーワードと複雑度値がマッピングされた第1のマッピングテーブル
に問い合わせて、前記クエリキーワードに対応する複雑度値を取得し、前記複雑度値を前記クエリ要求が対応するクエリ複雑度として決定することと、をさらに含み、
前記第1のマッピングテーブルが、クエリキーワードと複雑度値との間の対応関係を記録する、請求項1に記載の方法。
【請求項3】
前記受信されたクエリ要求の前記特徴情報に従って前記リソースオーバーヘッドを前記取得する
(201;402)前に、前記方法は、
前記特徴情報がクエリ複雑度を含む
との判定に応答して、前記クエリ要求の複数のサブクエリからクエリキーワードを取得することと、前記取得したクエリキーワードを使用することによって
クエリキーワードと複雑度値がマッピングされた第1のマッピングテーブル
に問い合わせて、前記クエリキーワードに対応する複雑度値を取得することと、取得した複雑度値の合計を前記クエリ要求が対応する前記クエリ複雑度として決定することと、をさらに含み、
前記第1のマッピングテーブルが、クエリキーワードと複雑度値との間の対応関係を記録する、請求項1に記載の方法。
【請求項4】
前記クエリ要求が、SQLクエリ要求を含み、
前記クエリキーワードが、下記、すなわちjoin、groupby、orderby、distinct、count、およびwindowのうちの1つまたはこれらの組み合わせを含む、請求項
2または
3に記載の方法。
【請求項5】
前記受信されたクエリ要求の前記特徴情報に従って前記リソースオーバーヘッドを前記取得する前に、前記方法が、
前記クエリ要求
によって運ばれるデータIDを使用することによって
データIDと特徴情報がマッピングされた第2のマッピングテーブル
に問い合わせて、前記データIDに対応する特徴情報を取得することをさらに含み、
前記第2のマッピングテーブルが、データIDおよび特徴情報の対応関係を記録し、
前記特徴情報が、走査されたクエリデータ、クエリ応答時間、およびリソース利用のうちの1つまたは複数を含む、請求項1に記載の方法。
【請求項6】
前記クエリ要求
によって運ばれる前記データIDを使用することによって前記第2のマッピングテーブル
に問い合わせて、前記データIDに対応する特徴情報を前記取得する前に、前記方法が、
履歴データを収集し、前記履歴データに従って、データIDと特徴情報との間の対応関係を取得することと、
前記データIDと前記特徴情報との間の対応関係を前記第2のマッピングテーブルに記録することと、をさらに含む、請求項
5に記載の方法。
【請求項7】
前記受信されたクエリ要求の前記特徴情報に従って前記リソースオーバーヘッドを前記取得すること
(201;402)が、
前記受信されたクエリ要求について、前記クエリ要求の前記特徴情報に従って、前記クエリ要求の予測リソース量を取得することと、
前記クエリ要求の前記予測リソース量に従って、前記リソースオーバーヘッドを決定することと、を含む、請求項1に記載の方法。
【請求項8】
前記クエリ要求の前記特徴情報に従って、前記クエリ要求の前記予測リソース量を前記取得することが、
予測モデルを使用することによって前記クエリ要求の前記特徴情報を分析して、前記クエリ要求の前記予測リソース量を取得することを含み、前記予測モデルが、Holt-Winter季節モデル、ARMAモデル、線形回帰モデル、ニューラルネットワークモデルを含む、請求項
7に記載の方法。
【請求項9】
前記リソースオーバーヘッドおよび前記計算ノードリソースに従って、リソースプール内の前記計算ノード
の数を動的に調整すること
(202;403)が、
前記リソースオーバーヘッドおよび前記計算ノードリソースに従って、
前記クエリ要求を処理するための計算ノードの数を取得し、
前記リソースプール内の前記計算ノードの数と一致する計算ノードを分配することと、を含む、請求項1に記載の方法。
【請求項10】
前記リソースプール内の前記計算ノードの数と一致する前記計算ノードを前記分配することは、
前記リソースプール内に既に存在する前記計算ノードの数が
前記クエリ要求を処理するための前記計算ノードの数よりも少ない場合、前記リソースプール内の計算ノードを増加させて、前記増加後の前記計算ノードの数が
前記クエリ要求を処理するための前記計算ノードの数以上になるようにすることと、
前記リソースプール内に既に存在する前記計算ノードの数が
前記クエリ要求を処理するための前記計算ノードの数よりも多い場合、前記リソースプール内の計算ノードを減少させて、前記減少後の前記計算ノードの数が
前記クエリ要求を処理するための前記計算ノードの数以上になるようにすることと、を含む、請求項
9に記載の方法。
【請求項11】
データクエリ方法であって、
受信されたクエリ要求の特徴情報に従って、前記受信されたクエリ要求を少なくとも1つの割り当てグループに分配することであって、異なる割り当てグループが、異なるリソースサブプールに対応している、分配することと、
割り当てグループにおけるクエリ要求の特徴情報に従って、前記割り当てグループのリソースオーバーヘッドを取得することと、
前記割り当てグループのリソースオーバーヘッドおよび前記割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、前記リソースサブプール内の計算ノード
の数を動的に調整することと、
前記リソースサブプール内の
1つまたは複数の計算ノードを使用することによって、前記割り当てグループ内で前記クエリ要求に対応するデータをクエリすることと、を含む、データクエリ方法
であって、
前記特徴情報は、下記、すなわちクエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用のうちの1つまたはこれらの組み合わせを含み、
クエリ複雑度は、前記クエリ要求の実装に関する複雑度であり、前記クエリ要求によって運ばれるクエリキーワードに基づいて得られる複雑度値によって表され、
走査されたクエリデータは、履歴データに従って、前記クエリ要求の実装中に返されるデータのサイズであり、
クエリ応答時間は、前記履歴データに従って、前記クエリ要求を実装するのに費やされる時間であり、
リソース利用は、前記クエリ要求が実装されたときに消費されるリソースであることを特徴とする方法。
【請求項12】
前記受信されたクエリ要求を少なくとも1つの割り当てグループに前記分配する前に、前記方法は、
前記特徴情報がクエリ複雑度を含む場合、前記クエリ要求からクエリキーワードを取得することと、
前記クエリキーワードを使用することによって
クエリキーワードと複雑度値がマッピングされた第1のマッピングテーブル
に問い合わせて、前記クエリキーワードに対応する複雑度値を取得し、前記複雑度値を前記クエリ要求が対応するクエリ複雑度として決定することと、をさらに含み、
前記第1のマッピングテーブルが、クエリキーワードと複雑度値との間の対応関係を記録する、請求項
11に記載の方法。
【請求項13】
前記受信されたクエリ要求を少なくとも1つの割り当てグループに前記分配する前に、前記方法は、
前記特徴情報がクエリ複雑度を含む場合、クエリ要求の複数のサブクエリからクエリキーワードを取得することと、
前記取得したクエリキーワードを使用することによって
クエリキーワードと複雑度値がマッピングされた第1のマッピングテーブル
に問い合わせて、前記クエリキーワードに対応する複雑度値を取得することと、
取得された複雑度値の合計を前記クエリ要求が対応するクエリ複雑度として決定することと、をさらに含み、
前記第1のマッピングテーブルが、クエリキーワードと複雑度値との間の対応関係を記録する、請求項12に記載の方法。
【請求項14】
前記クエリ要求が、SQLクエリ要求を含み、
前記クエリキーワードが、下記、すなわちjoin、groupby、orderby、distinct、count、およびwindowのうちの1つまたはこれらの組み合わせを含む、請求項
12または
13に記載の方法。
【請求項15】
前記受信されたクエリ要求を少なくとも1つの割り当てグループに前記分配する前に、前記方法は、
クエリ要求
によって運ばれるデータIDを使用することによって
データIDと特徴情報がマッピングされた第2のマッピングテーブル
に問い合わせて、前記データIDに対応する特徴情報を取得することをさらに含み、
前記第2のマッピングテーブルが、データIDおよび特徴情報の対応関係を記録し、
前記特徴情報が、走査されたクエリデータ、クエリ応答時間、およびリソース利用のうちの1つまたは複数を含む、請求項
11に記載の方法。
【請求項16】
前記クエリ要求の前記データIDを使用することによって
データIDと特徴情報がマッピングされた第2のマッピングテーブル
に問い合わせて、前記データIDに対応する特徴情報を前記取得する前に、前記方法が、
履歴データを収集し、前記履歴データに従って、前記データIDと特徴情報との間の対応関係を取得することと、
前記データIDと前記特徴情報との間の対応関係を前記第2のマッピングテーブルに記録することと、をさらに含む、請求項
15に記載の方法。
【請求項17】
前記受信されたクエリ要求の前記特徴情報に従って、前記受信されたクエリ要求を少なくとも1つの割り当てグループに前記分配することが、
受信されたクエリ要求について、前記クエリ要求の特徴情報に従って前記クエリ要求の予測リソース量を取得し、前記予測リソース量が属するリソース区間を決定することと、
前記リソース区間が対応する前記割り当てグループに前記クエリ要求を分配することと、を含む、請求項
11に記載の方法。
【請求項18】
割り当てグループ内のクエリ要求の特徴情報に従って、前記割り当てグループの前記リソースオーバーヘッドを取得することが、
割り当てグループ内のクエリ要求について、前記クエリ要求の特徴情報に従って前記クエリ要求の予測リソース量を取得し、前記予測リソース量に従って前記割り当てグループのリソースオーバーヘッドを決定することを含む、請求項
11に記載の方法。
【請求項19】
前記クエリ要求の前記特徴情報に従って、前記クエリ要求の前記予測リソース量を前記取得することが、
予測モデルを使用することによって前記クエリ要求の特徴情報を分析して、前記クエリ要求の予測リソース量を取得することを含み、
前記予測モデルが、Holt-Winter季節モデル、ARMAモデル、線形回帰モデル、ニューラルネットワークモデルを含む、請求項
17または
18に記載の方法。
【請求項20】
前記割り当てグループのリソースオーバーヘッドおよび前記割り当てグループが対応する前記リソースサブプールの前記計算ノードリソースに従って、前記リソースサブプール内の前記計算ノード
の数を動的に調整することと、
前記割り当てグループの前記リソースオーバーヘッドおよび前記割り当てグループが対応する前記リソースサブプールの前記計算ノードリソースに従って、前記リソースサブプール内の
前記クエリ要求を処理するための計算ノードの数を取得することと、
前記リソースサブプール内の前記計算ノードの数と一致する計算ノードを分配することと、を含む、請求項
11に記載の方法。
【請求項21】
前記リソースサブプール内の前記計算ノードの数と一致する計算ノードを前記分配することは、
前記リソースサブプール内に既に存在する前記計算ノードの数が
前記クエリ要求を処理するための前記計算ノードの数よりも少ない場合、前記リソースサブプール内の計算ノードを増加させて、前記増加後の前記計算ノードの数が前記計算ノードの数以上になるようにすることと、
前記リソースサブプール内に既に存在する前記計算ノードの数が
前記クエリ要求を処理するための前記計算ノードの数よりも多い場合、前記リソースサブプール内の計算ノードを減少させて、前記減少後の前記計算ノードの数が
前記クエリ要求を処理するための前記計算ノードの数以上になるようにすることと、を含む、請求項
20に記載の方法。
【請求項22】
1つまたは複数のプロセッサと、
1つまたは複数のメモリであって、前記1つまたは複数のプロセッサによって実行されたときに、前記1つまたは複数のプロセッサに請求項1から21のいずれか一項に記載の方法を実施させるコンピュータ可読命令を格納する、メモリと、
を含む、装置。
【請求項23】
前記コンピュータ可読命令が、前記1つまたは複数のプロセッサに、
受信されたクエリ要求の特徴情報に従って、前記受信されたクエリ要求を少なくとも1つの割り当てグループに分配し(401)、異なる割り当てグループが、異なるリソースサブプールに対応することと、
割り当てグループ内のクエリ要求の特徴情報に従って、前記割り当てグループのリソースオーバーヘッドを取得する(402)ことと、
前記割り当てグループのリソースオーバーヘッドおよび前記割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、前記リソースサブプール内の計算ノードの数を動的に調整する(403)ことと、
前記リソースサブプール内の計算ノードを使用することによって、前記割り当てグループ内の前記クエリ要求に対応するデータをクエリする(404)ことと、
を含む動作を実施させ、
前記特徴情報は、下記、すなわちクエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用のうちの1つまたはこれらの組み合わせを含み、
クエリ複雑度は、前記クエリ要求の実装に関する複雑度であり、前記クエリ要求によって運ばれるクエリキーワードに基づいて得られる複雑度値によって表され、
走査されたクエリデータは、履歴データに従って、前記クエリ要求の実装中に返されるデータのサイズであり、
クエリ応答時間は、前記履歴データに従って、前記クエリ要求を実装するのに費やされる時間であり、
リソース利用は、前記クエリ要求が実装されたときに消費されるリソースであることを特徴とする、請求項22に記載の装置。
【請求項24】
1つまたは複数のメモリであって、1つまたは複数のプロセッサによって実行されたときに、前記1つまたは複数のプロセッサに、
受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得すること(201;402)と、
前記リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードの数を動的に調整すること(202;403)と、
前記リソースプール内の1つまたは複数の計算ノードを使用することによって前記クエリ要求に対応するデータをクエリすること(203;404)と、
を含む動作を実施させるコンピュータ可読命令を格納し、
前記特徴情報は、下記、すなわちクエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用のうちの1つまたはこれらの組み合わせを含み、
クエリ複雑度は、前記クエリ要求の実装に関する複雑度であり、前記クエリ要求によって運ばれるクエリキーワードに基づいて得られる複雑度値によって表され、
走査されたクエリデータは、履歴データに従って、前記クエリ要求の実装中に返されるデータのサイズであり、
クエリ応答時間は、前記履歴データに従って、前記クエリ要求を実装するのに費やされる時間であり、
リソース利用は、前記クエリ要求が実装されたときに消費されるリソースであることを特徴とする、1つまたは複数のメモリ。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年3月29日に出願され、「Data Query Method,Apparatus and Device」と題された中国特許出願第2018/10268968.0号の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【0002】
本出願は、インターネットの技術分野に関し、より具体的には、データクエリ方法、装置、およびデバイスに関する。
【背景技術】
【0003】
オープンアナリティクスは、ユーザにサーバレスのクエリ分析サービスを提供し、あらゆる次元の大量のデータ分析およびクエリを実施し、高い同時実行性、低いレイテンシ(ミリ秒の応答)、リアルタイムのオンライン分析、大量のデータクエリ、および他の機能をサポートする。オープンアナリティクスシステムは、データソースおよび計算ノードを含んでもよく、データソースは、大量のデータを記憶し、クエリ要求を受信した後、計算ノードは、データソースから、クエリ要求に対応するデータにクエリする。
【0004】
しかしながら、いくつかの適用シナリオ(マップデータクエリシナリオおよび画像データクエリシナリオなど)では、計算ノードは、短期間内に多数のクエリ要求を受信することがあり(すなわち同時実行性が非常に高い)、短期間内に多数のクエリ要求を処理する必要がある。この状況は、CPU(中央処理装置)リソース、メモリリソース、および/またはネットワーク帯域幅の異常を引き起こし、クエリのタイムアウトまたはクエリの不具合につながる。
【発明の概要】
【0005】
本出願は、データクエリ方法であって、
受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得することと、
リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整することと、
計算ノードを使用することによってクエリ要求に対応するデータをクエリすることと、を含む、方法を提供する。
【0006】
本出願は、データクエリ方法であって、
受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配することであって、異なる割り当てグループが、異なるリソースサブプールに対応している、分配することと、
割り当てグループ内のクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得することと、
割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードを動的に調整することと、
リソースサブプール内の計算ノードを使用することによって、割り当てグループ内でクエリ要求に対応するデータをクエリすることと、を含む、データクエリ方法を提供する。
【0007】
本出願は、データクエリ装置であって、
受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得する取得モジュールと、
リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整する処理モジュールと、
計算ノードを使用することによってクエリ要求に対応するデータをクエリするクエリモジュールと、を備える、データクエリ装置を提供する。
【0008】
本出願は、データクエリ装置であって、
受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配する分配モジュールであって、異なる割り当てグループが、異なるリソースサブプールに対応している、分配モジュールと、
割り当てグループ内のクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得する、取得モジュールと、
割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードを動的に調整する、処理モジュールと、
リソースサブプール内の計算ノードを使用することによって割り当てグループ内のクエリ要求に対応するデータをクエリするクエリモジュールと、を備える、データクエリ装置を提供する。
【0009】
本出願は、データクエリデバイスであって、受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得し、リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整し、計算ノードを使用することによって、クエリ要求に対応するデータをクエリするプロセッサ、を備える、データクエリデバイスを提供する。
【0010】
本出願は、データクエリデバイスであって、受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配することであって、異なる割り当てグループが、異なるリソースサブプールに対応している、分配することと、割り当てグループ内のクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得することと、割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードを動的に調整することと、リソースサブプール内の計算ノードを使用することによって、割り当てグループ内のクエリ要求に対応するデータをクエリすることと、を行うプロセッサを備える、データクエリデバイスを提供する。
【0011】
前述の技術的解決策に基づいて、本出願の一実施形態では、リソースオーバーヘッドは、受信されたクエリ要求の特徴情報に従って取得されてもよく、リソースプール内の計算ノードは、リソースオーバーヘッドおよび計算ノードリソースに従って動的に調整される。したがって、リソースプール内の計算ノードが受信されたすべてのクエリ要求を処理することができ、計算ノードの処理効率およびリソース利用率がより効果的に改善され、その結果、計算ノードが多数のクエリ要求に対する並列処理をより効率的に実施することができ、CPUリソース、メモリリソース、およびネットワーク帯域幅リソースの利用率を増加させ、したがって、全体的な計算リソースおよびユーザクエリ負荷の観点からより良い効果を達成し、ユーザの使用経験を向上させる。さらに、リソースプール内の計算ノードを動的に調整することを使用することによって、各計算ノードは、ユーザに対してサーバレスクエリ分析サービスを提供することができ、その結果、ユーザは、サーバまたはサービスインスタンスを知覚する必要がなく、クラウドサービスによって提供されるサービス自体を知覚する必要があるだけである。クラウドサービスに基づいて、ユーザは、計算ノードがデータソース内でデータクエリおよび分析を実施できるように、SQLクエリ要求を入力する必要があるだけであり、商業分析ツールおよびアプリケーション(APP)を、シームレスに統合することができる。リソースをインテリジェントに分析し、自動的に調整することができ、クラウドデータベースおよびクラウドデータ分析サービスクラスタのリソース利用率および価格/性能比がより効果的に上昇する。
【図面の簡単な説明】
【0012】
本出願の実施形態または従来技術における技術的解決策をより明確に説明するために、本出願の実施形態および従来技術の説明で使用される添付図面を簡単に紹介する。明らかに、以下の説明における添付の図面は、本出願に説明されるいくつかの実施形態にすぎず、当業者は、本出願の実施形態のこれらの添付の図面に従って、他の図面を取得することができる。
【0013】
【
図1】本出願の実装様式におけるシステム構造の概略図である。
【
図2】本出願の実装様式におけるデータクエリ方法のフロー図である。
【
図3】本出願の別の実装様式におけるシステム構造の概略図である。
【
図4】本出願の別の実装様式におけるデータクエリ方法のフロー図である。
【
図5】本出願の実装様式におけるデータクエリ装置の構造図である。
【
図6】本出願の別の実装様式におけるデータクエリ装置の構造図である。
【発明を実施するための形態】
【0014】
本出願で使用される用語は、特定の実施形態を説明することのみを目的としており、本出願を限定することを意図するものではない。本出願および添付の特許請求の範囲で使用される単数形「1つの(one)」、「その(the)」、および「この(this)」は、それらの意味が文脈で明確に表現されない限り、複数形をカバーすることも意図している。本明細書で使用される「および/または」という用語は、列挙された項目の任意の1つまたは複数を含む任意の可能な組み合わせを指すことも理解されたい。
【0015】
本出願は、様々な種類の情報を説明するために第1、第2、および第3などの用語を使用することがあるが、情報はこれらの用語に限定されるべきではないことを理解されたい。これらの用語は、同じ種類の情報を区別することを意図しているにすぎない。例えば、本出願の範囲から逸脱することなく、第1の情報は、第2の情報とも呼ばれ得、同様に、第2の情報は、第1の情報とも呼ばれ得る。文脈に応じて、本明細書で使用される「場合(if)」という用語は、「…の時点に(at the time of…)」または「…のとき(when….)」、または「決定に応答して(in response to determination)」として解釈され得る。”
【0016】
本出願の一実施形態は、クライアント、ロードバランサ、フロントノード(「フロントエンドサーバ」とも呼ばれ得る)、計算ノード(「コンピュータサーバ」とも呼ばれ得る)、およびオープンアナリティクスを達成するためのシステムなどのデータソースを含むシステムに適用され得るデータクエリ方法を提供する。もちろん、リソーススケジューリングサーバなどの他のサーバもさらに含まれてもよく、これに限定は設けられない。
【0017】
図1は、本出願の一実施形態の適用シナリオの概略図を示す。フロントノードリソースプールでは、1つまたは複数のフロントノードがあり、
図1は、3つのフロントノードを例にとっている。計算ノードリソースプールでは、1つまたは複数の計算ノードがあり、
図1は、5つの計算ノードを例にとっている。実用的な適用において、フロントノードを増加(フロントノードの数を増加させる)または減少(フロントノードの数を減少させる)させることができ、計算ノードも増加(計算ノードの数を増加させる)または減少させる(計算ノードの数を減少させる)ことができる。この実施形態は、計算ノードを増加または減少させるための解決策である。
【0018】
ここで、クライアントを使用して、例えば、端末デバイス(PC(パーソナルコンピュータ)、ノートブック、またはモバイル端末など)が含むAPP(アプリケーション)であり得るか、または端末デバイスが含むブラウザであり得る、データソースからのデータをクエリする。クライアントの種類に限定は設けられない。
【0019】
ここで、ロードバランサを使用して、例えば、非常に多くのクエリ要求が受信された後に、クエリ要求の負荷分散を実施し、これらのクエリ要求は、フロントノードにロード負荷分散され得る。このプロセスに限定は設けられない。
【0020】
ここで、データソースを使用して、様々な種類のデータを記憶し、データソースに記憶されたデータをクライアントに提供してもよい。本出願の実施形態は、データソースに記憶されるデータの種類に限定はなく、例えば、データは、ユーザデータ、商品データ、地図データ、ビデオデータ、画像データ、または音声データであり得る。
【0021】
ここで、リソースプール内の複数のフロントノードを使用して、同じ機能を提供する。具体的には、フロントノードを使用して、クライアントによって送信されたクエリ要求を受信し、クエリ要求のSQL(構造化クエリ言語)解析を実施し、SQL解析結果を使用することによってクエリ要求を生成し、クエリ要求を計算ノードに送信し、クエリ要求を使用して、クエリ要求に対応するデータを要求する。次に、フロントノードをさらに使用して、計算ノードによって返されたデータを受信し、そのデータをクライアントに送信する。
【0022】
ここで、リソースプール内の複数の計算ノードを使用して、同じ機能を提供する。具体的には、計算ノードを使用して、フロントノードによって送信されたクエリ要求を受信し、クエリ要求を使用して、データソースからクエリ要求に対応するデータを読み取り(この読み取りプロセスに限定されない)、データをフロントノードに送信する。
【0023】
一例において、計算ノードが短時間で非常に多くのクエリ要求を受信する場合(すなわち同時実行性が非常に高い)、計算ノードは短時間で非常に多くのクエリ要求を処理する必要があり、CPUリソース、メモリリソース、および/またはネットワーク帯域幅の異常を引き起こし、クエリタイムアウトまたはクエリ失敗をもたらす。前述の方法とは異なり、本出願の一実施形態では、リソースプール内の計算ノードを動的に調整することができ、すなわち非常に多くのクエリ要求があるとき、リソースプール内の計算ノードの数を増加させて、計算ノード当たりのクエリ要求の数を減少させることができ、その結果、特定の計算ノードによって非常に多くのクエリ要求を短時間で処理することを回避することができ、計算ノードの処理効率およびリソース利用率をより効果的に向上させることができ、CPUリソース、メモリリソースおよびネットワーク帯域幅の占有を減少させることができ、したがって、処理性能が向上し、クライアントのクエリのタイムアウトまたは故障が回避され、ユーザの使用経験が向上する。
【0024】
前述の適用シナリオにおいて、
図2は、本出願の一実施形態で提供されるデータクエリ方法のフローの概略図を示す。この方法は、データクエリデバイスに適用され得る。データクエリデバイスは、
図1のロードバランサ、フロントノード、またはリソーススケジューリングサーバであり得る。これに限定は設けられない。この実施形態では、フロントノードにおける適用を例にとると、この方法は、下記のステップを含み得る:
【0025】
ステップ201:受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得すること。例えば、リソースオーバーヘッドは、予め設定された時間枠で受信されたクエリ要求の特徴情報に従って取得され得る。
【0026】
ステップ202:リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整すること。
【0027】
ステップ203:リソースプール内の計算ノードを使用することによって、クエリ要求に対応するデータをクエリすること。
【0028】
前述の実装順序は、説明の便宜のために与えられた例にすぎない。実際の適用では、ステップ間の実装順序は変更されてもよく、限定されない。さらに、他の実施形態では、本明細書で示され、説明される順序に従って、対応する方法のステップを実装する必要はなく、方法は、本明細書で説明されるステップよりも多いまたは少ないステップを含んでもよい。さらに、本明細書で説明される単一のステップは、他の実施形態で説明される多数のステップに分割されてもよく、本明細書で説明される多数のステップは、他の実施形態で説明される単一のステップに組み合わせられてもよい。
【0029】
ここで、クライアントがデータソース内のデータを要求する必要があるとき、クライアントはクエリ要求を送信してもよい。ロードバランサがこのクエリ要求を受信した後、ロードバランサは、クエリ要求をフロントノードに送信してもよい。フロントノードがクエリ要求を受信した後、フロントエンドは、クエリ要求をクエリキューに記憶してもよい。
【0030】
ここで、フロントノードは予め設定された時間枠を設定してもよく、予め設定された時間枠の時間は、経験に従って、例えば、3秒に構成されてもよい。これに基づいて、フロントノードは、予め設定された時間枠内のクエリキューに記憶されたすべてのクエリ要求を、予め設定された時間枠内で受信されたクエリ要求、例えば、100個のクエリ要求として、決定してもよい。
【0031】
ステップ201の実装の前に、予め設定された時間枠で受信されたすべてのクエリ要求について、クエリ要求の各々の特徴情報も最初に取得してもよい。特徴情報は、限定されないが、下記の選択肢、すなわち同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用のうちの1つまたは任意のこれらの組み合わせを含んでもよい。
【0032】
I.同時実行性、すなわち100などの予め設定された時間枠で受信されるクエリ要求の数。
【0033】
II.クエリ複雑度、すなわちクエリ応答時間、CPUリソース占有率、メモリリソース占有率、ネットワーク帯域幅占有率などを表現し得るクエリ要求の実装のための複雑度。ここで、クエリ複雑度は通常、クエリ応答時間、CPUリソース占有率、メモリリソース占有率、およびネットワーク帯域幅占有率を正規化することによって取得され得る値である。例えば、大量のCPUリソース、メモリリソース、およびネットワーク帯域幅が占有される必要があり、クエリ要求1が実装されるときクエリ応答時間が長い場合、クエリ要求1のクエリ複雑度は高い。少量のCPUリソース、メモリリソース、およびネットワーク帯域幅が占有される必要があり、クエリ要求2が実装されるときクエリ応答時間が短い場合、クエリ要求2のクエリ複雑度は低い。
【0034】
同じクエリキーワードを有するクエリ要求について、それらは、同じまたは同様のクエリ複雑度値を有する。したがって、クエリキーワードと複雑度値との間の対応関係を取得し、第1のマッピングテーブルに記録してもよい。例えば、クエリ要求1およびクエリ要求2が、両方ともクエリキーワードAを有しているクエリ要求であると仮定すると、クエリ要求1およびクエリ要求2のクエリ複雑度値は同じである。クエリキーワードAと複雑度値Aとの間の対応関係が第1のマッピングテーブルに記録されると仮定すると、クエリ要求1およびクエリ要求2について、クエリ要求1のクエリ複雑度およびクエリ要求2のクエリ複雑度が、両方とも複雑度値Aである。
【0035】
ここで、クエリキーワードと複雑度値との間の対応関係を取得することは、限定されないが、経験に従ってクエリキーワードと複雑度値との間の対応関係を構成すること、あるいは、ニューラルネットワークを使用することによってクエリキーワードと複雑度値と間の対応関係を訓練すること(この訓練プロセスに限定は設けられない)、あるいは、クエリ要求が実装されるとき、クエリ要求のクエリキーワードおよびクエリキーワードの複雑度値を取得することを含んでもよい。クエリ要求が実装されるとき、1コアのCPUリソースおよび100Mのメモリリソースが消費される場合、複雑度値は、1コアCPUリソースおよび100Mのメモリリソースが対応する複雑度値である。これに限定は設けられない。
【0036】
一例では、クエリ要求は、限定されないが、SQLクエリ要求を含んでもよく、クエリキーワードは、限定されないが、下記の選択肢、すなわち結合のキーワード(すなわちjoin。例えば、SQLクエリ要求は、キーワード「join」を含む)、結果セットをグループ化するためのキーワード(すなわちgroupby。例えば、SQLクエリ要求は、キーワード「groupby」を含む)、結果セットを順序付けするためのキーワード(すなわちorderby。例えば、SQLクエリ要求は、キーワード「orderby」を含む)、差異のためのキーワード設定(すなわちdistinct。例えば、SQLクエリ要求は、キーワード「distinct」を含む)、行番号の計算のためのキーワード(すなわちcount。例えば、SQLクエリ要求は、キーワード「count」を含む)、および枠関数のためのキーワード(すなわちwindow。例えば、SQLクエリ要求は、キーワード「window」を含む)のうちの1つまたはこれらの組み合わせを含んでもよい。
【0037】
表1は、クエリキーワードと複雑度値との間の対応関係を記録している第1のマッピングテーブルの一例を示す。ここでの複雑度値は、クエリ要求の複雑度を反映している。例えば、複雑度値5は、1コアのCPUリソースおよび100Mのメモリリソースが消費されることを意味し、複雑度値10は、2コアのCPUリソースおよび200Mのメモリリソースが消費されることを意味し、残りは同じ様式で行われてもよい。もちろん、表1は一例にすぎず、クエリキーワードに対応する複雑度値は実際の条件に関連しているため、不要な詳細は繰り返さない。
【0038】
【0039】
さらに、予め設定された時間枠で受信されたすべてのクエリ要求について、クエリ要求のクエリ複雑度を取得するために、下記の方法を使用してもよい:方法1:クエリ要求からクエリキーワードを取得し、クエリキーワードを使用することによって第1のマッピングテーブルをクエリして、クエリキーワードに対応する複雑度値を取得し、複雑度値をクエリ要求が対応するクエリ複雑度として決定すること。方法2:クエリ要求の複数のサブクエリからクエリキーワードを取得し、各取得されたクエリキーワードを使用することによって第1のマッピングテーブルをクエリして、各クエリキーワードに対応する複雑度値を取得すること。次いで、取得された複雑度値の合計(すなわちすべての複雑度値の合計)を、クエリ要求が対応するクエリ複雑度として決定してもよい。
【0040】
例えば、方法1では、クエリ要求がSQLのjoinステートメントである、すなわちクエリ要求がクエリキーワード「join」を含むと仮定すると、表1に示される第1のマッピングテーブルは、クエリキーワード「join」を使用することによってクエリされて、複雑度値5を取得してもよく、次いで、クエリ要求が対応するクエリ複雑度が複雑度値5であることが決定されてもよい。
【0041】
方法2では、クエリ要求がサブクエリ1、サブクエリ2、およびサブクエリ3を含み、サブクエリ1がSQLのjoinステートメントであり、サブクエリ2がSQLのgroupbyステートメントであり、サブクエリ3がSQLのdistinctステートメントであると仮定する。サブクエリ1は、クエリキーワード「join」を含み、表1に示される第1のマッピングテーブルは、クエリキーワード「join」を使用することによってクエリされて、複雑度値5を取得する。サブクエリ2は、クエリキーワード「groupby」を含み、表1に示される第1のマッピングテーブルは、クエリキーワード「グループビー」を使用することによってクエリされて、複雑度値10を取得する。サブクエリ2は、クエリキーワード「distinct」を含み、表1に示される第1のマッピングテーブルは、クエリキーワード「distinct」を使用することによってクエリされて、複雑度値12を取得する。次いで、クエリ要求が対応するクエリ複雑度は、複雑度値5、複雑度値10、および複雑度値12の合計である、すなわちクエリ複雑度は、複雑度値27であると決定されてもよい。
【0042】
III.走査されたクエリデータ、すなわちクエリ要求の実装中に返されたデータサイズ。例えば、クエリ要求1がデータAを要求するために使用され、データAのサイズが10Mであると仮定すると、走査されたクエリデータは10Mであり得、換言すれば、クライアントに返されたデータは10Mであり得る。
【0043】
一例では、履歴データを収集してもよく、履歴データに従って、データIDと走査されたクエリデータとの間の対応関係を取得し、次いで、第2のマッピングテーブルにおいて、データIDと走査されたクエリデータとの間の対応関係を記録している。例えば、クエリ要求が実装されるとき、クエリ要求がデータAを要求するために使用され、データAのサイズが10Mである場合、フロントノードは、前述の情報(すなわち履歴データ)を収集し、データAと走査されたクエリデータ100との間の対応関係を取得し、その対応関係を第2のマッピングテーブルに記録してもよい。第2のマッピングテーブルの例を示す表2を参照されたい。第2のマッピングテーブルの内容に限定は設けられない。
【0044】
【0045】
さらに、予め設定された時間枠で受信されたすべてのクエリ要求について、クエリ要求の走査されたクエリデータを取得するために、下記の方法が使用されてもよい:クエリ要求のデータIDを使用することによって第2のマッピングテーブルをクエリして、データIDに対応する走査されたクエリデータを取得すること。例えば、クエリ要求によって運ばれるデータIDがデータAである場合、データAに対応する走査されたクエリデータ10Mが決定される。クエリ要求によって運ばれるデータIDがデータCである場合、第2のマッピングテーブルは、データCが対応する走査されたクエリデータ10Mを記録しないので、データCが対応する走査されたクエリデータが、デフォルト値として設定されてもよい(例えば、走査されたクエリデータは、5Mに従って構成されてもよい)。
【0046】
IV.クエリ応答時間、すなわちクエリ要求の実装に費やされる時間(クエリ要求の処理の開始からクエリ要求の処理の終了までに費やされる時間)。例えば、クエリ要求1が実装されるときに3秒が費やされると仮定すると、クエリ応答時間は3秒である。
【0047】
ここで、履歴データを収集してもよく、履歴データに従って、データIDとクエリ応答時間との間の対応関係を取得し、データIDとクエリ応答時間との間の対応関係を第2のマッピングテーブルに記録する。予め設定された時間枠で受信されたすべてのクエリ要求について、クエリ要求のクエリ応答時間を取得するために、下記の方法が使用されてもよい:クエリ要求のデータIDを使用することによって第2のマッピングテーブルをクエリして、データIDに対応するクエリ応答時間を取得すること。
【0048】
V.リソース利用、すなわちメモリ利用、CPU利用、およびネットワーク帯域幅利用などの、クエリ要求が実装されるとき消費されるリソース。クエリ要求1が実装されるとき1コアのCPUリソース、100Mのメモリリソース、および100Mのネットワーク帯域幅が消費されると仮定すると、リソース利用は1コアのCPUリソース、100Mのメモリリソース、および100Mのネットワーク帯域幅である。
【0049】
ここで、履歴データを収集し、履歴データに従って、データIDとリソース利用との間の対応関係を取得してもよい。次いで、データIDとリソース利用との間の対応関係も、第2のマッピングテーブルに記録してもよい。さらに、予め設定された時間枠で受信されたすべてのクエリ要求について、クエリ要求のリソース利用を取得するために、下記の方法も使用されてもよい:クエリ要求のデータIDを使用することによって第2のマッピングテーブルをクエリし、データIDに対応するリソース利用を取得できるようにすること。
【0050】
一例では、フロントノードはまた、表3に示される第2のマッピングテーブルも維持してもよい。第2のマッピングテーブルは、データID、走査されたクエリデータ、クエリ応答時間、およびリソース利用の対応関係を記録している。これに基づいて、予め設定された時間枠で受信されたすべてのクエリ要求について、表3に示される第2のマッピングテーブルは、クエリ要求のデータIDを使用することによってクエリされ、それによってデータIDに対応する特徴情報を取得してもよい。特徴情報は、1つまたは複数の走査されたクエリデータ、クエリ応答時間、およびリソース利用を含んでもよい。
【0051】
【0052】
要約すると、前述のクエリ要求によって運ばれるデータIDがデータAである場合、データAに対応する走査されたクエリデータ10M、クエリ応答時間3秒、およびリソース利用「CPUリソース:1コア;メモリリソース:100M;ネットワーク帯域幅:100M」が決定される。さらに、クエリ要求によって運ばれるデータIDがデータCである場合、第2のマッピングテーブルはデータCが対応する内容を記録しないので、走査されたクエリデータがデフォルト値として設定されてもよく、クエリ応答時間がデフォルト値として設定されてもよく、リソース利用がデフォルト値として設定されてもよい。これに限定は設けられない。
【0053】
前述のプロセスを通じて、予め設定された時間枠で受信されたすべてのクエリ要求の特徴情報を取得することができ、例えば、同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用である特徴情報をとる。
【0054】
ステップ201では、受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得することは、予め設定された時間枠で受信されたすべてのクエリ要求について、クエリ要求の特徴情報に従ってクエリ要求の予測リソース量を取得し、すべてのクエリ要求の予測リソース量に従ってリソースオーバーヘッドを決定することを含んでもよい。例えば、リソースオーバーヘッドは、すべてのクエリ要求の予測リソース量の合計であってもよい。
【0055】
ここで、クエリ要求の予測リソース量をクエリ要求の特徴情報に従って取得するとき、特徴情報がクエリ複雑度であると仮定すると、クエリ複雑度の複雑度値が大きいほど、予測リソース量は大きくなり、クエリ複雑度の複雑度値が小さいほど、予測リソース量が小さくなる。前述の法則に準拠している限り、この決定プロセスに限定は設けられない。特徴情報が走査されたクエリデータであると仮定すると、走査されたクエリデータが大きいほど、予測リソース量は大きくなり、走査されたクエリデータが小さいほど、予測リソース量は小さくなる。前述の法則に準拠している限り、この決定プロセスに限定は設けられない。特徴情報がクエリ応答時間であると仮定すると、クエリ応答時間が大きいほど、予測リソース量は大きくなり、クエリ応答時間が小さいほど、予測リソース量は小さくなる。前述の法則に準拠している限り、この決定プロセスに限定は設けられない。特徴情報がリソース利用であると仮定すると、リソース利用が大きいほど、予測リソース量は大きくなり、リソース利用が小さいほど、予測リソース量は小さくなる。前述の法則に準拠している限り、この決定プロセスに限定は設けられない。もちろん、前述の方法は、少なくとも1つの例を有する。これに限定はない。
【0056】
例えば、特徴情報が複数の同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース使用であるとき、例えば、5つの特徴の包含をとると、同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース使用は、正規化されてもよく、換言すれば、同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用は、同じ数量レベルに正規化されてもよい。この正規化の方法に限定は設けられない。正規化された同時実行性A、クエリ複雑度B、走査されたクエリデータC、クエリ応答時間D、およびリソース利用Eを取得すると仮定すると、同時実行性A、クエリ複雑度B、走査されたクエリデータC、クエリ応答時間D、およびリソース利用Eを合計してもよい。合計結果が大きいほど、予測リソース量は大きくなり、合計結果が小さいほど、予測リソース量は小さくなる。前述の法則に準拠している限り、これに限定は設けられない。
【0057】
別の例では、重み1*同時実行性A、重み2*クエリ複雑度B、重み3*走査されたクエリデータC、重み4*クエリ応答時間D、および重み5*リソース利用Eを合計することもできる。合計結果が大きいほど、予測リソース量は大きくなり、合計結果が小さいほど、予測リソース量は小さくなる。前述の法則に準拠している限り、これに限定は設けられない。ここで、重み1、重み2、重み3、重み4、および重み5は、すべて経験に従って構成されることができ、これに限定は設けられない。例えば、重み1、重み2、重み3、重み4、および重み5の合計は、1であってもよく、もちろん、2または3などの他の値であってもよい。
【0058】
一例では、クエリ要求の特徴情報に従ってクエリ要求の予測リソース量を取得することは、予測モデルを使用することによってクエリ要求の特徴情報を分析して、クエリ要求の予測リソース量を取得することを含み得る。予測モデルは、限定されないが、Holt-Winter(立方体指数平滑法)季節モデル、ARMA(自動回帰移動平均)モデル、線形回帰モデル、ニューラルネットワークモデルを含み得る。
【0059】
予測モデルがニューラルネットワークモデルであると仮定すると、ニューラルネットワークは、履歴データを使用して、特徴情報と予測リソース量との間の対応関係を訓練してもよい。例えば、特徴情報がクエリ複雑度であるとき、クエリ複雑度と予測リソース量との間の対応関係を訓練してもよい。例えば、クエリ要求が実装されるとき、クエリ要求のクエリ複雑度が複雑度値5であり、実際に消費されるリソース量がリソース量Aであると仮定すると、複雑度値5と予測リソース量Aとの間の対応関係を取得してもよい。もちろん、ニュートラルネットワークは、大量の履歴データを使用することによって、クエリ複雑度と予測リソース量との間の対応関係を訓練し、この訓練プロセスに限定は設けられない。訓練結果において、クエリ複雑度の複雑度値が大きいほど、予測リソース量は大きくなり、クエリ複雑度の複雑度値が小さいほど、予測リソース量は小さくなる。同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、リソース利用、および他の特徴情報については、それらの訓練プロセスは同様であるので、不要な詳細は繰り返さない。特徴情報が、複数の同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用である場合、その訓練プロセスは同様であるので、不要な詳細は繰り返さない。
【0060】
さらに、ニュートラルネットワークが特徴情報と予測リソース量との間の対応関係を訓練した後、予め設定された時間枠で受信されたすべてのクエリ要求について、ニュートラルネットワークは、クエリ要求の特徴情報に従って対応関係をクエリして、クエリ要求の予測リソース量を取得してもよい。このプロセスに限定は設けられない。
【0061】
もちろん、前述の方法は、ニューラルネットワークモデルを使用して予測リソース量を取得する例にすぎず、これに限定は設けられない。予測モデルが、Holt-Winter季節モデル、ARMAモデル、または線形回帰モデルである場合、その実装方法はニューラルネットワークモデルの実装方法同様であるので、決定プロセスが下記の法則に準拠する限り、不要な詳細は繰り返さない:クエリ複雑度の複雑度値が大きいほど、予測リソース量は大きくなる;走査されたクエリデータが大きいほど、予測リソース量は大きくなる;クエリ応答時間が大きいほど、予測リソース量は大きくなる;リソース利用が大きいほど、予測リソース量は大きくなる;同時実行性が大きいほど、予測リソース量は大きくなる。
【0062】
ステップ202において、リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整することは、限定されないが、リソースオーバーヘッドおよび計算ノードリソースに従って、計算ノードの数を取得することを含んでもよく、次いで、計算ノードの数と一致する計算ノードがリソースプール内に分配されてもよい。
【0063】
ここで、リソースオーバーヘッドおよび計算ノードリソースに従って、計算ノードの数を取得することは、限定されないが、下記の方法を含み得る:計算ノードの数は、リソースオーバーヘッド/計算ノードリソースを整数に切り上げることによって取得され得る。もちろん、計算ノードの数がリソースオーバーヘッド/計算ノードリソースを整数に切り上げた結果以上である限り、計算ノードの数を取得するために他の方法も使用されてもよく、これに限定は設けられない。
【0064】
例えば、予め設定された時間枠で受信されたすべてのクエリ要求の予測リソース量の合計が100CPUコアである、すなわちリソースオーバーヘッドが100CPUコアであるとき、コンピュートノードリソースが8CPUコアである(すなわちリソースプール内の各計算ノードには、8CPUコアの計算ノードリソースが提供される)と仮定すると、計算ノードの数は13個であり得る。明らかに、計算ノードの数が13個であるとき、13個の計算ノードが104のCPUコアを提供することができるので、13個の計算ノードは、100のCPUコアのリソースオーバーヘッドを満足することができ、すなわち13個の計算ノードは、予め設定された時間枠で受信されたすべてのクエリ要求を処理することができる。
【0065】
別の例では、リソースオーバーヘッドが20Gメモリであるとき、計算ノードリソースが2Gメモリであると仮定すると、計算ノードの数は10個であり得る。明らかに、計算ノードの数が10個であるとき、10個の計算ノードが20Gのメモリを提供することができるので、10個の計算ノードは、20Gのメモリのリソースオーバーヘッドを満足することができ、すなわち10個の計算ノードは、予め設定された時間枠で受信されたすべてのクエリ要求を処理することができる。
【0066】
別の例では、リソースオーバーヘッドが100CPUコアおよび20Gメモリであり、計算ノードリソースが8CPUコアおよび2Gメモリであるとき、CPUコアリソースは13個の計算ノードを使用する必要があり、メモリリソースは10個の計算ノードを使用する必要があり、そのため最大数13の計算ノードが計算ノードの数として決定され得る。
【0067】
ここで、リソースプール内の計算ノードの数と一致する計算ノードを分配することは、リソースプール内に既に存在する計算ノードの数が計算ノードの数よりも少ない場合、計算ノードをリソースプール内で増加させて、減少後の計算ノードの数が計算ノードの数以上になるようにすることを含んでもよい。リソースプール内に既に存在する計算ノードの数が計算ノードの数よりも多い場合、計算ノードをリソースプール内で減少させて、減少後の計算ノードの数が計算ノードの数以上になるようにしてもよい。
【0068】
例えば、リソースプールに8個の計算ノードがあるが、前述の計算ノードの数は13個であると仮定すると、5個の計算ノードをリソースプール内で増加させてもよく、その結果、リソースプールに合計13個の計算ノードがあり、これら13個の計算ノードは、予め設定された時間枠で受信されたすべてのクエリ要求を処理するために使用される。
【0069】
別の例では、リソースプール内に20個の計算ノードがあるが、前述の計算ノードの数は13個であると仮定すると、7個の計算ノードをリソースプール内で減少させてもよく、その結果、リソースプール内に合計13個の計算ノードがあり、これら13個の計算ノードは、予め設定された時間枠で受信されたすべてのクエリ要求を処理するために使用される。
【0070】
一例では、フロントノードが数13個の計算ノードを取得した後、フロントノードは、数13の計算ノードを運ぶリソース増加または減少命令をリソーススケジューリングサーバに送信してもよい。リソーススケジューリングサーバがリソースの増加または減少命令を受信した後、リソーススケジューリングサーバは、リソースプール内の計算ノードの数13と一致する計算ノードを分配してもよい。
【0071】
例えば、1つのフロントノードがある場合、リソーススケジューリングサーバは、数13の計算ノードを運ぶリソースの増加または減少命令のみを受信し、そのため計算ノードがリソースプール内で増加または減少され、その結果、リソースプール内に13個の計算ノードがあるようになる。別の例では、2つのフロントノードがある場合、リソーススケジューリングサーバが、13個の計算ノードを運ぶリソースの増加または減少命令、および8個の計算ノードを運ぶリソースの増加または減少命令を受信すると仮定すると、計算ノードがリソースプール内で増加または減少され、その結果、リソースプール内に21個の計算ノードがあるようになる。
【0072】
ここで、リソーススケジューリングサーバがリソースプール内の計算ノードを増加/減少させるとき、性能は、第2のスケール(それは、100ミリ秒スケールまで最適化され得る)であってもよく、換言すれば、わずか数秒(それは、100ミリ秒スケールまで最適化され得る)であってもよく、計算ノードは、リソースプール内で増加または減少されてもよい。
【0073】
ステップ203において、リソースプール内の計算ノードを使用することによって、前述のクエリ要求に対応するデータをクエリすることは、予め設定された時間枠で受信されたすべてのクエリ要求について、フロントノードは、クエリ要求のSQL解析を実施し、SQL解析結果を使用することによってクエリ要求を生成し、クエリ要求を計算ノードに送信してもよく、計算ノードがクエリ要求を受信した後、計算ノードは、データソースからクエリ要求に対応するデータを読み取り、計算を実行し、フロントノードにデータを返してもよく、フロントノードは、受信されたデータをクライアントに返す。例えば、フロントノードは、クエリ要求を6つのクエリサブ要求に分割し(このプロセスに限定は設けられない)、6つのクエリサブ要求を6つの計算ノードに負荷分散する。すべての計算ノードについて、クエリ要求を受信した後、計算ノードは、データソースからクエリサブ要求に対応するデータを読み取り、データをフロントノードに返す。フロントノードが6個のクエリサブ要求に対応するデータを受信した後、データを組み合わせてデータセットを取得する。組み合わされたデータセットは、前述のクエリ要求が対応するデータである。次いで、データセットをクライアントに送信し、最終的にはデータクエリ動作を完了する。
【0074】
前述の技術的解決策に基づいて、本出願の一実施形態では、リソースオーバーヘッドは、受信されたクエリ要求の特徴情報に従って取得されてもよく、計算ノードの数は、リソースオーバーヘッドおよび計算ノードリソースに従って取得され、計算ノードの数と一致する計算ノードは、リソースプールに分配される。このようにして、リソースプール内の計算ノードを動的に調整することができ、その結果、リソースプール内の計算ノードが受信されたすべてのクエリ要求を処理することができ、したがって、計算ノードの処理効率およびリソース利用率をより効果的に向上させることができ、その結果、計算ノードが多数のクエリ要求に対する並列処理をより効率的に実施することができ、CPUリソース、メモリリソース、およびネットワーク帯域幅リソースの利用率を増加させ、したがって、全体的な計算リソースおよびユーザクエリ負荷の観点からより良い効果を達成し、ユーザの使用経験を向上させる。クエリ要求の特徴を分析および予測することによって、計算ノードのリソースをインテリジェントに分析し、自動的に調整することができ、クラウドデータベースおよびクラウドデータ分析サービスクラスタのリソース利用率および価格/性能比がより効果的に上昇する。さらに、リソースプール内の計算ノードを動的に調整することを使用することによって、各計算ノードは、ユーザに対してサーバレスクエリ分析サービスを提供することができ、その結果、ユーザは、サーバまたはサービスインスタンスを知覚する必要がなく、クラウドサービスによって提供されるサービス自体を知覚する必要があるだけであり、クラウドサービスに基づいて、ユーザは、計算ノードがデータソース内でデータクエリおよび分析を実施できるように、SQLクエリ要求を入力する必要があるだけであり、商業分析ツールおよびアプリケーション(APP)を、シームレスに統合することができる。
【0075】
本出願の一実施形態の別の適用シナリオの概略図である
図3を参照されたい。以下に
図3の
図1との違いを説明する。
図1では、すべての計算ノードは同じリソースプール内にあり、
図3では、計算ノードのリソースプールは、例えば、リソースサブプール1、リソースサブプール2、およびリソースサブプール3をとる複数のリソースサブプールに分割されてもよく、一方で、計算ノードはリソースサブプールに位置付けられている。例えば、リソースサブプール1は、2つの計算ノードを含み、リソースサブプール2は、2つの計算ノードを含み、リソースサブプール3は、4つの計算ノードを含む。この実施形態では、リソースプール以外のリソースサブプール内の計算ノードは、増加または減少される。
【0076】
同じリソースサブプールについて、すべての計算ノードの計算ノードリソースは同じであり、異なるリソースサブプールについて、計算ノードの計算ノードリソースは同じであっても異なっていてもよい。例えば、リソースサブプール1内の計算ノードリソースは4CPUコアであり、リソースサブプール2内の計算ノードリソースは8CPUコアであり、リソースサブプール3内の計算ノードリソースは16CPUコアである。
【0077】
ここで、異なるユーザの要件に従って、異なるレベルのリソースサブプールは、異なるユーザに対して分割されてもよい。例えば、ユーザのSLA(サービスレベル契約、すなわちサービスタイプ、サービス品質、顧客支払い、および他の条件を定義する、ネットワークサービスサプライヤとユーザとの間の契約)情報に基づいて、異なるレベルのリソースサブプールは、異なるユーザに対して分割されてもよく、それによって異なるユーザの要件を満たす。
【0078】
前述の適用シナリオにおいて、
図4は、本出願の一実施形態で提供されるデータクエリ方法のフローの概略図を示す。フロントノードにおけるこの方法の適用を例にとると、この方法は、下記のステップを含み得る:
【0079】
ステップ401:受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配することであって、異なる割り当てグループが、異なるリソースサブプールに対応している、分割すること。例えば、予め設定された時間枠で受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配する。
【0080】
ステップ402:割り当てグループ内のクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得すること。
【0081】
ステップ403:割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードを動的に調整すること。
【0082】
ステップ404:リソースサブプール内の計算ノードを使用することによって、割り当てグループ内のクエリ要求に対応するデータをクエリすること、すなわち異なるクエリ要求が、異なるリソースサブプール内の計算ノードと共に分配され得ること。
【0083】
一例では、前述の実装順序は、説明の便宜のために与えられた例にすぎない。実際の適用では、ステップ間の実装順序は変更されてもよく、限定されない。さらに、他の実施形態では、本明細書で示され、説明される順序に従って、対応する方法のステップを実装する必要はなく、本方法は、本明細書で説明されるステップよりも多いまたは少ないステップを含んでもよい。さらに、本明細書で説明される単一のステップは、他の実施形態で説明される多数のステップに分割されてもよく、本明細書で説明される多数のステップは、他の実施形態で説明される単一のステップに組み合わせられてもよい。
【0084】
ステップ401の実装の前に、すべての受信されたクエリ要求について、クエリ要求の各々の特徴情報も最初に取得されてもよい。特徴情報は、限定されないが、下記の選択肢、すなわち同時実行性、クエリ複雑度、走査されたクエリデータ、クエリ応答時間、およびリソース利用率のうちの1つまたは任意のこれらの組み合わせを含んでもよい。ここで、特徴情報を取得するための方法は、
図2に示されるフローを参照できるため、不要な詳細は繰り返さない。
【0085】
ステップ401において、受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配することは、限定されないが、すべての受信されたクエリ要求に対して、クエリ要求の予測されたリソース量は、クエリ要求の特徴情報に従って取得されてもよく、予測リソース量が属するリソース区間が決定され、クエリ要求が、リソース区間が対応する割り当てグループに分配されてもよく、異なる割り当てグループが、異なるリソース区間に対応し得ることを含み得る。
【0086】
ここで、ステップ201において、クエリ要求の予測リソース量を取得するプロセスを参照できるので、不要な詳細は繰り返さない。
【0087】
ここで、予測リソース量が属するリソース区間が決定され、クエリ要求は、リソース区間が対応する割り当てグループに分配されることは、限定されないが、事前にすべてのリソースサブプールについてリソース区間を構成することを含み得る。割り当て方法に限定は設けられない。例えば、リソースサブプールの計算ノードリソースがより大きいとき、リソースサブプールのリソース区間はより大きくてもよく、リソースサブプールの計算ノードリソースがより小さいとき、リソースサブプールのリソース区間がより小さくてもよい。例えば、リソースサブプール1の計算ノードリソースが4CPUコアであり、リソースサブプール2の計算ノードリソースが8CPUコアであり、リソースサブプール3の計算ノードリソースが16CPUコアである場合、リソースサブプール1のリソース区間が[0-1)CPUコアであり、リソースサブプール2のリソース区間が[1-2)CPUコアであり、リソースサブプール3のリソース区間が[2-無限)CPUコアである。さらに、割り当てグループは、各リソース区間に対してさらに構成されてもよい。例えば、割り当てグループ1は、リソースサブプール1のリソース区間に対して構成され、割り当てグループ2は、リソースサブプール2のリソース区間に対して構成され、割り当てグループ3は、リソースサブプール3のリソース区間に対して構成される。明らかに、割り当てグループ1はリソースサブプール1に対応し、割り当てグループ2はリソースサブプール2に対応し、割り当てグループ3はリソースサブプール3に対応する。
さらに、クエリ要求の予測リソース量が1CPUコアであると仮定すると、予測リソース量が属するリソース区間がリソースサブプール2のリソース区間であると決定されてもよく、クエリ要求は割り当てグループ2に分配されてもよい。明らかに、前述の処理が、予め設定された時間枠で受信されたすべてのクエリ要求に対して実施された後、これらのクエリ要求は、すべての割り当てグループに分配されてもよい。例えば、クエリ要求1~10は割り当てグループ1に分配され、クエリ要求11~50は割り当てグループ2に分配され、クエリ要求51~100は割り当てグループ3に分配される。
【0088】
ステップ402において、割り当てグループにおけるクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得することは、割り当てグループ内のすべてのクエリ要求について、クエリ要求の特徴情報に従ってクエリ要求の予測リソース量を取得し、予測リソース量に従って、割り当てグループのリソースオーバーヘッドを取得することを含み得る。
【0089】
ここで、ステップ402の実装プロセスは、ステップ201を参照することができる。違いは、ステップ201において、処理は、すべての受信されたクエリ要求に対してであり、ステップ402において、処理は、割り当てグループ内のすべてのクエリ要求に対してであることである。他のプロセスも同様であるため、不要な詳細は繰り返さない。
【0090】
ステップ403において、割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードを動的に調整することは、割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードの数を取得することと、リソースサブプール内の計算ノードの数と一致する計算ノードを分配することと、を含み得る。
【0091】
さらに、リソースサブプール内の計算ノードの数と一致する計算ノードを分配することは、リソースサブプール内の既存の計算ノードの数が計算ノードの数よりも少ない場合、計算ノードをリソースサブプール内で増加させ、増加後の計算ノードの数が計算ノードの数以上になるようにし、リソースサブプール内の既存の計算ノードの数が計算ノードの数よりも大きい場合、計算ノードをリソースサブプール内で減少させ、減少後の計算ノードの数が計算ノードの数以上になるようにできることを含み得る。
【0092】
ここで、ステップ403の実施プロセスは、ステップ202を参照することができる。違いは、ステップ202において、すべての受信されたクエリ要求のリソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードが動的に調整され、ステップ403において、割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードが動的に調整されることである。
【0093】
例えば、ステップ403において、リソースサブプール1内の計算ノードの数10を、割り当てグループ1のリソースオーバーヘッドおよびリソースサブプール1の計算ノードリソースに従って取得することができ、10個の計算ノードを、リソースサブプール1内に分配する。さらに、リソースサブプール2内の計算ノードの数8を、割り当てグループ2のリソースオーバーヘッドおよびリソースサブプール2の計算ノードリソースに従って取得することができ、8個の計算ノードをリソースサブプール1内に分配する。さらに、リソースサブプール3内の計算ノードの数13を、割り当てグループ3のリソースオーバーヘッドおよびリソースサブプール3の計算ノードリソースに従って取得することができ、13個の計算ノードをリソースサブプール3内に分配する。
【0094】
ここで、ステップ404の実装プロセスは、ステップ203を参照することができる。違いは、ステップ203において、クエリ要求が対応するクエリ要求がリソースプールの計算ノードに送信され、一方、ステップ404において、割り当てグループ1のクエリ要求が対応するクエリ要求がリソースサブプール1の計算ノードに送信され、割り当てグループ2のクエリ要求が対応するクエリ要求が、リソースサブプール2の計算ノードに送信され、割り当てグループ3のクエリ要求が対応するクエリ要求が、リソースサブプール3の計算ノードに送信されることであり、このため不要な詳細は繰り返さない。
【0095】
前述の方法と同じ適用概念に基づいて、本出願の一実施形態は、データクエリ装置をさらに提供する。
図5は、装置の構造図である。本装置は、
【0096】
受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得するための取得モジュール501と、リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整するための処理モジュール502と、計算ノードを使用することによって、クエリ要求に対応するデータをクエリするためのクエリモジュール503と、を備える。
【0097】
一例では、取得モジュール501はさらに、特徴情報がクエリ複雑度を含む場合、クエリ要求からクエリキーワードを取得することと、クエリキーワードを使用することによって第1のマッピングテーブルをクエリして、クエリキーワードに対応する複雑度値を取得し、複雑度値をクエリ要求が対応するクエリ複雑度として決定することと、またはクエリ要求の複数のサブクエリからクエリキーワードを取得することと、取得されたクエリキーワードを使用することによって第1のマッピングテーブルをクエリして、クエリキーワードに対応する複雑度値を取得すること、取得された複雑度値の合計をクエリ要求が対応するクエリ複雑度値として決定することと、を目的とし、第1のマッピングテーブルは、クエリキーワードと複雑度値との間の対応関係を記録している。
【0098】
前述の方法と同じ適用概念に基づいて、本出願の一実施形態は、受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得することと、リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整することと、計算ノードを使用することによって、クエリ要求に対応するデータをクエリすることと、のためのプロセッサを備える、データクエリデバイスを提供する。
【0099】
前述の方法と同じ適用概念に基づいて、本出願の一実施形態は、データクエリデバイス上に適用され得る機械可読メモリ媒体をさらに提供する。多数のコンピュータ命令がマシン可読メモリ媒体に記憶され、コンピュータ命令が実行されると、下記の処理が実施される:受信されたクエリ要求の特徴情報に従ってリソースオーバーヘッドを取得することと、リソースオーバーヘッドおよび計算ノードリソースに従って、リソースプール内の計算ノードを動的に調整することと、計算ノードを使用することによって、クエリ要求に対応するデータをクエリすること。
【0100】
前述の方法と同じ適用概念に基づいて、本出願の一実施形態は、データクエリ装置をさらに提供する。
図6は、装置の構造図である。本装置は、
【0101】
受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配するための分配モジュール601であって、異なる割り当てグループが異なるリソースサブプールに対応する、分配モジュール601と、割り当てグループ内のクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得するための取得モジュール602と、割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールのコンピュートノードリソースに従って、リソースサブプール内のコンピュートノードを動的に調整するための処理モジュール603と、リソースサブプール内の計算ノードを使用することによって、割り当てグループ内のクエリ要求に対応するデータをクエリするためのクエリモジュール604と、を備える。
【0102】
一例では、具体的に、分配モジュール603を使用して、受信されたクエリ要求について、クエリ要求の特徴情報に従ってクエリ要求の予測リソース量を取得し、予測リソース量が属するリソース区間を決定し、リソース区間が対応する割り当てグループにクエリ要求を分配し、異なる割り当てグループは、異なるリソース区間に対応する。
【0103】
前述の方法と同じ適用概念に基づいて、本出願の一実施形態は、受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配し、異なる割り当てグループが、異なるリソースサブプールに対応している、分配することと、割り当てグループ内のクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得することと、割り当てグループのリソースオーバーヘッドおよび割り当てグループが対応するリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードを動的に調整することと、リソースサブプール内の計算ノードを使用することによって、割り当てグループ内のクエリ要求に対応するデータをクエリすることと、のためのプロセッサ、を備える、データクエリデバイスを提供する。
【0104】
前述の方法と同じ適用概念に基づいて、本出願の一実施形態は、データクエリデバイス上に適用され得る機械可読メモリ媒体をさらに提供する。多数のコンピュータ命令がマシン可読メモリ媒体に記憶され、コンピュータ命令が実行されると、下記の処理が実施される:受信されたクエリ要求の特徴情報に従って、受信されたクエリ要求を少なくとも1つの割り当てグループに分配することであって、異なる割り当てグループが異なるリソースサブプールに対応する、分配することと、割り当てグループ内のクエリ要求の特徴情報に従って、割り当てグループのリソースオーバーヘッドを取得することと、割り当てグループが対応するリソースサブプールのリソースオーバーヘッドおよびリソースサブプールの計算ノードリソースに従って、リソースサブプール内の計算ノードを動的に調整することと、リソースサブプール内の計算ノードを使用することによって、割り当てグループ内のクエリ要求に対応するデータをクエリすること。
【0105】
前述の実施形態において具体的に説明されるシステム、装置、モジュール、またはユニットは、コンピュータチップまたは存在物によって、または特定の機能を処理する製品によって達成されてもよい。典型的な達成デバイスは、コンピュータである。コンピュータの具体的な形態は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤー、ナビゲーションエイド、電子メールトランシーバ、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意のいくつかの組み合わせであってもよい。
【0106】
説明の便宜上、前述の装置が説明されるとき、装置は機能によっていくつかのユニットに分割され、ユニットがそれぞれ説明される。もちろん、本出願が実装されるとき、ユニットの機能は、1つまたは複数のソフトウェアおよび/またはハードウェアにユニットを入れることによって達成されてもよい。
【0107】
当業者は、本出願の実施形態が、方法、システム、またはコンピュータプログラム製品として提供されてもよく、したがって、本出願が、完全にソフトウェア、または完全にハードウェア、またはソフトウェアとハードウェアとの組み合わせの形態で実施形態を採用してもよいことを理解するべきである。さらに、本出願の実施形態は、コンピュータ使用可能プログラムコードを含む、1つまたは複数のコンピュータ使用可能記憶媒体(限定されないが、ディスク記憶装置、CD-ROM、および光記憶装置を含む)上に実装されるコンピュータプログラム製品の形態を採用してもよい。
【0108】
本出願は、本出願の実施形態による方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照することによって説明される。フローチャートおよび/またはブロック図におけるすべてのフローおよび/またはブロック、ならびにフローチャートおよび/またはブロック図におけるフローおよび/またはブロックの組み合わせは、コンピュータプログラム命令を通じて達成されてもよいことを理解されたい。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または任意の他のプログラム可能なデータ処理機器のプロセッサに提供されてもよく、機械を生成し、その結果、任意の他のプログラム可能なデータ処理機器のコンピュータまたはプロセッサによって実行される命令を通じて、フローチャートの1つもしくは複数のフローおよび/またはブロック図の1つもしくは複数のブロックにおいて指定された機能を達成するための装置が生成される。
【0109】
さらに、これらのコンピュータプログラム命令は、コンピュータ可読メモリに記憶することもでき、コンピュータ可読メモリに記憶された命令が命令装置を含む製品を生成するように、コンピュータまたは他のプログラム可能なデータ処理機器を特定の方式で動作させるように誘導されてもよい。命令装置は、フローチャートの1つまたは複数のフローおよび/またはブロック図の1つまたは複数のブロックにおいて指定された機能を達成する。
【0110】
これらのコンピュータプログラム命令はまた、一連の動作ステップがコンピュータまたは他のプログラム可能なデータ処理機器上で実行され、コンピュータによって達成される処理を生成するように、コンピュータまたは他のプログラム可能なデータ処理機器にロードされてもよく、したがって、コンピュータまたは他のプログラム可能なデータ処理機器上で実行される命令は、フローチャートにおけるフローの1つまたは複数のフローおよび/またはブロック図におけるブロックの1つまたは複数のブロックにおいて指定された機能を達成するためのステップを提供する。
【0111】
前述の説明は、本出願の好ましい実施形態であり、本出願を限定することを意図するものではない。本出願の趣旨および原理から逸脱することなく行われたすべての修正、同一の置換および改良は、本願の範囲内に含まれるものとする。