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

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

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許-ルール違反検出 図1A
  • 特許-ルール違反検出 図1B
  • 特許-ルール違反検出 図2
  • 特許-ルール違反検出 図3
  • 特許-ルール違反検出 図4
  • 特許-ルール違反検出 図5
  • 特許-ルール違反検出 図6
  • 特許-ルール違反検出 図7
  • 特許-ルール違反検出 図8
  • 特許-ルール違反検出 図9
  • 特許-ルール違反検出 図10
  • 特許-ルール違反検出 図11
  • 特許-ルール違反検出 図12
  • 特許-ルール違反検出 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-27
(45)【発行日】2024-12-05
(54)【発明の名称】ルール違反検出
(51)【国際特許分類】
   G06F 16/27 20190101AFI20241128BHJP
   G06F 9/50 20060101ALI20241128BHJP
【FI】
G06F16/27
G06F9/50 120Z
【請求項の数】 21
【外国語出願】
(21)【出願番号】P 2023076175
(22)【出願日】2023-05-02
(62)【分割の表示】P 2022530295の分割
【原出願日】2020-11-23
(65)【公開番号】P2023113616
(43)【公開日】2023-08-16
【審査請求日】2023-06-06
(31)【優先権主張番号】16/693,556
(32)【優先日】2019-11-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】パーサ,アーラシュ
(72)【発明者】
【氏名】メルコン,ジョシュア
(72)【発明者】
【氏名】ゲイ,デイビッド
(72)【発明者】
【氏名】ヒュービッシュ,ライアン
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2011-028485(JP,A)
【文献】特表2003-527800(JP,A)
【文献】米国特許第11068461(US,B1)
【文献】米国特許第08392558(US,B1)
【文献】米国特許出願公開第2018/0145883(US,A1)
【文献】特開2016-062609(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10 -16/29
G06F 9/455- 9/54
G06F 11/34
(57)【特許請求の範囲】
【請求項1】
ータ処理ハードウェアに動作を実行させる方法であって、前記動作は、
複数のデータ要素検索要求を受信することを含み、前記複数のデータ要素検索要求の各データ要素検索要求は、情報検索システムから少なくとも1つのデータ要素を要求し、前記情報検索システムは、複数のデータ要素を備え、前記動作は、さらに、
前記情報検索システムのために、複数のセルから構成される要求グリッドを生成することを含み、前記複数のセルの各セルは、キーバケットのタイムバケットを表し、各キーバケットは、前記情報検索システムのキーの範囲を含み、前記動作は、さらに、
前記要求グリッドのキーバケットごとに、
受信した前記複数のデータ要素検索要求に基づいて、前記キーバケットの前記キーの範囲のRPS(1秒当たりの要求数)を判断することと、
一定期間にわたる前記キーバケットの前記キーの範囲に対応するデータ要素検索要求の数の移動平均を含むRPS負荷を判断することと、
前記RPS負荷に基づいてデルタRPS制限を判断することとを含み、
1つのキーバケットについて、
前記1つのキーバケットの前記RPSが前記1つのキーバケットの前記デルタRPS制限を超えたと判断することと、
前記1つのキーバケットの前記RPSが前記1つのキーバケットの前記デルタRPS制限を超えたと判断したことに基づいて、前記情報検索システムの性能が低下した可能性を示すデルタ違反を判断することとを含む、方法。
【請求項2】
前記デルタ違反は、前記RPSが前記デルタRPS制限を超えた時間に対応する開始時点を含む、請求項1に記載の方法。
【請求項3】
前記動作は、前記デルタ違反について、
第2期間にわたる前記1つのキーバケットの最大適合負荷を判断することと、
前記デルタ違反の前記開始時点に基づいて、前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたと判断することと、
前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたと判断したことに応答して、前記デルタ違反が完全履歴違反に相当すると判断することとをさらに含み、前記完全履歴違反は、前記情報検索システムの性能の低下を示す、請求項2に記載の方法。
【請求項4】
前記デルタ違反の前記開始時点に基づいて前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたかどうかを判断することは、
過去のゼロ履歴RPS制限の最小値の関数と前記RPS負荷とを含むゼロ履歴RPS制限を判断することと、
前記デルタ違反の開始時点から始まり前記RPSが前記ゼロ履歴RPS制限を超えなくなったときに終了する第3期間を判断すること、
前記RPSが前記ゼロ履歴RPS制限を超えた期間に基づいてゼロ履歴違反を判断することと、
前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたと判断したことに応答して、前記ゼロ履歴違反が完全履歴違反に相当すると判断することを含む、請求項3に記載の方法。
【請求項5】
前記複数のデータ要素検索要求を受信することは、少なくとも基準ウインドウの長さの間、前記データ要素検索要求を受信することを含む、請求項3に記載の方法。
【請求項6】
前記動作は、
前記第2期間よりも前の時間ウインドウを選択することと、
前記時間ウインドウの間の前記1つのキーバケットの前記最大適合負荷を判断することとをさらに含む、請求項3に記載の方法。
【請求項7】
各キーバケットは、データ要素検索要求の選択平均量を表す大きさに作られている、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記情報検索システムは、動的に範囲がシャード化される情報検索システムを含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記要求グリッドのキーバケットごとにデルタRPS制限を判断することは、前記RPS負荷と、スプリット動作後のモデル容量の増加を示すデルタ重みとに基づいて前記デルタRPS制限を判断することを含む、請求項1~8のいずれか1項に記載の方法。
【請求項10】
前記スプリット動作は、前記キーバケットが利用可能なメモリを増やすことを含む、請求項9に記載の方法。
【請求項11】
システムであって、
データ処理ハードウェアと、
前記データ処理ハードウェアと通信するメモリハードウェアとを備え、前記メモリハードウェアは、命令を格納し、前記命令は、前記データ処理ハードウェア上で実行されると、前記データ処理ハードウェアに動作を実行させ、前記動作は、
複数のデータ要素検索要求を受信することを含み、前記複数のデータ要素検索要求の各データ要素検索要求は、情報検索システムから少なくとも1つのデータ要素を要求し、前記情報検索システムは、複数のデータ要素を備え、前記動作は、さらに、
前記情報検索システムのために、複数のセルから構成される要求グリッドを生成することを含み、前記複数のセルの各セルは、キーバケットのタイムバケットを表し、各キーバケットは、前記情報検索システムのキーの範囲を含み、前記動作は、さらに、
前記要求グリッドのキーバケットごとに、
受信した前記複数のデータ要素検索要求に基づいて、前記キーバケットの前記キーの範囲のRPS(1秒当たりの要求数)を判断することと、
一定期間にわたる前記キーバケットの前記キーの範囲に対応するデータ要素検索要求の数の移動平均を含むRPS負荷を判断することと、
前記RPS負荷に基づいてデルタRPS制限を判断することとを含み、
1つのキーバケットについて、
前記1つのキーバケットの前記RPSが前記1つのキーバケットの前記デルタRPS制限を超えたと判断することと、
前記1つのキーバケットの前記RPSが前記1つのキーバケットの前記デルタRPS制限を超えたと判断したことに基づいて、前記情報検索システムの性能が低下した可能性を示すデルタ違反を判断することとを含む、システム。
【請求項12】
前記デルタ違反は、前記RPSが前記デルタRPS制限を超えた時間に対応する開始時点を含む、請求項11に記載のシステム。
【請求項13】
前記動作は、前記デルタ違反について、
第2期間にわたる前記1つのキーバケットの最大適合負荷を判断することと、
前記デルタ違反の前記開始時点に基づいて、前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたと判断することと、
前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたと判断したことに応答して、前記デルタ違反が完全履歴違反に相当すると判断することとをさらに含み、前記完全履歴違反は、前記情報検索システムの性能の低下を示す、請求項12に記載のシステム。
【請求項14】
前記デルタ違反の前記開始時点に基づいて前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたかどうかを判断することは、
過去のゼロ履歴RPS制限の最小値の関数と前記RPS負荷とを含むゼロ履歴RPS制限を判断することと、
前記デルタ違反の開始時点から始まり前記RPSが前記ゼロ履歴RPS制限を超えなくなったときに終了する第3期間を判断すること、
前記RPSが前記ゼロ履歴RPS制限を超えた期間に基づいてゼロ履歴違反を判断することと、
前記RPSが前記1つのキーバケットの前記最大適合負荷を超えたと判断したことに応答して、前記ゼロ履歴違反が完全履歴違反に相当すると判断することとを含む、請求項13に記載のシステム。
【請求項15】
前記複数のデータ要素検索要求を受信することは、少なくとも基準ウインドウの長さの間、前記データ要素検索要求を受信することを含む、請求項13に記載のシステム。
【請求項16】
前記動作は、
前記第2期間よりも前の時間ウインドウを選択することと、
前記時間ウインドウの間の前記1つのキーバケットの前記最大適合負荷を判断することとをさらに含む、請求項13に記載のシステム。
【請求項17】
各キーバケットは、データ要素検索要求の選択平均量を表す大きさに作られている、請求項11~16のいずれか1項に記載のシステム。
【請求項18】
前記情報検索システムは、動的に範囲がシャード化される情報検索システムを含む、請求項11~17のいずれか1項に記載のシステム。
【請求項19】
前記要求グリッドのキーバケットごとにデルタRPS制限を判断することは、前記RPS負荷と、スプリット動作後のモデル容量の増加を示すデルタ重みとに基づいて前記デルタRPS制限を判断することを含む、請求項11~18のいずれか1項に記載のシステム。
【請求項20】
前記スプリット動作は、前記キーバケットが利用可能なメモリを増やすことを含む、請求項19に記載のシステム。
【請求項21】
データ処理ハードウエアに請求項1~10のいずれか1項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、たとえば500/50/5トラフィックランプアップルールのルール違反検出に関する。
【背景技術】
【0002】
背景
クラウドコンピューティング・ストレージが急速に普及しつつある。より多くのユーザーやビジネスが自身のデータニーズを分散記憶システムに切り替えると、クラウドサービスの性能の低下がますます重要になってくる。大規模なデータストア(たとえば、データベース)を頻繁に複数のサーバに分散して水平分割(すなわち、シャード)し、性能を向上させる。データベースのシャーディングは、リソースをほぼリアルタイムで増やしたり減らしたりすることによってサーバが動的負荷に対処できるようにしている場合が多い。しかしながら、リソースを増やすためのゼロ以外の反応時間があり、十分に高速なトラフィックのランプアップが、基盤となるストレージに過剰な負荷をかけて性能を低下させてしまう場合がある。
【発明の概要】
【0003】
概要
本開示の一態様は、トラフィックランプアップルール違反を検出する方法を提供する。この方法は、データ処理ハードウェアにおいて、情報検索システムから少なくとも1つのデータ要素を各々が要求するデータ要素検索要求を受信するステップを含む。情報検索システムは、複数のデータ要素を備える。また、方法は、データ処理ハードウェアが、受信したデータ要素検索要求の数に基づいて、情報検索システムのキー範囲のRPS(1秒当たりの要求数)を判断するステップを含む。また、方法は、データ処理ハードウェアが、受信したデータ要素検索要求の数に基づいて、第1期間にわたる情報検索システムのキー範囲のRPSの移動平均を判断するステップと、データ処理ハードウェアが、RPSがRPSの移動平均に基づくデルタRPS制限を超えた開始時点を各々が含むデルタ違反の数を判断するステップとを含む。各デルタ違反は、デルタRPS制限を超えた開始時点を含む。デルタRPS制限は、RPSの移動平均に基づく。デルタ違反ごとに、方法は、データ処理ハードウェアが、第2期間にわたるキー範囲の最大適合負荷を判断するステップと、データ処理ハードウェアが、デルタ違反の開始時点に基づいてRPSがキー範囲の最大適合負荷を超えたかどうかを判断するステップとを含む。また、方法は、RPSがキー範囲の最大適合負荷を超えた場合、データ処理ハードウェアが、デルタ違反が、完全履歴違反に相当すると判断するステップを含む。完全履歴違反は、情報検索システムの性能の低下を示す。
【0004】
本開示の実施態様は、下記のオプションの特徴のうち1つ以上を含んでもよい。いくつかの実施態様では、デルタ違反の開始時点に基づいてRPSがキー範囲の最大適合負荷を超えたかどうかを判断するステップは、データ処理ハードウェアが、ゼロ履歴RPS制限を判断するステップを含む。ゼロ履歴RPS制限は、過去のゼロ履歴RPS制限の最小値の関数と、RPSの移動平均とを含む。また、方法は、データ処理ハードウェアが、デルタ違反の開始時点から始まりRPSがゼロ履歴RPS制限を超えなくなったときに終了する期間を判断するステップを含む。方法は、オプションで、データ処理ハードウェアが、RPSがゼロ履歴RPS制限を超えた期間に基づいてゼロ履歴違反を判断するステップを含む。いくつかの例では、RPSがキー範囲の最大適合負荷を超えた場合、方法は、データ処理ハードウェアが、ゼロ履歴違反が完全履歴違反に相当すると判断するステップを含
む。
【0005】
いくつかの実施態様では、方法は、データ処理ハードウェアが、複数のセルから構成される要求グリッドを生成するステップをさらに含む。各セルは、キーバケットの固定長のタイムバケットを表し、各キーバケットは、要求の選択平均量を表す大きさのキーの範囲を含む。RPSの移動平均を判断するステップは、各キーバケットの移動平均を判断するステップを含む。オプションで、各キーバケットは、要求の平均量が同じなる大きさに作られている。いくつかの例では、デルタ違反の数を判断するステップは、キーバケットのRPSがデルタRPS制限を超えた時点を表す、狭バンドのデルタ違反候補を判断するステップを含む。また、方法は、狭バンドのデルタ違反候補から、隣接する狭バンドのデルタ違反から構成される広バンドのデルタ違反候補を判断するステップと、広バンドのデルタ違反候補ごとに、広バンドのデルタ違反候補がデルタ違反であるかどうかを、データ要素検索要求の量および強度に基づいて判断するステップとを含む。
【0006】
いくつかの実施態様では、最大適合負荷は、情報検索システムが性能を低下することなく保持できる最大負荷を含む。いくつかの例では、情報検索システムは、動的に範囲がシャード化される情報検索システムを備える。最大適合負荷を判断するステップは、しきい値時間ウインドウの間にこれまで受信したデータ要素検索要求の数に応じて最大適合負荷を判断するステップを含む。オプションで、隣接するデルタ違反のペア間では、RPSは、デルタRPS制限を超えない。
【0007】
本開示の別の態様は、トラフィックランプアップルール違反を検出するためのシステムを提供する。このシステムは、データ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアとを備える。メモリハードウェアは、命令を格納し、命令は、データ処理ハードウェア上で実行されると、データ処理ハードウェアに動作を実行させる。これらの動作は、情報検索システムから少なくとも1つのデータ要素を各々が要求するデータ要素検索要求を受信することを含む。情報検索システムは、複数のデータ要素を備える。また、動作は、受信したデータ要素検索要求の数に基づいて、情報検索システムのキー範囲のRPS(1秒当たりの要求数)を判断することを含む。また、動作は、受信したデータ要素検索要求の数に基づいて、第1期間にわたる情報検索システムのキー範囲のRPSの移動平均を判断することと、RPSがデルタRPS制限を超えた開始時点を各々が含むデルタ違反の数を判断することとを含む。デルタRPS制限は、RPSの移動平均に基づく。デルタ違反ごとに、動作は、第2期間にわたるキー範囲の最大適合負荷を判断することと、デルタ違反の開始時点に基づいてRPSがキー範囲の最大適合負荷を超えたかどうかを判断することとを含む。また、動作は、RPSがキー範囲の最大適合負荷を超えた場合、デルタ違反が、完全履歴違反に相当すると判断することを含む。完全履歴違反は、情報検索システムの性能の低下を示す。
【0008】
この態様は、下記のオプションの特徴のうち1つ以上を含んでもよい。いくつかの実施態様では、デルタ違反の開始時点に基づいてRPSがキー範囲の最大適合負荷を超えたかどうかを判断することは、ゼロ履歴RPS制限を判断することを含む。ゼロ履歴RPS制限は、過去のゼロ履歴RPS制限の最小値の関数と、RPSの移動平均とを含む。また、動作は、デルタ違反の開始時点から始まりRPSがゼロ履歴RPS制限を超えなくなったときに終了する期間を判断することを含んでもよい。動作は、オプションで、RPSがゼロ履歴RPS制限を超えた期間に基づいてゼロ履歴違反を判断することを含む。いくつかの例では、RPSがキー範囲の最大適合負荷を超えた場合、動作は、ゼロ履歴違反が完全履歴違反に相当すると判断することとを含む。
【0009】
いくつかの実施態様では、動作は、さらに、複数のセルから構成される要求グリッドを生成することを含む。各セルは、キーバケットの固定長のタイムバケットを表し、各キー
バケットは、要求の選択平均量を表す大きさのキーの範囲を含む。RPSの移動平均を判断することは、各キーバケットの移動平均を判断することを含んでもよい。オプションで、各キーバケットは、要求の平均量が同じなる大きさに作られている。いくつかの例では、デルタ違反の数を判断することは、キーバケットのRPSがデルタRPS制限を超えた時点を表す、狭バンドのデルタ違反候補を判断することを含む。また、動作は、狭バンドのデルタ違反候補から、隣接する狭バンドのデルタ違反から構成される広バンドのデルタ違反候補を判断することと、広バンドのデルタ違反候補ごとに、広バンドのデルタ違反候補がデルタ違反であるかどうかを、データ要素検索要求の量および強度に基づいて判断することとを含んでもよい。
【0010】
いくつかの実施態様では、最大適合負荷は、情報検索システムが性能を低下することなく保持できる最大負荷を含む。いくつかの例では、情報検索システムは、動的に範囲がシャード化される情報検索システムを備える。最大適合負荷を判断することは、しきい値時間ウインドウの間にこれまで受信したデータ要素検索要求の数に応じて最大適合負荷を判断することを含んでもよい。オプションで、隣接するデルタ違反のペア間では、RPSは、デルタRPS制限を超えない。
【0011】
1つ以上の本開示の実施態様の詳細を、添付の図面および以下の説明に記載する。その他の態様、特徴、および利点は、本明細書および図面から、ならびに請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0012】
図1A】情報検索システムがルール違反を検出できるようにする例示的なシステムの概略図である。
図1B】情報検索システムがルール違反を検出できるようにする例示的なシステムの概略図である。
図2】データオブジェクトの水平分割の概略図である。
図3】ルール違反検出部の例示的な構成要素の概略図である。
図4】情報検索システムに対する要求の基準ウインドウの少なくとも一部にまたがるキースペースを表すグリッド要素から構成されるグリッドの概略図である。
図5】RPS(1秒当たりの要求数)、RPS負荷、およびデルタRPS制限のプロットの概略図である。
図6】RPS、RPS負荷、およびデルタRPS制限の別のプロットの概略図である。
図7】RPS、RPS負荷、およびデルタRPS制限の別のプロットの概略図である。
図8】RPS、RPS負荷、およびゼロ履歴RPS制限のプロットの概略図である。
図9】RPS、RPS負荷、および完全履歴RPS制限のプロットの概略図である。
図10】基準ウインドウと、RPS負荷と、完全履歴RPS制限との関係を示す概略図である。
図11】完全履歴RPS制限をブートストラップするためのブートストラップウインドウの概略図である。
図12】トラフィックランプアップルールの違反を検出する方法の動作のアレンジ例のフローチャートである。
図13】本明細書において説明するシステムおよび方法を実現するために用いられ得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0013】
様々な図面に含まれている同じ参照記号は、同じ要素を示す。
詳細な説明
本明細書における実施態様は、1つ以上のトラフィックルールを超える、または性能が低下する可能性を示す分散記憶システム(たとえば、クラウドストレージ)におけるトラフィックのランプアップの検出を対象とする。ルール違反検出部は、トラフィックランプアップルールの違反を検出し、分散記憶システム上で動作している情報検索システムに対するデータ要素検索要求を(すなわち、データを格納または検索するために)受信する。ルール違反検出は、情報検索システム宛てのデータ要素検索要求のすべての特徴を記述するのに十分な一部のデータ要素検索要求を受信(すなわち、要求をサンプリング)し、情報検索システムのキー範囲のRPS(1秒当たりの要求数)を判断し得る。ルール違反検出部は、キー範囲のRPSの移動平均を判断する。RPSおよびRPSの移動平均を用いて、違反検出部は、一定期間にわたるデルタ違反の数を判断する。デルタ違反は、移動平均RPSがRPS制限を超えた時点を含む。デルタ違反ごとに、違反検出部は、キー範囲の最大適合負荷を判断し、各デルタ違反の継続期間中にRPSの移動平均が最大適合負荷を超えたかどうかを判断する。RPSの移動平均がキー範囲の最大適合負荷を超えた場合、違反検出部は、デルタ違反がトラフィックランプアップルール違反に相当すると判断する。
【0014】
複数のマシン間で負荷を分散することによってスケーリングを容易に可能にするために、分散記憶システムは、データベースを頻繁にパーティション分割する。データベースは、垂直分割されてもよく、水平分割されてもよい。また、データベースの水平分割は、データベースのシャーディングとも称され得る。個々のパーティションは、シャードと称され、各シャードは、別個のサーバまたは他の独立したコンピューティングデバイス上に格納され得る。データベースのシャーディングには、データベースの行を複数のそれぞれ異なるテーブルに分けることを含む。これは、列をそれぞれ異なるテーブルに分けること(たとえば、垂直分割)とは対照的である。各パーティションの列は同じであるが、行は異なり得る。いくつもの異なるシャーディング技術が実装されてもよい。たとえば、キーベースのシャーディング、範囲ベースのシャーディング、およびディレクトリベースのシャーディングは、いずれもシャーディングの典型的な実装である。
【0015】
範囲ベースのシャーディングは、データベースのデータに対応付けられたシャードキーの値の範囲に基づいて当該データをシャーディングすることを含む。すなわち、データベースの各行がシャードキーに対応付けられており、対応付けられたシャードキーの値によって、データの行がどのシャードに格納されているかが決まる。各シャードには、シャードキー値の近接範囲が割り当てられてもよい。よって、シャードキー値が「近い」データは、同じシャードに格納される可能性が高い。これにより、要求や動作やクエリの効率が高まり得る。
【0016】
いくつかの分散記憶システム(たとえば、範囲がシャード化される記憶システム)は、受け取る負荷の変動に従って、キー範囲の負荷分散を調整し得る。これは、キー範囲容量の自動スケーリングと称される場合もある。前述したように、完全なキースペースは、負荷分散の単位である複数のシャード(すなわち、キー範囲スプリット)に分割される。増加した負荷を1つのシャード上でしきい値期間維持していると、「スプリット」動作につながる。「スプリット」動作では、当該シャードが2つ以上のシャードに分割される(たとえば、1つ以上の追加サーバが追加される、または既存のサーバ全体にシャードが分散される)。これは、キー範囲の容量を効果的に2倍(またはそれ以上)にするであろう。いくつかの実施態様では、負荷のレベルが一定時間低かった隣接するキー範囲スプリットは、マージされて1つにされて(すなわち、「マージ」動作)未使用のリソースを復帰させる。いくつかの例では、スプリット動作の期間は、マージ操作の期間よりもはるかに短い。たとえば、スプリット動作の期間は約5分であるのに対して、マージ操作の期間は約
1日になる場合もある。よって、任意のキー範囲の実効容量を急速に2倍にしてもよく、生成された容量を長期間保持して、データのさらなる急増に対処してもよい。
【0017】
スプリット動作を介して容量を増加するまでに遅延があるので(たとえば、5分)、1つのシャード(すなわち、キー範囲スプリット)へのユーザートラフィックの十分に大規模かつ高速のランプアップによって、性能の低下がもたらされる可能性がある。このようなキー範囲容量の自動スケーリングシステムのスプリットおよびマージ動作は、トラフィックランプアップルールによってモデル化され得る。このモデルに対してユーザートラフィックを比較して、トラフィックランプアップルールの違反を判断し得る。トラフィックランプアップルールの違反は、性能の低下を示し得る。いくつかの例では、このような違反は、違反の責任を負うクライアントに対するクラウドサービスプロバイダの保証(すなわち、性能保証)に影響を与え得る。トラフィックランプアップルールの例は、500/50/5ルールなどであり得る。500/50/5ルールの場合、クライアントは、500RPSで任意のキー範囲の操作を開始し、そこから5分ごとにトラフィックを50%増加させ得る。このルールに従うことで、システムは、確実に、性能の低下が起こらない程度に十分高速にリソースを追加できるようになるであろう。
【0018】
いくつかの例では、トラフィックランプアップルールは、情報検索システムの性能の低下を回避するためにユーザートラフィックがそれ以下を維持しなければならない(たとえば、RPSの)トラフィック制限をモデル化する。キー範囲スプリットの分割およびマージの性質を理由に、トラフィック制限は、元来、以前のトラフィックデータおよび以前のトラフィック制限の履歴に依存している。膨大な量のデータと、トラフィック制限の判断を履歴に依存していることを理由に、トラフィックランプアップルールの違反を判断することは、通常、非常に計算コストがかかる試みである。
【0019】
図1Aおよび図1Bを参照すると、いくつかの実施態様では、システム100は、ネットワーク130を介してリモートシステム140と通信を行い得る1つ以上のクライアント/顧客/所有者10、10a~10nに対応付けられた1つ以上のクライアントデバイス120、120a~120nを備える。リモートシステム140は、スケーラブルな/柔軟なリソース110を有する分散システム(たとえば、クラウド環境)であってもよい。リソース110は、コンピューティングリソース112および/またはストレージリソース114を含む。ストレージリソース114の上に情報検索システム150(たとえば、分散記憶システムまたはデータストア)が重ねられており、クライアントデバイス120のうち1つ以上によるストレージリソース114のスケーラブルな使用を可能にしている。情報検索システム150は、クライアントデバイス120からのデータオブジェクト200、200a~200nを格納するように構成される。いくつかの例では、データオブジェクトは、データベース(すなわち、データ要素202、202a~202nの行および列)を含む。
【0020】
リモートシステム140は、クライアントデバイス120からデータオブジェクト200を受信し、これらのデータオブジェクト200を構成データ要素またはデータチャンク202にチャンキングまたは分けて、これらのデータ要素を1つ以上のシャード152、152a~152n上に格納することによって、データオブジェクト200をストレージ抽象化150上に格納する。これに代えて、リモートシステム140は、空のデータオブジェクト200を生成し、クライアントデバイス120からデータ要素202を受信してデータオブジェクト200内に格納する。本明細書において使用するとき、各シャード152は、データオブジェクト200の水平分割を格納するそれぞれ別個のコンピューティングリソース112およびストレージリソース114(たとえば、別個のサーバ)を表す。リモートシステム140は、任意の数のシャード152を実装してもよく、利用に基づいてシャード152を動的に追加したり、削除したりしてもよい。
【0021】
リモートシステム140は、クライアント10からデータ要素検索要求105を受信して、情報検索システム150から1つ以上のデータ要素202を検索する。情報検索システム150は、各データ要素検索要求105で提供されるシャードキー値220に基づいて、データ要素(複数可)202の場所(すなわち、データ要素202が格納されているシャード152がどれであるか)を特定する。正しいシャード152が特定されると、情報検索システム150は、適切なデータ要素202をフェッチして、要求元クライアント10に返す。また、データ要素検索要求105は、情報検索システム150に対する、他のデータ要素202を追加する要求、または既存のデータ要素202を更新する要求を含んでもよい。ここでも、情報検索システム150は、検索要求105に含まれる関連するシャードキー値220を用いて、アップロードされたデータ要素202を格納するための適切なシャード152を判断してもよい。
【0022】
図1Bを参照すると、いくつかの実施態様では、分散システム140は、データをキャッシュするために用いられ得るストレージリソース114(たとえば、メモリハードウェア、メモリハードウェア、フラッシュメモリ、DRAM(ダイナミックRAM)、PCM(相変化メモリ)、および/またはディスク)と通信するコンピューティングリソース112(たとえば、1つ以上のプロセッサまたは1つ以上のCPU(中央処理装置))を各々が有する、ゆるくつながれたメモリホスト110、110a~110n(たとえば、コンピュータまたはサーバ)を備えてもよい。ストレージリソース114の上に重ねられたストレージ抽象化150により、1つ以上のクライアントデバイス120、120a~120nによるストレージリソース114のスケーラブルな使用が可能になる。クライアントデバイス120は、ネットワーク130を通して(たとえば、RPC(リモートプロシージャコール)を介して)メモリホスト110と通信を行ってもよい。
【0023】
いくつかの実施態様では、分散システム140は、「単側」分散システムである。「単側」とは、メモリホスト110上でのほとんどの要求処理が、メモリホスト110のCPU112上で実行されるソフトウェアではなく、ハードウェアで行われ得る方法を指す。単側分散キャッシングシステムに関連するその他の概念および特徴は、米国特許第9,164,702号(そのすべての記載内容を、引用により本明細書に援用する。)に見つけることができる。
【0024】
分散システム140は、クライアントデバイス120によってアップロードされたデータオブジェクト200の構成データ要素またはデータチャンク202を、リモートメモリホスト110(たとえば、ストレージ抽象化150)のストレージリソース114(たとえば、メモリハードウェア)上に格納し、RPCを介して、またはRDMA(Remote Direct Memory Access)対応のネットワークインターフェースコントローラ(NIC)116を介してリモートメモリホスト110からデータチャンク202を取得してもよい。ネットワークインターフェースコントローラ116(ネットワークインターフェースカード、ネットワークアダプタ、またはLANアダプタとしても知られている)は、コンピューティングデバイス/リソース112をネットワーク130に接続するコンピュータハードウェアコンポーネントであってもよい。メモリホスト110a~110nおよびクライアントデバイス120は、各々、ネットワーク通信のためのネットワークインターフェースコントローラ116を有してもよい。ハードウェアリソース110の物理プロセッサ112上で実行されている情報検索システム150は、ストレージリソース(たとえば、メモリ)114の一連のリモートディレクトメモリアクセスが可能な領域/位置118、118a~118nを、ネットワークインターフェースコントローラ116に登録する。各記憶場所118は、対応するデータ要素202を格納するように構成される。
【0025】
ここで、図2を参照すると、例示的なデータオブジェクト200(すなわち、テーブル)は、名前の列210aと、名字の列210bと、役職の列210cと、シャードキー値220の列とを含む列210によって境界が定められた複数のデータ要素202を含む。ここでは、わかりやすくするためにテーブル200が3つの行を有するが、実際には、テーブルは、最大で何兆もの行を有し得る。前述したように、リモートシステム140は、水平分割を用いてデータオブジェクト200を分割し、パーティションを別個のシャード152上に格納してもよい。この例では、データオブジェクト200は、シャードキー値220に基づいて分割されてシャード1 150a、シャード2 150b、およびシャード3 150cに格納される。この例では、シャード1 150aは、0と10との間のシャードキー値220に対応付けられたデータ要素202を格納する。すなわち、0と10との間のシャードキー値220に対応付けられたデータ要素は、すべてシャード1 150aに格納され得る。シャード2 150bは、11と30との間のシャードキー値220に対応付けられたデータ要素202を格納する。同様に、シャード3 150cは、31と40との間のシャードキー値220に対応付けられたデータ要素202を格納する。これらの値は、例に過ぎず、シャードキー値220には、(データオブジェクト200の残りと関係があるないに関わらず)いかなる値が割り当てられてもよく、各シャード152は、いかなる範囲のシャードキー値220に対応してもよいことを理解されたい。たとえば、シャードキー値220は、データオブジェクト200内のデータ要素202の既存の列(たとえば、従業員番号、品目の費用、位置フィールドなど)に割り当てられてもよい。シャードキー値220とデータ要素との関係(たとえば、シャードキー濃度、シャードキー頻度など)は、情報検索システム150の性能に影響を与え得る。
【0026】
図2をさらに参照すると、データオブジェクト200は、複数のデータ要素202を各々が有する3つの部分データオブジェクト201、201a~201cに分割される。ここで、シャードキー値220が「5」である行は、シャード1 150aに格納され、シャードキー値220が「13」である行は、シャード2 150bに格納された。同様に、シャードキー値220が「28」である行は、シャード3 150cに格納された。このようにすれば、データオブジェクト200が3つのシャード150a、150b、150c(各々は、別個のコンピューティングリソースであってもよい)間で分割されることにより、情報検索システム150のデータオブジェクト200へのアクセス能力が向上する。
【0027】
図1Aに戻ると、リモートシステム140は、ルール違反検出部300を実行する。より詳細は後述するが、ルール違反検出部300は、クライアントデータ要素検索要求105を監視する。要求数105が異常に多い可能性があるので、いくつかの例では、ルール違反検出部300は、要求105のうち、要求105の全体を表すのに十分な一部をランダムにサンプリングする。サンプリングした要求105を用いて、ルール違反検出部300は、要求105がトラフィックランプアップルール302に違反していないかどうかを判断する。トラフィックランプアップルール302は、性能の低下を回避するために、たとえば任意のキー範囲にわたってユーザートラフィック(すなわち、要求105)が増加し得る最大速度の概要を記す。
【0028】
ここで、図3を参照すると、いくつかの実施態様では、ルール違反検出部300は、デルタ検出部310と、ゼロ履歴(zero-history)検出部320と、完全履歴(full-history)検出部330とを備える。いくつかの例では、サンプリングした要求105は、トラフィックにおけるすべての傾向の特徴を記述しているわけではないが、その代わりに、トラフィックにおける最も重要または顕著な負荷の変動の特徴のみを記述している。様々なサンプリング技術を実装して、サンプリングエラーを制御するおよび/または最小限に抑えるのに役立ててもよい。ルール違反検出部300は、サンプリングした要求105を、デルタ検出部310において受信する。いくつかの例では、デ
ルタ検出部310は、サンプリングした要求105(明細書において、一般的に「トラフィック」とも称す)を一定時間、少なくとも基準ウインドウ404(図4)の長さの間、受信する。いくつかの例では、基準ウインドウ404は、スプリット動作後に情報検索システム150が容量を維持する期間から、情報検索システム150がスプリット動作を実行するために必要な期間を除算して得られる期間に等しい。システム150が容量を維持する期間は、本明細書において、RPS履歴と称し、システム150が容量を増やすために必要な期間は、本明細書において、RPS遅延726と称する(図7)。たとえば、情報検索システム150がスプリット動作を実行する(すなわち、トラフィックの増加に応じて容量を増やす)ために5分を必要とし、マージ操作を行う前に、増やした容量を25時間維持する場合、基準ウインドウ404の期間は、24時間55分である。本明細書において使用するとき、「RPS(1秒当たりの要求数)」および「1秒当たりのクエリ数(QPS)」と言う用語は、同義で用いられる場合がある。
【0029】
トラフィックランプアップルール302がRPS履歴と同じ期間分の過去の履歴に依存しているので、基準ウインドウ404は、現在時刻までのすべての必要な履歴を含む大きさに作られている。言い換えると、トラフィックランプアップルール302が履歴に依存しているので、時刻tsのトラフィックランプアップルール302の違反を判断するために、RPS履歴(この例では、25時間)に等しい以前の期間のトラフィックおよびトラフィック制限のすべてが用いられる。いくつかの例では、最近の期間の場合、システムがトラフィックの増加に反応できる時間をまだ有していないので、無関係であり得る(たとえば、RPS遅延726)。よって、基準ウインドウ404は、一定の時点における違反を判断するために、スライドする時間ウインドウを提供する。本明細書において用いる具体的な値は、例であり、特段の記載が無い限り、いかなる値に置き換えられてもよいことを理解されたい。デルタ検出部310が受信したサンプリングされた要求105は、基準ウインドウ404の間のすべてのトラフィックを表し得る。
【0030】
ここで、図4を参照すると、いくつかの実施態様では、サンプリングしたトラフィックが、グリッド要素402、402a~402nから構成されるグリッド400に配置されている。グリッドのX軸は、秒単位の時間を表し得、各グリッド要素402は、固定長の「タイムバケット」420、420a~420nを表す。各タイムバケット420は、設定された時間の間に生じたすべてのサンプリングしたトラフィックを表す。たとえば、各タイムバケット420(すなわち、各グリッド要素402のX軸)は、10秒という時間を表し得る。タイムバケット420の長さは、チューニング可能である(すなわち、調整可能である)。基準ウインドウ404が24時間55分(すなわち、RPS履歴からRPS遅延726を除算した期間)である場合、グリッド400のX軸は、8970個の要素分の長さになる(24時間55分である基準ウインドウ404のうち10秒ごとに1つのグリッド要素402)。いくつかの例では、デルタ検出部310は、グリッド400の大きさを最小限に抑えるために、基準ウインドウ404の一部を順次格子状にする。すなわち、グリッド400の長さは、基準ウインドウ404の一部のみを表し得る。いくつかの例では、グリッドの長さは、基準ウインドウ404の割合であってもよい。たとえば、デルタ検出部310は、基準ウインドウ404の最初の2時間のグリッド400を生成し、データを解析または処理し得る。完了後、デルタ検出部310は、基準ウインドウ404の次の2時間のグリッド400を生成するなど、基準ウインドウ404全体が処理されるまで以下同様である。いくつかの実施態様では、生成したグリッド400は、キーバケットの境界と完全に位置合わせされていなくてもよく、一致していなくてもよい。グリッド生成パラメータをチューニングし、近似手法を利用することにより、許容可能なレベルの誤差でグリッド400全体の必要なメトリックが導出され得る。
【0031】
グリッド400のY軸は、情報検索システム150のキースペース410の少なくとも一部を表し得る。キースペース410は、あり得るシャードキー値220のすべてを表し
、Y軸は、いくつかの例では、キースペース410全体(すなわち、最小シャードキー値220から最大シャードキー値220まで)を表し、その他の例では、キースペース410の関連する部分のみを表す。各グリッド要素402は、キーバケット430、430a~430nを表し得る(すなわち、グリッド要素402の「高さ」は、キーの範囲を表す)。キーバケット430は、開始キーと終了キーとを有する、キーの狭い範囲または狭バンドと規定される。たとえば、キースペース410が0と999との間のすべての整数から構成されている場合、1つのキーバケット430が0と9との間のシャードキー値を表し得る。言い換えると、各グリッド要素402は、一定時間(すなわち、タイムバケット420)の全体的なキースペース410(すなわち、キーバケット430)の一部を表す。いくつかの例では、各キーバケット430の大きさは同じである(すなわち、同じ量のキースペース410を表す)。その他の例では、各キーバケット430は、ほぼ同じ量のトラフィックを表すような大きさに作られている。たとえば、各キーバケット430は、おおまかに平均して50RPSをグリッド400の長さ(基準ウインドウ404bのうちの2時間など、一部であり得る)にわたって受けるキースペースを表し得る。各キーバケット430がまったく同じ量のトラフィックを表すことは重要ではなく、概算で十分である。1秒当たりの要求数は、1秒当たりのクエリ数(QPS:Queries Per Second)と称される場合もある。よって、グリッド400の各グリッド要素402は、所与の期間(すなわち、タイムバケット420)にわたる所与のキー範囲(すなわち、キーバケット430)の要求105の数を表し得る。この要求105の数は、そのタイムバケット420におけるそのキーバケット430のRPS510と称される場合がある。いくつかの例では、RPS510は、平均RPSをタイムバケット420の長さで乗算して得られる期間に等しい。たとえば、平均RPSが50である場合、各タイムバケットは、10秒を表し、各グリッド要素402は、500個の要求を表す。
【0032】
グリッド400を用いて、デルタ検出部310は、各キーバケット430の移動平均を判断し得る。移動平均は、本明細書において、RPS負荷520と称される(図5)。RPS負荷持続期間522と称される一定時間にわたる移動平均(すなわち、RPS負荷520)を判断する(図5)。いくつかの例では、RPS負荷持続期間522は、5分である。ここで、グリッド要素402ごとに、過去5分の移動平均は、各キーバケット430のRPS負荷520として判断される。いくつかの実施態様では、デルタ検出部310は、一定の時点におけるRPS510(図5)が、一定の時点よりも前のRPS遅延726に等しい同じ時点のRPS負荷520をデルタ重み524(たとえば、1.5)で乗算した値を超えた場合には、デルタ違反312が生じたと常に判断する(図5)。RPS遅延726よりも後(すなわち、ts-RPS遅延)の一定の時点(すなわち、ts)のデルタ重み524で乗算されたRPS負荷520を、時刻tsのデルタRPS制限530と称する場合がある(図5)。すなわち、タイムスタンプtsのRPS制限は、(ts-RPS遅延)のRPS負荷520で乗算されたデルタ重み524であり得る。デルタ重み524は、スプリット動作(すなわち、1つ以上のシャードの追加)後の容量の増加をモデル化し得る。いくつかの例では、RPS510は、RPS負荷520とは長さが異なる時間にわたる第2の移動平均であってもよい。すなわち、いくつかの例では、デルタ違反312は、それぞれ異なる長さ(たとえば、5分および1分)の2つの移動平均に基づいて判断されてもよい。
【0033】
ここで、図5を参照すると、X軸が時間(単位:秒)であり、Y軸がRPSであるプロット500は、ユーザートラフィックがデルタRPS制限530を違反しないで最大量でランプアップした場合のRPS510と、RPS負荷520と、デルタRPS制限530との関係を示す。時刻0から約750秒まで、RPS510は、「500」で一定している。RPS510が一定であるため、RPS負荷520(すなわち、RPSの移動平均510)も「500」で一定している。この例では、デルタ重み524は、約「1.5」に等しいため、デルタRPS制限530は、「500」を「1.5」で乗算した答え(すな
わち、750)に等しい。時刻=750秒では、RPS510は、デルタRPS制限530である「750」まで増加する。一定時間(すなわち、RPS遅延726)の後、デルタRPS制限530が上がり、RPS510(すなわち、ユーザートラフィック)およびRPS負荷520は増加してデルタRPS制限530と一致する。RPS遅延により、RPS510の増加に続いて、デルタRPS制限530が上がる。すなわち、この遅れは、システム150はさらなるリソースが追加(たとえば、シャード152を追加)できる前に遅延があるので、情報検索システム150の挙動をモデル化している。図6は、プロット500と同じデータのプロット600を示しているが、X軸の時間尺度は大幅に増えている。この時間尺度により、デルタRPS制限530がおよそ指数関数的速度で上がることが明らかにされている。図5および図6に示す例では、RPS510がデルタRPS制限530を超えることはないので、デルタ検出部310はデルタ違反312の存在を認められないであろう。
【0034】
ここで、図7を参照すると、別のプロット700が、図5および図6とは異なるトラフィックパターンの例を提供している。ここでも、X軸は時間(単位:秒)であり、Y軸は、1秒当たりの要求数である。時刻0では、RPS510およびデルタRPS制限530は、「500」および「750」でそれぞれ安定している。この場合、時刻≒500秒において、ユーザートラフィック(RPS510によって表される)は、デルタRPS制限530である「750」を超えた「6000」まで急増する。その後、ユーザートラフィックは、時刻≒3000秒において、500RPSに戻る。最初のトラフィックの急増(すなわち、RPS遅延726)から短時間の間にデルタRPS制限530は「9000」(すなわち、6000をデルタ重み524の1.5で乗算した値)まで上がる。この例では、デルタ検出部310は、デルタ違反312が時刻≒500秒のトラフィックの急増から始まり、デルタRPS制限530がRPS510によって超えられなくなる(t≒1000秒)まで継続することを検出する。デルタRPS制限530が(RPS負荷520の増加によって)上がることによって、トラフィックの急増の残りの部分(t≒1000秒からt≒3000秒まで)がデルタ違反312でなくなる。トラフィックが急増した後、RPS負荷520は、500RPSに戻り、デルタRPS制限530は、750RPSに戻る。
【0035】
図3に戻ると、デルタ違反312は、トラフィックランプアップルール違反(詳細は後述する)の違反の原因と必ずしもならないが、デルタ検出部310は、膨大な量のデータ(すなわち、ユーザートラフィック)を効率よく解析し、トラフィックランプアップルール違反(すなわち、完全履歴違反332)を示し得る特定のキー範囲に向かうトラフィックの期間を素早く特定する。言い換えると、デルタ検出部310は、トラフィックにおける、負荷が突然増加した領域のすべてを検出する。デルタ検出部310は、ほぼあらゆる範囲のキースペース410にわたってデルタ違反312を検出してもよい。
【0036】
また、デルタ検出部310は、狭いキー範囲の違反(すなわち、キーバケット430または狭バンドのデルタ違反)を連結することによって最も広いキー範囲デルタ違反312(すなわち、広バンドデルタ違反)を判断してもよい。すなわち、酷い負荷の増加が広いキー範囲に対応する場合、狭いキー範囲は、(キースペースにおいて)互いに近いその他のデルタ違反312と連結された場合、より広いキー範囲を構築し、トラフィックの同様の傾向を受ける。よって、デルタ検出部310は、トラフィックランプアップルール302の違反になる候補であるデルタ違反312を判断し得る。すなわち、デルタ検出部310は、狭バンドのデルタ違反候補312を判断し、これらの狭バンドのデルタ違反候補から広バンドのデルタ違反候補を判断し得る。デルタ検出部310は、さらなるトラフィックルールを適用して、連結されたデルタ違反312(すなわち、広いキー範囲のデルタ違反)が、顕著な量のトラフィックの負荷の増加を受けているかどうかを判断し得る。たとえば、デルタ検出部310は、負荷のピークに加えて、負荷の増加の激しさも考慮して、
さらなるフィルタリングをかける。
【0037】
よって、デルタ検出部310は、キースペース410全体にわたるデルタ違反312を検出し、狭バンドデルタ違反から広バンドデルタ違反を構築する。デルタ検出部310は、任意のキー範囲にわたる導出に限定を加える必要がなくなり、これにより、計算の複雑さが大幅に軽減されると同時に、トラフィックランプアップルール違反の検索空間が大幅に減る。
【0038】
引き続き図3を参照すると、デルタ検出部310は、検出したデルタ違反312および関連データ(すなわち、タイムスタンプ、キー範囲など)のすべてをゼロ履歴検出部320に送る。いくつかの実施態様では、デルタ違反312は、トラフィックレベルの増加が顕著なグリッド400の領域を特定するだけなので、キー範囲容量の自動スケーリングシステムのモデルの変化を完全にとらえることはない。すなわち、トラフィックランプアップルール302の違反は、デルタ違反312から始まるが、すべてのデルタ違反312が完全履歴違反332に相当するわけではない。
【0039】
デルタ検出部310は、わかりやすくするために(すなわち、検索空間を効率よく減らすために)デルタRPS制限530を使用するが、いくつかの例では、デルタRPS制限530は、キー範囲容量の自動スケーリングシステムのモデルのRPS制限が上がる実際の速度を表すことはない。その代わりに、ゼロ履歴RPS制限830(図8)を用いて、トラフィックルール302をより正確にモデル化してもよい。たとえば、一定の時点のデルタ重み524(すなわち、デルタRPS制限530)でRPS負荷520を乗算する(すなわち、関心の対象であるタイムスタンプよりも前のRPS遅延期間)代わりに、ゼロ履歴RPS制限830は、代わりに、RPS負荷520の最小値の関数およびRPS増加率824(図8)で乗算した同じ時点(すなわち、過去のゼロ履歴RPS制限830)のゼロ履歴RPS制限830であってもよい。すなわち、ゼロ履歴RPS制限830の上昇には、過去の制限によって上限が設けられ得るので、大規模なトラフィックの急増に反応するのにさらに長い時間がかかり得る。
【0040】
ここで、図8を参照すると、プロット800は、RPS510と、RPS負荷520と、ゼロ履歴RPS制限830との関係を示す。プロット800も、X軸が時間(単位:秒)であり、Y軸がRPSである。ここで、RPS増加率824は、「1.5」に等しい。この例では、RPS増加率824は、これまでの例におけるデルタ重み524と同じであるが、値は異なってもよい。時刻0では、RPS510およびRPS負荷520は、500RPSで安定している。RPS負荷520(すなわち、500)をRPS増加率824(すなわち、1.5)で乗算した値が750RPSに等しいので、ゼロ履歴RPS制限830は、750RPSである。おおむね500秒の時点で、RPS510は、瞬間的に6000RPSまで増加する。RPS負荷持続期間522に関連する期間(たとえば、5分)が経過した後、RPS負荷520も6000RPSに到達する。しかしながら、この例では、ゼロ履歴RPS制限830は、RPS遅延726の間隔で上がる。RPS510の極端な増加により、RPS510と前回のゼロ履歴RPS制限830との間の最小値は、2000秒以上が経過するまで前回のゼロ履歴RPS制限830である。
【0041】
この例では、デルタ検出部310は、500秒(すなわち、トラフィックが突然増加したとき)から始まる5分(すなわち、RPS負荷持続期間522)間のデルタ違反312を検出する。対照的に、ゼロ履歴違反322は、デルタ違反312と同じ時点(すなわち、約500秒)で始まるが、その期間は、RPS510がゼロ履歴RPS制限830を超えなくなる(すなわち、約2300秒)までの期間に等しい。よって、この例では、ゼロ履歴違反322は、対応するデルタ違反312よりも継続期間が長い。いくつかの例では、1つのゼロ履歴違反322は、複数のデルタ違反312に相当するので、ゼロ履歴違反
322の総数は、デルタ違反312の総数以下であり得る。たとえば、トラフィック(すなわち、RPS510)の段階的な増加があった場合、デルタ違反312であるとして各段階の先頭にフラグを立ててもよいが、全体的なトラフィックの急増は、1つのゼロ履歴違反332として検出されてもよい。
【0042】
すべてのゼロ履歴違反322の先頭にデルタ違反312が含まれているので、デルタ違反312を(たとえば、デルタ検出部310によって)先に検出することで、対応するゼロ履歴違反322の検出を大幅に簡素化できる。また、この行程により、複数のデルタ違反をマージして1つのゼロ履歴違反にすることができる。
【0043】
再び図3に戻ると、ゼロ履歴検出部320は、検出したゼロ履歴違反322を、関連する情報(たとえば、タイムスタンプ、キー範囲など)とともに完全履歴検出部330に送る。いくつかの実施態様では、トラフィックの急増に応じてキー範囲の容量を(たとえば、シャード152を追加することによって)増やすことは、比較的短期間で済む(たとえば、5分)が、情報検索システム150は、トラフィックが急増よりも前のレベルに即時に収まったとしても、増やした容量をかなりの期間(たとえば、1日)保持し得る。この動作は、完全履歴RPS制限930(図9)によってモデル化されてもよい。ゼロ履歴違反322が基準ウインドウ404全体の履歴を考慮しないので、完全履歴RPS制限930を用いて、すべてのゼロ履歴違反322が完全履歴違反332に相当することはない。完全履歴RPS制限930を、キー範囲の最大適合負荷と称する場合がある。最大適合負荷は、自動スケーリングリソース(すなわち、シャードの分割およびマージ)の実装によって異なり得る。すなわち、キー範囲容量(すなわち、キー範囲ごとの最大適合負荷)は、キー範囲が保持するデータの量を理由に自動スケーリングが負荷レベルを上げることを可能にしたり、各キー範囲が対応するパーティションの数を増やすこと可能にしたりする負荷の変動によって決まり得る。
【0044】
いくつかの例では、ゼロ履歴違反322は、複数の完全履歴違反332を含む。たとえば、間隔が[zh_start,zh_end]である(1つ以上のデルタ違反312からの)1つのゼロ履歴違反322は、選択キー範囲についてトラフィックパターンを有する。選択キー範囲は、普通に増加するが波状であって、2つの極端な最大値を上記間隔内に有する。これらの最大値の間では、トラフィックは減少し、ゼロ履歴制限830付近に傾いているが、ゼロ履歴制限830と等しいわけではなく、これにより、ゼロ履歴違反322に対して1つの違反期間がもたらされる。ゼロ履歴違反間隔内の(たとえば、タイムバケット420の期間の間隔の)各タイムスタンプは、タイムスタンプとともに移動してスライドする異なる基準ウインドウ404を有するので、完全履歴違反332を判断するとき、各タイムスタンプを現在の基準ウインドウ404内の最大適合負荷と比較してもよい。これらの基準ウインドウ404内での過去の負荷のレベルによっては、これら2つの最大値周辺の領域は、2つの別個の完全履歴違反期間として導出されてもよく、これらの最大値の間の局所的極小点は、最大適合負荷に適合する。
【0045】
完全履歴検出部330は、トラフィックランプアップルール302の違反に相当する完全履歴違反332を検出する。完全履歴違反332は、対応する基準ウインドウ404内に以前のレベルの適合負荷がないゼロ履歴違反322に相当し得る。より具体的には、[zh_start,zh_end]のゼロ履歴違反期間を調べるとき、この期間に属するいずれのタイムスタンプtsにおいても、完全履歴制限は、対応する基準ウインドウ404の最大適合負荷で乗算したRPS増加率824に等しく再導出され直され得る。この新しい制限を用いて、この時点が完全履歴違反332であるかどうかを判断してもよい。いくつかの例では、この間隔の一部(たとえば、最も極端な部分)のみがヒューリスティックとして処理されてもよい。完全履歴検出部330は、いくつかの例では、完全履歴違反332を検出するために、ゼロ履歴違反322に対応する領域しか処理しない。トラフィ
ックがゼロ履歴RPS制限830以下に戻るとすぐにゼロ履歴違反322の履歴依存がすべてリセットされるので、そして増加したトラフィックに応じて容量がさらに増えるので、ゼロ履歴違反322は、いくつかの適合負荷を考慮しなくてもよい。
【0046】
いくつかの実施態様では、完全履歴検出部330は、グリッド400も受信する。高分解能グリッド400(たとえば、デルタ検出部310によって生成される)により、完全履歴検出部330は、すべてのキー範囲の前回の負荷のレベルの境界を導出することが可能になる。各ゼロ履歴違反322は、トラフィックレベルの突然の増加に対応する。比較できるほどのレベルの違反とならない(すなわち、適合)負荷が基準ウインドウ404にない場合、完全履歴検出部330は、ゼロ履歴違反322が完全履歴違反332であると判断する。
【0047】
ここで、図9を参照すると、プロット900は、RPS510と、RPS負荷520と、完全履歴RPS制限930との関係を示す。これまでの例と同様に、プロット900のX軸は、秒単位の時間であり、Y軸は、RPSである。ここで、トラフィックが約500RPSから約4000RPSまで急増する4つのトラフィックの急増が示されている。ここで、ユーザートラフィック(すなわち、RPS510)は、時刻=0よりも前では、長い間(たとえば、基準ウインドウ404の期間よりも長い間)安定していていたとする。増加した容量(完全履歴RPS制限930によって表される)が維持されているので、すべての4回の急増は、デルタ違反312およびゼロ履歴違反322として検出され得るが、完全履歴検出部330は、1回目の急増だけが完全履歴違反332であると判断し得る。
【0048】
図10を参照すると、トラフィックランプアップルール302の違反(すなわち、完全履歴違反332)を検出することの主な課題は、トラフィックランプアップルール302の無限の履歴依存である。すなわち、特定の時刻に違反が生じたかどうかは、当該特定の時刻よりも前のトラフィックの動きよってことなる。明らかに、これは、基準ウインドウ404の始めの最初の完全履歴RPS制限930の判断に問題を投げかける。この履歴依存を解消するために、ルール違反検出部300は、ブートストラップ技術を実装してもよい。すなわち、ルール違反検出部300がRPS履歴を満たすのに十分なデータをサンプリングする前(たとえば、ルール違反検出部300がデータを25時間未満の間サンプリングしているとき)に、ブートストラップ技術を利用して完全履歴RPS制限930を初期化してもよい。
【0049】
完全履歴RPS制限930の性質のために、所与の基準ウインドウ404に違反がない場合、完全履歴RPS制限930の判断には、RPS負荷520の値(完全履歴RPS制限930の履歴ではない)のみが必要である。言い換えると、違反のない基準ウインドウ404は、基準ウインドウよりも前の履歴を無関係にするよう、「履歴リセット」イベントとしての役割を果たし得る。
【0050】
ここで、図11を参照すると、いくつかの実施態様では、ルール違反検出部300は、十分な大きさのブートストラップウインドウ1100を選択して、少なくとも、ブートストラップウインドウ1100を有する基準ウインドウ404では、完全履歴違反332がない可能性が確実に高くなるようにする。ルール違反検出部300は、ブートストラップウインドウ1100の始点から開始して、完全履歴RPS制限930(最初はRPS負荷520のみを用いて)を判断し得る。ブートストラップウインドウ1100内にリセットイベントがあった可能性が高いので、ルール違反検出部300は、ブートストラップウインドウ1100の終点の完全履歴RPS制限930を信頼し得る。よって、ルール違反検出部300が基準ウインドウ404内に完全履歴違反332を検出する前に、ルール違反検出部300は、基準ウインドウ404よりも前のブートストラップウインドウ1100
を選択することによって、完全履歴RPS制限930をブートストラップしてもよい。
【0051】
図12は、情報検索システム内のトラフィックランプアップルール違反を検出する方法1200の動作のアレンジ例のフローチャートである。方法1200は、動作1202から開始する。動作1202では、データ処理ハードウェア112において、データ要素検索要求105を受信することを含む。データ要素検索要求105は、各々、情報検索システム150に少なくとも1つのデータ要素202を要求する。情報検索システム150は、複数のデータ要素202を備える。方法1200は、動作1204において、データ処理ハードウェア112が、受信したデータ要素検索要求105の数に基づいて情報検索システム150のキー範囲430のRPS(1秒当たりの要求数)510を判断するステップを含む。動作1206では、方法1200は、データ処理ハードウェア112が、受信したデータ要素検索要求105の数に基づいて、第1期間(たとえば、図5図7のRPS負荷持続期間)522にわたる情報検索システム150のキー範囲430のRPSの移動平均520を判断するステップを含む。方法1200は、動作1208において、データ処理ハードウェア112が、デルタ違反312の数を判断するステップを含む。各デルタ違反312は、RPS510がデルタRPS制限530を超えた開始時点を含む。デルタRPS制限530は、RPSの移動平均520に基づく。
【0052】
デルタ違反312ごとに、方法1200は、動作1210において、データ処理ハードウェア112が、第2期間404にわたるキー範囲430の最大適合負荷930を判断するステップと、動作1212において、データ処理ハードウェア112が、デルタ違反312の開始時点に基づいてRPS510がキー範囲430の最大適合負荷930を超えたかどうかを判断するステップとを含む。RPS510がキー範囲430の最大適合負荷930を超えた場合、方法1200は、動作1214において、データ処理ハードウェア112が、デルタ違反312が完全履歴違反332に相当すると判断するステップを含む。完全履歴違反332は、情報検索システム150の性能の低下を示す。
【0053】
図13は、本明細書に記載のシステムおよび方法を実装するために使用され得る例示的なコンピューティングデバイス1300の概略図である。コンピューティングデバイス1300は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すよう意図される。本明細書に示す構成要素、それらの接続および関係、ならびにそれらの機能は、例示に過ぎず、本明細書において説明および/またはクレームされた発明の実施態様を限定するものではない。
【0054】
コンピューティングデバイス1300は、プロセッサ1310と、メモリ1320と、記憶装置1330と、メモリ1320および高速拡張ポート1350に接続された高速インタフェース/コントローラ1340と、低速バス1370および記憶装置1330に接続された低速インタフェース/コントローラ1360とを備える。構成要素1310、1320、1330、1340、1350、および1360の各々は、様々なバスを用いて互いに接続されており、共通のマザーボード上に実装されてもよく、またはその他の方法で適宜実装されてもよい。プロセッサ1310は、コンピューティングデバイス1300内で実行するための命令を処理することができ、当該命令は、高速インタフェース1340に連結されたディスプレイ580など、外付けの入出力装置上のGUI(Graphical User Interface)のためのグラフィック情報を表示するためのメモリ1320に格納された命令または記憶装置1330上に格納された命令を含む。その他の実施態様では、複数のプロセッサおよび/または複数のバスが複数のメモリおよび複数種類のメモリとともに適宜利用されてもよい。また、(たとえば、サーババンク、ブレードサーバ群、または多重プロセッサシステムなどとしての)必要な動作の一部を各々が提供する複数のコンピューティングデバイス1300が接続されてもよい。
【0055】
メモリ1320は、情報を非一時的にコンピューティングデバイス1300内に格納する。メモリ1320は、コンピュータ読み取り可能な媒体、揮発性記憶装置(複数可)、または非揮発性記憶装置(複数可)であってもよい。非一時的なメモリ1320は、プログラム(たとえば、一連の命令)またはデータ(たとえば、プログラム状態情報)をコンピューティングデバイス1300が使用するために一時的または恒久的に格納するために用いられる物理デバイスであってもよい。不揮発性メモリとして、フラッシュメモリおよびROM(Read-Only Memory)/PROM(Programmable
Read-Only Memory)/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electronically Erasable Programmable Read-Only Memory)(たとえば、ブートプログラムなど、通常、ファームウェアのために使用される)などが挙げられるが、これらに限定されない。揮発性メモリとして、RAM(Random Access Memory)、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access
Memory)、PCM(相変化メモリ)およびディスクまたはテープなどが挙げられるが、これらに限定されない。
【0056】
記憶装置1330は、コンピューティングデバイス1300用の大容量ストレージを提供できる。いくつかの実施態様では、記憶装置1330は、コンピュータ読み取り可能な媒体である。様々な異なる実施態様では、記憶装置1330は、フロッピー(登録商標)ディスク装置、ハードディスク装置、光ディスク装置、またはテープ装置であってもよく、フラッシュメモリまたは他の同様の固体メモリ装置であってもよく、ストレージエリアネットワークまたはその他の構成に含まれる装置を含む装置の配列であってもよい。さらなる実施態様では、情報担体にコンピュータプログラムプロダクトが有形に含まれている。また、このコンピュータプログラムプロダクトは、命令を含んでおり、当該命令は、実行されると、上述した方法など、1つ以上の方法を実行する。情報担体は、メモリ1320、記憶装置1330、またはプロセッサ1310上のメモリなど、コンピュータまたは機械読み取り可能な媒体である。
【0057】
高速コントローラ1340は、コンピューティングデバイス1300のための多くの帯域幅を必要とする動作を管理し、低速コントローラ1360は、より低い帯域幅の多くを必要とする動作を管理する。このような役割の割振りは、例示に過ぎない。いくつかの実施態様では、高速コントローラ1340は、(たとえば、グラフィックスプロセッサまたはアクセラレータを通じて)メモリ1320、ディスプレイ1380に連結され、様々な拡張カード(図示せず)を受け付け得る高速拡張ポート1390に連結される。いくつかの実施態様では、低速コントローラ1360は、記憶装置1330および低速拡張ポート1390に連結される。様々な通信ポート(たとえば、USB、Bluetooth(登録商標)、Ethernet(登録商標)、無線Ethernet(登録商標))を含み得る低速拡張ポート1390は、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入出力装置、または、スイッチもしくはルータなどのネットワーク装置に、たとえば、ネットワークアダプタを通じて連結されてもよい。
【0058】
コンピューティングデバイス1300は、図に示すような複数の異なる形態で実現されてもよい。たとえば、標準サーバ1300aとして実現されてもよく、または、ラップトップコンピュータ1300bとして、もしくはラックサーバシステム1300cの一部として、このようなサーバ1300aの群で複数回実現されてもよい。
【0059】
本明細書において説明したシステムおよび技術の様々な実施態様は、デジタル電子回路および/もしくは光学回路、集積回路、専用に設計されたASIC(特定用途向け集積回
路)、コンピュータハードウェア、ファームウェア、ソフトウェア、ならびに/またはそれらの組み合せで実現することができる。これらの様々な実施態様は、少なくとも1つのプログラム可能なプロセッサを備えるプログラム可能なシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムでの実施態様を含み得る。当該少なくとも1つのプログラム可能なプロセッサは、特定用途プロセッサであってもよく、汎用プロセッサであってもよく、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置に連結されてデータおよび命令を送受信してもよい。
【0060】
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)とは、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指してもよい。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と称される場合がある。アプリケーションとして、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、文書処理アプリケーション、表計算アプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションなどが挙げられるが、これらに限定されない。
【0061】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラム可能なプロセッサ用の機械命令を含み、高レベルの手続き形言語および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ言語/機械言語で実現できる。本明細書において使用するとき、「機械読み取り可能な媒体」および「コンピュータ読み取り可能な媒体」という用語は、機械命令および/またはデータを、機械読み取り可能な信号として機械命令を受け付ける機械読み取り可能な媒体を含むプログラム可能なプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、非一時的なコンピュータ読み取り可能な媒体、装置、および/またはデバイス(たとえば、磁気ディスク、光学ディスク、メモリ、PLD(Programmable Logic Devices))を指す。「機械読み取り可能な信号」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用される任意の信号を指す。
【0062】
入力データ上で動作して出力を生成することによって機能を実行するように1つまたは複数のコンピュータプログラムを1つまたは複数のプログラマブルプロセッサ(データ処理ハードウェアとも称される)が実行することによって、本明細書において説明した処理および論理フローが実行され得る。また、処理および論理フローは、専用の論理回路、たとえば、FPGA(Field Programmable Gate Array)またはASIC(特定用途向け集積回路)によって実行され得る。コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、およびあらゆる種類のデジタル計算機の任意の1つ以上のプロセッサが挙げられる。一般に、プロセッサは、ROM(Read Only Memory)もしくはRAM(Random Access Memory)、またはその両方から命令およびデータを受け取る。必須のコンピュータの構成要素は、命令を実行するためのプロセッサと、命令およびデータを格納するための1つ以上のメモリ素子である。一般に、コンピュータは、データを格納するための1つ以上の大容量記憶装置、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを備える、または、このような1つ以上の大容量記憶装置との間でデータの受信、送信、もしくはその両方を行うように操作可能に接続される。しかしながら、コンピュータは、このような機器を有する必要はない。コンピュータプログラム命令およびデータを格納するのに適した読み取り可能な媒体は、一例として、EPROM、EEPROM、およびフラッシュメモリ素子などの半導体メモリ素子;内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク;光磁気ディスク;およびCD-ROMおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、
媒体ならびにメモリ素子を含む。プロセッサおよびメモリは、専用の論理回路によって補ったり、専用の論理回路に内蔵したりすることができる。
【0063】
ユーザーとのやり取りを可能にするために、本開示の1つ以上の態様は、ユーザーに情報を表示するための表示装置、たとえば、ブラウン管(CRT)、液晶ディスプレイ(LCD)モニタ、またはタッチスクリーンと、オフションで、ユーザーがコンピュータに入力を行えるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールとを備えたコンピュータ上に実装され得る。その他の種類のデバイスを使ってユーザーとやり取りすることもでき、たとえば、ユーザーに提供されるフィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、あらゆる形式の感覚フィードバックであり得、ユーザーからの入力は、音響入力、音声入力、触覚入力など、あらゆる形式で受け付けられ得る。これに加えて、コンピュータは、ユーザーが使用する機器と文書を送受信すること、たとえば、ウェブブラウザから受信した要求に応答してユーザーのクライアント装置上のウェブブラウザにウェブページを送信することによって、ユーザーとやり取りすることができる。
【0064】
いくつかの実施態様について説明する。しかしながら、本開示の趣旨および範囲を逸脱することなく、様々な変更がなされてもよいことを理解されたい。したがって、その他の実施態様も、添付の特許請求の範囲に含まれる。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13