JP2018133105A - データストリーム取り込み及び永続性ポリシ - Google Patents

データストリーム取り込み及び永続性ポリシ Download PDF

Info

Publication number
JP2018133105A
JP2018133105A JP2018084896A JP2018084896A JP2018133105A JP 2018133105 A JP2018133105 A JP 2018133105A JP 2018084896 A JP2018084896 A JP 2018084896A JP 2018084896 A JP2018084896 A JP 2018084896A JP 2018133105 A JP2018133105 A JP 2018133105A
Authority
JP
Japan
Prior art keywords
data
stream
partition
node
record
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.)
Granted
Application number
JP2018084896A
Other languages
English (en)
Other versions
JP6510112B2 (ja
Inventor
サイマー,マーヴィン・マイケル
Michael Theimer Marvin
ガーレ,ガウラヴ・ディ
D Ghare Gaurav
デュナガン,ジョン・デイヴィッド
David Dunagan John
バージェス,グレッグ
Burgess Greg
ション,イン
Ying Xiong
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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
Priority claimed from US14/077,162 external-priority patent/US9858322B2/en
Priority claimed from US14/077,171 external-priority patent/US9720989B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2018133105A publication Critical patent/JP2018133105A/ja
Application granted granted Critical
Publication of JP6510112B2 publication Critical patent/JP6510112B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】 プログラムによるインタフェースが実装され、ストリーム管理サービスのクライアントがデータストリームのためにデータ取り込みポリシを選択するのを可能にする。
【解決手段】 少なくとも1回の取り込みポリシを選択するクライアント要求が受信される。少なくとも1回のポリシにより、クライアントは肯定応答が受信されるまで、1回以上のデータレコードの表示をサービスに伝送し得る。特定のデータレコードを表示する複数の伝送の受信に対応して、それぞれの肯定応答がクライアントに送信される。ストリームのために選択された永続性ポリシに基づいて、データレコードのコピーが、複数の伝送のうちの1つの特定の伝送に対応して、1つ以上の記憶位置に記憶される。
【選択図】図6

Description

データ記憶の費用が年とともに下落するに従い、また、計算インフラストラクチャの様
々な要素を相互接続する能力が改善するにつれ、多種多様のアプリケーションに対応可能
なより多くのデータが、場合により収集され分析され得る。例えば、携帯電話は、位置、
電話のユーザによって使用されるアプリケーション等を示すデータを生成することができ
、少なくともそのいくつかは、カスタマイズされたクーポン、広告等をユーザに提示する
ために、収集され分析され得る。監視カメラによって収集されたデータの分析は、犯罪を
防止し及び/または解決する上で有用であってよく、航空機のエンジン、自動車または複
雑な機械装置内部の様々な位置に埋め込まれたセンサから収集されたデータは、予防保全
、効率の向上及び費用の低減のような様々な目的に使用され得る。
ストリーミングデータ量の増加は、商品のハードウェアの使用増加に付随する(及び場
合によっては可能になった)。商品のハードウェア用の仮想化技術の到来は、多くの種類
のアプリケーション用の大規模な計算リソースを運用するに際し、様々な計算リソースが
効率的に、かつ安全に多数の顧客によって共有されるのを可能にするという利点を提供し
てきた。例えば、仮想化技術は、単一の物理的計算機によりホスティングされる1つ以上
の仮想マシンを各ユーザに提供することによって、単一の物理的計算機が多数のユーザ間
で共有されることを可能にてよく、それぞれのこのような仮想マシンは、独自の論理計算
システムとして動作するソフトウェアシミュレーションであり、自分が唯一の操作者であ
り、所与のハードウェアの計算リソースを管理しているという錯覚をユーザに提供する。
一方、様々な仮想マシンの間にアプリケーションの単独及び安全も提供し得る。さらに、
ある仮想化技術は、多数の異なる物理計算システムに及ぶ多数の仮想プロセッサを備える
単一の仮想マシンのような、2つまたはそれ以上の物理リソースに及ぶ仮想リソースを提
供することが可能である。計算プラットフォームに加えて、いくつかの大きな組織は、ま
た、仮想技術を使用して構築された、様々な種類のストレージサービスを提供している。
このようなストレージサービスを使用し、大量のデータが所望の耐久レベルで記憶され得
る。
様々なプロバイダから比較的低コストで仮想化した計算リソース及び/またはストレー
ジリソースを入手可能であるものの、しかしながら、大きく動的に変動するデータストリ
ームを収集、記憶及び処理の管理及びオーケストレーションは、様々な理由で難易度の高
い仕事である。より多くのリソースが大量のデータストリームを扱うために設定されたシ
ステムに追加されるにつれ、例えば、システムの異なる部分間のワークロードにおける不
均衡が生じ得る。この不均衡に対処がされないままの場合には、その他のリソースの利用
が不十分になることに加え(及び、そのため損失)、このような不均衡は、いくつかのリ
ソースで重大な性能障害に繋がり得る。このようなデータまたは結果がクライアントが制
御しない設備に格納される場合には、クライアントはまた、ストリーミングデータまたは
ストリーミングデータの分析結果の安全性に関して、懸念し得る。分散システムのサイズ
が大きくなるにつれて、時折起こる接続故障及び/またはハードウェア破損のような、頻
度の増加とともに自然に起こり得る破損は、費用のかかる破損からストリームデータの収
集、記憶または分析を守るために、効果的に対処されなければならない場合もある。
少なくともいくつかの実施形態による、データストリームの構想の簡略化した概略を提供する。 少なくともいくつかの実施形態による、ストリーム処理ステージの収集を含む、ストリーム管理システム(SMS)及びストリーム処理システム(SPS)の様々なサブコンポーネントの間のデータの流れの概略を提供する。 少なくともいくつかの実施形態による、SMS及びSPSで実装され得るプログラムによるインタフェースのそれぞれのセットの例を示す。 少なくともいくつかの実施形態による、SPSクライアントがストリーム処理ステージのグラフ生成を可能にするために実装され得るウェブベースのインタフェースの例を示す。 少なくともいくつかの実施形態による、SMSで実装され得る、プログラミングによるレコードのサブミッションインタフェース及びレコード検索インタフェースの例を示す。 少なくともいくつかの実施形態による、SMSの取り込みサブシステムの実施例の要素を示す。 少なくともいくつかの実施形態による、SMSのストレージサブシステムの実施例の要素を示す。 少なくともいくつかの実施形態による、SMSの検索サブシステム及びSPSでの検索サブシステムの相互作用の実施例の要素を示す。 少なくともいくつかの実施形態による、SMSまたはSPSのノード用に設定され得る冗長グループの実施例を示す。 少なくともいくつかの実施形態による、所与の冗長グループのノードが複数のデータセンタに分散され得る、プロバイダのネットワーク環境を示す。 少なくともいくつかの実施形態による、SMSまたはSPSのノード用に選択され得る複数の宛先の実施例を示す。 少なくともいくつかの実施形態による、SPSクライアント及びSMSクライアントのそれぞれによって送信され得る、セキュリティオプションの要求の実施例を示す。 少なくともいくつかの実施形態による、ストリームデータ生成部とSMSの取り込みノードとの間の相互作用の実施例を示す。 少なくともいくつかの実施形態による、SMSで取り込まれたデータレコードのために生成され得る、シーケンス番号の実施例の要素を示す。 少なくともいくつかの実施形態による、SMSでストリームデータレコードが並べられたストレージ及び検索の実施例を示す。 少なくともいくつかの実施形態による、SMSノード及びSPSノードのために作製され得るストリームパーティションマッピング及び対応する構成決定の実施例を示す。 少なくともいくつかの実施形態による、動的ストリームの再分割の実施例を示す。 少なくともいくつかの実施形態による、ストリームレコードの取り込み及びストリームレコードの検索用のプログラムによるインタフェースのそれぞれのセットを支援するために実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、ストリーム処理ステージを構成するよう実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、ストリーム処理ワーカノードの構成のための、クライアントのライブラリコンポーネントの呼び出しに対応して実行され得る動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、ストリーム処理のために1つ以上のリカバリポリシを実装するために実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、データストリーム用の複数のセキュリティオプションを実装するために実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、データストリームのためにポリシの分割を実装するために実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、データストリームの動的再分割を実装するために実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、データストリームレコード用の少なくとも1回のレコードの取り込みポリシを実装するために実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、データストリーム用の複数の永続性ポリシを実装するために実行され得る、動作の態様を示すフローチャートである。 少なくともいくつかの実施形態による、処理ステージのワーカノードがデータベーステーブルを使用してワークロードを調節するストリーム処理システムの例を示す。 少なくともいくつかの実施形態による、ワークロードの調節に使用されるパーティションの割り当てテーブルに記憶され得る入力の実施例を示す。 少なくともいくつかの実施形態による、処理動作を実行するパーティションを選択するために、ストリーム処理ステージのワーカノードによって実行され得る動作の態様を示す。 少なくともいくつかの実施形態による、ストリーム管理サービス制御サブシステムから取得された情報に基づいて、パーティション割り当てテーブルをアップデートするために、ストリーム処理ステージのワーカノードによって実行され得る動作の態様を示す。 少なくともいくつかの実施形態による、ストリーム処理ステージのワーカノードによって実行され得る負荷分散動作の態様を示す。 少なくともいくつかの実施形態で使用され得る計算装置の実施例を示すブロック図である。
実施形態は、いくつかの実施形態及び説明図用に一例として本明細書で記載されている
ものの、当業者は、実施形態は実施形態または図面に限定されないことを理解するであろ
う。図面及び詳細な説明は、開示された特定の形式の実施形態に限定することを意図せず
、反対に添付の特許請求の範囲により規定されるように趣旨及び範囲内にある全ての修正
、等価物及び代替物を網羅しようとするものであると理解すべきである。本明細書で使用
された見出しは、組織の目的のためのみであり、記述の範囲または特許請求の範囲を限定
するために使用されることを意図したものではない。本願の全体を通じて使用されるとき
、「してもよい」という語は、義務の意味(即ち必須を意味する)というよりはむしろ、
許可の意味で使用されている(即ち、あることを行う可能性を有することを意味する)。
同様に、「含む」、「含んでいる」は、含んでいることを意味するが、これらに限定され
ない。
何百または何千もの同時並行データ生成部及びデータコンシューマの取り扱いを目的と
した、大規模データストリームの作成、記憶、検索及び処理を管理するための方法及び装
置の様々な実施形態が記載されている。本発明で使用する場合、「データストリーム」と
いう用語は、1つ以上のデータ生成部によって生成し、1つ以上のデータコンシューマに
よってアクセスされ得るデータレコードのシーケンスを意味し、各データレコードは、不
変のバイト列であると仮定される。いくつかの実施形態では、ストリーム管理サービス(
SMS)は、ストリームデータレコードの送信、記憶及び検索と同様に、ストリームの作
成、構成及び削除を可能にするために、プログラムによるインタフェース(例えば、アプ
リケーションプログラミングインタフェース(API)、ウェブページ若しくはウェブサ
イト、グラフィカルユーザインターフェースまたはコマンドラインツール)を提供し得る
。SMS制御コンポーネントとの相互作用を含む、(ストリーム作成若しくは削除、また
は下記に記載の動的再分割操作の種類のような)いくつかの種類のストリーム操作は、本
明細書では「制御プレーン」操作と呼ばれることもある。一方、典型的には、制御コンポ
ーネントとの相互作用を必要としない(例えば、通常の操作条件下で)データレコードの
送信、記憶及び検索のような操作は、本明細書では「データプレーン」操作と呼ばれるこ
ともある。ダイナミックプロビジョンされた計算、記憶及びネットワークリソースのセッ
トは、例えば、さらに詳細に後述のように、ストリーム管理ワークロードが数々のサービ
スコンポーネントの中でスケーラブルな方法で分散されることが可能な様々なパーティシ
ョンポリシに基づいて、このようないくつかの実施形態におけるサービスを実装するため
に使用され得る。頭字語のSMSは、本明細書においてはストリーム管理サービスを意味
するために使用され得る。また、ストリーム管理サービスを実装するために使用される、
仮想及び/または物理リソースの収集を含む、ストリーム管理システムを意味するために
使用され得る。
SMSの何人かの顧客は、様々な実施形態で、SMSプログラムによるインタフェース
を直接起動するアプリケーションを開発し得る。少なくともいくつかの実施形態では、し
かしながら、SMSインタフェースに加えて、より高いレベルの抽象化またはアプリケー
ションレベルの処理フレームワークは、顧客に提供されてよく、SMSによって直接支援
される、より低いレベルのストリーム管理機能を使用するアプリケーションの開発を望ま
ない、これらのクライアントに対するストリーム処理の様々な態様を簡略化し得る。この
ようなフレームワークは、それ自身のプログラムによるインタフェース(例えば、SMS
インタフェースの上部に設置)を提供してよく、より低いレベルのストリーム管理操作よ
りも顧客がストリームレコードを使用して実装されるビジネスロジックにより集中し得る
。より高いレベルのフレームワークは、いくつかの実施形態では、それ自身の制御プレー
ン及びデータプレーンコンポーネントを備えるストリーム処理サービス(SPS)として
実装されてよく、ストリーム処理のための自動リソースプロビジョニング、処理ノードの
自動フェイルオーバ、任意のストリーム処理ワークフローグラフを構築する能力、一過性
のストリームの支援、ワークロードの変化またはその他のトリガ条件に基づいた動的再分
割等のような、高度な機能性を提供し得る。少なくともいくつかの実施形態では、ストリ
ーム管理サービス、ストリーム処理サービスの何れか、または両方のサービスは、仮想環
境においてマルチテナント管理ネットワークでアクセス可能なサービスであり得る。すな
わち、(コンピュータサーバまたはホスト、記憶装置、ネットワーク装置等のような)様
々な物理リソースは、少なくとも場合によっては、リソースがどのように共有されている
のか正確に顧客に必ずしも気付かせる必要がなく、あるいは所与のリソースが共有されて
いることを全く気付かせることさえなく、このような実施形態における異なる顧客のスト
リーム間で共有される。管理されたマルチテナントストリーム管理及び/または処理中の
管理サービスの制御コンポーネントは、動的に追加、削除し、または様々な適用可能なポ
リシに基づいた特定のストリームに使用されるノード若しくはリソースを再構成してよく
、それらのいくつかはクライアントが選択可能であり得る。加えて、制御コンポーネント
は、また、(例えば、少なくともいくつかのハードウェアまたはソフトウェアが双方のク
ライアントに共有される可能性があっても、1つのクライアントのストリームのアプリケ
ーションは別のクライアントのデータにアクセスすることができないことを確実にするた
めの)様々な種類のセキュリティプロトコルを、透過的に実装する役割をし、監査または
デバック等に使用され得る請求、ロギング情報の生成のためのリソース使用状況を監視す
る。管理されたマルチテナントサービス(単数または複数)のクライアントの見地から、
サービス(単数または複数)によって実装される制御/管理者機能は、大規模のストリー
ミングアプリケーションを支援することに伴う複雑さの大部分を解消し得る。いくつかの
場合では、このようなマルチテナントサービスの顧客は、少なくともいくつかの種類のス
トリーム関連の操作のためのリソースを共有したくない場合には、いくつかの物理リソー
スは、これらの種類の操作のためにシングルテナントのように少なくとも一時的に指定さ
れ得る(すなわち、単一の顧客またはクライアントに代わって実行される操作に限定する
)ことを表すことが可能であり得る。
様々な実施形態では、いくつかの異なる手法がSMS及び/またはSPS制御プレーン
及びデータプレーン操作を実装するためにとられ得る。例えば、制御プレーンの操作に関
しては、いくつかの実装では、制御サーバまたはノードの冗長グループが設定され得る。
冗長グループは複数の制御サーバを含んでよく、そのうちの1つのサーバは、様々なスト
リームに関して管理者の要求に応答する役割をするプライマリサーバとして示されている
。一方、別のサーバは、現在のプライマリでの破損(または接続不良)のようなトリガ条
件の場合、プライマリとして引き継ぐように示され得る。別の実装においては、ネットワ
ークにアクセス可能なデータベースサービスで作成された1つ以上のテーブルは、様々な
ストリームに(パーティションマップのような)制御プレーンメタデータを格納するため
に使用され得る。また、様々な取り込み、記憶ノードや検索ノードは、データプレーン操
作に必要なメタデータのサブセットの取得する必要に応じてテーブルにアクセス可能であ
り得る。異なる実施形態における、SPS及びSMSデータプレーン及び制御プレーンの
機能性の様々な態様に関する詳細は、下記に提供されている。ストリーム管理サービスが
実装される、いくつかの実施形態では、より高いレベルの基本要素を提供するストリーム
処理サービスは必ずしも実装されない可能性があることに注意する。その他の実施形態で
は、高いレベルのストリーム処理サービスのプログラムによるインタフェースのみが顧客
に公開され、使用されるより低レベルのストリーム管理インタフェースはクライアントに
は入手可能ではない。
いくつかの実施形態によると、ストリーム管理システムは、データレコードを取得また
は収集する役割を主にするレコード取り込みサブシステムと、適用可能な永続性または耐
久性ポリシによるデータレコードコンテンツを保存する役割を主にするレコード記憶サブ
システムと、及び格納されたレコードに向けられた読み出し要求に応答する役割を主にす
るレコード検索サブシステムと、を含む、複数の独立して構成可能なサブシステムを備え
得る。制御サブシステムは、また、いくつかの実施形態において実装され、例えば、動的
に判定することによって及び/または必要な数のノードを初期化することによって、サブ
システムを、仮想または物理サーバのような選択されたリソースで取り込み、記憶及び取
得するために、残りのサブシステムを構成する役割をする1つ以上の管理者または制御コ
ンポーネントを備え得る。取り込み、記憶、検索及び制御サブシステムのそれぞれは、全
体がサブシステムの「ノード」または「サーバ」と呼ばれ得る、複数のハードウェア及び
/またはソフトウェアコンポーネントのそれぞれを使用して実装され得る。このように、
SMSの様々なリソースが、取り込み、記憶、検索または制御という4つの機能カテゴリ
のうちの1つに論理的に属するとされ得る。いくつかの実装においては、制御コンポーネ
ントのそれぞれのセットは、その他のサブシステムのそれぞれに構築され得る。例えば、
独立取り込み制御サブシステム、記憶制御サブシステム及び/または検索制御サブシステ
ムが実装され得る。それぞれのこのような制御サブシステムは、対応するサブシステムの
その他のノードのために及び/またはクライアントまたはその他のサブシステムからの管
理クエリに応答するために、使用されるリソースを識別する役割をし得る。いくつかの実
装においては、様々な種類のSMS及び/またはSPSの機能を可能にするノードプール
は、予め設定されてよく、これらのプールの選択されたメンバは、必要に応じて新しいス
トリームまたは新しい処理ステージに割り当てられ得る。
ストリームパーティションポリシ及び関連するマッピングは、例えば、取り込み、記憶
、検索及び/または制御ノードの異なるセットの間のデータレコードのサブセットに分散
するために、少なくともいくつかの実施形態においては、実装され得る。例えば、レコー
ド取り込み率及び/または検索率の予想のようなその他の要因と同様に、特定のデータス
トリームに選択されるパーティションポリシに基づいて、制御コンポーネントは、いくつ
のノード(例えばプロセスまたはスレッド)が取り込み、記憶及び検索のために最初に確
率されるか(すなわち、ストリーム作成時間)、及びこれらのノードがどのように仮想及
び/または物理マシンにマッピングされるべきかを判定し得る。時間の経過とともに、所
与のストリームに関連するワークロードは、増加または減少してよく、これは(その他の
トリガ条件のなかで)ストリームの再分割という結果をもたらし得る。このような再分割
は、レコードのパーティション、使用されるパーティションキー、パーティションのすべ
ての数、取り込みノードの数、記憶ノード若しくは検索ノード、または異なる物理リソー
ス若しくは仮想リソースへのノードの配置を判定するために使用される機能のような、様
々なパラメータへの変更を伴い得る。少なくともいくつかの実施形態では、さらに詳細に
書きに記載された技術を使用して、再分割はデータレコードの流れを中断することなく動
的に実装され得る。いくつかの実施形態では、異なるパーティションの手法及び再分割の
トリガ基準は、例えば、クライアントが提供するパラメータまたはSMS制御ノードの発
見に基づいて異なるデータストリームに使用され得る。いくつかの実施形態では、再分割
の数及び/または頻度を制限することが可能であり得る。例えば、クライアントの好み、
ストリームの予想耐用期間またはその他の要因である。
いくつかの異なるレコード取り込みポリシ及びインタフェースは、異なる実施形態にお
いて実装され得る。例えば、いくつかの実施形態では、クライアント(例えば、SMSの
顧客に代わってSMSのプログラムによるインタフェースを起動するよう構成された実行
可能なコンポーネントまたはモジュール)は、インラインサブミッションインタフェース
またはバイリファレンスサブミッションインタフェースの何れにも利用し得る。その実施
形態において、インラインサブミッションには、データレコードのコンテンツまたは本文
がサブミッション要求の一部として含まれ得る。対照的に、バイリファレンスサブミッシ
ョン要求においては、アドレス(記憶装置アドレス、データベースレコードアドレスまた
はURL(ユニフォームリソースロケータ))は、データレコードのコンテンツまたは本
文が取得され得るところから提供され得る。いくつかの実装においては、ハイブリッドサ
ブミッションインタフェースも、または代わりに支援され得る。データレコードの第1の
Nバイトはインラインに含まれ得る。それに対し、残りのバイト(可能ならば)は、参照
により提供される。このような場合には、短いレコード(その本文がNバイトの長さ未満
である)はサブミッション要求によって十分に指定され得るが、一方、それよりも長いレ
コードの部分は対応するアドレスから入手し得る。
取り込み中のレコードコンテンツを指定するための異なる選択肢に加え、いくつかの実
施形態では、様々な応答または複製排除に関連する取り込みポリシもまた、実装され得る
。例えば、いくつかのストリームアプリケーションには、クライアントはそれぞれ及び全
てのデータレコードがSMSによって確実に取り込まれることを確保したい場合がある。
大規模に分散されるストリーム管理環境においては、データ生成部と取り込みノードとの
間のパスに沿ってパケットは破損するか、様々な障害が時折起こり得、これはいくつかの
送信されたデータを潜在的に失う結果となり得る。したがって、いくつかの実施形態では
、レコード送信者は、同じレコードを、肯定応答が取り込みサブシステムから受信される
まで、1度以上送信し得ることにより、SMSは少なくとも1回の取り込みポリシを実装
し得る。通常の操作環境下では、レコードは一度送信されてよく、送信者は受信する取り
込みノードがレコードを取得し格納した後に応答を受信してよい。応答が損失されたか遅
延した場合、またはレコード送信要求自体が損失された場合には、送信者は、最終的に応
答が受信されるまで、同じデータレコードを1度以上再送信してよい。例えば、応答がす
でに送信者によって受信されていた場合、レコードは再送信されないという予想に基づい
て、取り込みノードは、送信が複製であるか否かにかかわらず、各送信に対し応答を生成
し得る。しかしながら、取り込みノードは、少なくともいくつかの実施形態では、同一の
データレコードは複数回送信されたことを認識し、複製のデータの新しいコピーを不必要
に記憶することを避ける役割をし得る。一実施形態では、少なくとも1回の取り込みポリ
シの少なくとも2つのバージョンは、(「少なくとも1回の取り込み、複製不可」と称さ
れ得る)、SMSがデータレコードを複製排除する役割をする(すなわち、2つまたはそ
れ以上の送信のセットの1つのみに対応して、データがSMS記憶サブシステムに格納さ
れることを確実にする)1つのバージョン、及び、(「少なくとも1回、複製可」と称さ
れ得る)SMSによってデータレコードストレージの複製が許可される1つのバージョン
を支援され得る。少なくとも1回の複製が許可された手法は、データレコードの複製の否
定的な結果が少数であるか、全く無いストリームアプリケーション、及び/またはそれ自
身の複製を排除を実行するストリームアプリケーションには有用であり得る。その他の取
り込みポリシもまた、応答が送信されたデータレコード毎に必要とされないベストエフォ
ートの取り込みポリシのように支援され得る。少数のデータレコードの損失は、ベストエ
フォートの取り込みポリシが少なくともいくつかの実施形態で有効である場合に受け入れ
可能であり得る。クライアントは様々な実施形態における様々なストリームに使用を希望
する取り込みポリシを選択し得る。
ストリームレコードの記憶に関しては、いくつかの代替的なポリシもまた、少なくとも
いくつかの実施形態で支援され得る。例えば、クライアントはSMSによって支援される
いくつかのうちから永続性のポリシを選択可能であってよく、これは格納されるべき所与
のデータレコードのコピーの数として、このようなレコードの記憶の態様を管理し、記憶
技術の種類(例えば、揮発性または不揮発性RAM、回転ディスクベースのストレージ、
固体装置(SSD)、ネットワーク接続記憶装置等)がコピー等に使用され得る。例えば
、クライアントがディスクベースのストレージサーバへのN−レプリカ永続性ポリシを選
択する場合、データレコードの送信は、レコードのNコピーがNの各ディスク装置に安全
に書き込まれるまで完全であると考えられない可能性がある。ディスクベースの記憶装置
が使用される少なくともいくつかの実施形態では、SMS記憶サブシステムは、例えばデ
ィスクシークのパフォーマンスインパクトを避けるために、順次、ディスクに対して所与
のパーティションの入ってくるデータレコードの書き込みを試み得る。シーケンス番号は
、例えば、取り込み時間に基づいて並べられたレコード検索を可能にするタイムスタンプ
に基づいた技術を含む、様々な下記の技術を使用してデータレコードに生成(かつ記憶)
され得る。少なくともいくつかの実施形態では、所与のパーティションのデータレコード
は、例えば、ディスクに連続的に、及びその他のパーティションのデータレコードから分
離して一緒に記憶され得る。いくつかの実装においては、(クライアント若しくはSMS
によって選択された)保持ポリシまたは(任意の所与のデータレコードの送信後の期間を
表示し、その間、いくつかの複製が送信されたとしてもSMSは、複製のないその所与の
データレコードが、SMS記憶サブシステムに格納されることを確保する必要があり得る
)複製排除時間窓ポリシによれば、少なくともいくつかのデータレコードは、異なる種類
のストレージサービスに移され得る及び/またはSMSからある期間の後に削除され得る
。このような除去の操作は、本明細書においては、「トリミング」と称し得る。クライア
ントはいくつかの実施形態では、ストリームをトリミングする要求を送信し得る。例えば
、SMSに指定のデータレコードはもはや必要されておらず、そのためトリミング要求を
送信するクライアントの見地から、削除が可能であることを通知するか、または指定のデ
ータレコードの削除を明示的に要求する。多数のクライアントが所与のストリームのデー
タレコードを使用する可能性がある場合では、SMSは、すべての関係コンシューマによ
ってアクセスされる前に、所与のレコードが尚早に削除またはトリミングされないことを
確実にする役割があってよい。いくつかの実装においては、所与のストリームのNデータ
コンシューマがある場合には、ストリームの所与のレコードRを削除する前に、SMSは
すべてのNデータコンシューマがRを読み出しまたは尚早に処理したことを判定するまで
待機し得る。例えば、コンシューマからの各トリミング要求に基づいて、または、ストリ
ーム内でデータコンシューマがどのくらい進んでいるかというそれぞれの表示に基づいて
、Rはすべてのコンシューマによって読み込まれたと、SMSは判定し得る。いくつかの
実施形態では、データコンシューマの(テストに関連するアプリケーションのような)い
くつかの種類は、アクセスされる前に、少なくとも一部の部分のデータレコードの削除を
受け入れ得る。したがって、アプリケーションは、少なくともいくつかの実施形態におい
ては、検索前にデータ削除の受容性に関してSMSに通知可能であってよく、及びSMS
はその通知によって削除を予定し得る。いくつかの実施形態では、例えば、データ保持ポ
リシの一部として、保存用のポリシが実装されてよく、例えば、ストリームデータレコー
ドがコピーされるべき記憶装置の種類を表示し、ポリシがこのようなコピーへの使用とを
予定する。
少なくともいくつかの実施形態においては、複数のプログラムによるインタフェースも
また、レコード検索のために支援され得る。一実施形態では、イテレータベースの手法が
使用されてよく、一プログラムによるインタフェース(例えば、getIterator
)はインスタンス化し、イテレータまたはカーソルを指定の理論オフセットに配置するた
めに、ストリームのパーティション内で(例えば、シーケンス番号またはタイムスタンプ
に基づいて)使用され得る。次に(getNextRecordのような)異なるプログ
ラムによるインタフェースは、イテレータの現在位置から順次開始する指定の数のデータ
レコードを読み込むために使用され得る。イテレータのインスタンス化は、要するに、ク
ライアントが恣意的または無作為の開始位置を、ストリームパーティション内でレコード
検索するために特定することを可能にし得る。クライアントがこのような実施形態で無作
為なアクセスパターンでデータレコードの読み出しを希望する場合には、クライアントは
繰り返し新しいイテレータを生成しなくてはならない場合がある。回転ディスクベースの
記憶システムにおいては、頻繁なランダムアクセスに必要とされるディスクシークは、I
/O応答回数に著しく影響を与える場合がある。したがって、ストリームデータレコード
を無作為に読み込むよりも順次に読み込むことをクライアントに促すために、少なくとも
いくつかの実施形態では、異なる(例えば高い)課金率が、シーケンシャルリードアクセ
スに適用されるよりも、ランダムリードアクセスに適用され得る。したがって、いくつか
の実装においてはX>Yの状態で、例えば、クライアントはgetIterator通話
毎にX通貨単位で、及び、レコード検索毎にgetNextRecordを介しY通貨単
位請求され得る。代替的なクライアントインタフェースが、(取り込みのような)その他
の操作カテゴリに支援される場合、少なくともいくつかの実施形態では、課金率または代
替物の価格もまた、異なり得る。クライアントがシーケンシャルリードよりもランダムリ
ードにより課金され得るのと同様に、例えば、クライアントは、オンラインの送信要求よ
りもバイリファレンスの送信要求により課金され得る。データレコードのサイズ、時間の
経過とともに書き込み対読み出し要求の分散、選択された永続性ポリシ等のような、その
他の要因もまた様々な実施形態において課金に影響し得る。
いくつかの実施形態によると、ストリーム処理サービス(SPS)は、クライアントが
、多数の処理ステージを含む複雑な処理ワークフローを適宜、特定することを可能にし、
所与のステージで実行される処理の出力が、ゼロまたはそれ以上のその他のステージ用に
入力として使用され得る。パーティションポリシ(データレコードの取り込み、格納及び
検索のためのSMSに記載されるものに類似)は、いくつかの実施形態における様々なス
テージで複数のワーカノードのうち処理中のワークロードを分割するために使用され得る
。このような一実施形態では、プログラムによるSPSインタフェースは、クライアント
が任意の所与のステージのために様々な構成設定を特定可能なように実装されてよく、例
えば、ステージのために入力データソース(単数または複数)(例えば、ストリーム用の
パーティションポリシと一緒に、データレコードが検索される1つ以上のストリーム)、
ステージで実行される処理操作、及びステージからの出力または結果の分散のためディス
クリプタまたは指定(例えば、出力が記憶位置に保存され、ネットワークの終点に送信さ
れ、または異なるストリームの形式で1つ以上のその他のステージに入力されるか否かを
問わず)を含む。少なくともいくつかの実施形態では、SPSステージのために指定され
る処理操作は冪等であり得る。すなわち、所与の処理操作が同じ入力データで複数回実行
される場合、操作の結果は、操作が1回のみ実行された場合に得られたであろう結果とは
異ならない。さらに詳細に後述のように、破損からのリカバリ(例えば、SPSステージ
でのワーカノードの損失)は、処理操作が冪等の場合、簡略化され得る。いくつかの実施
形態によると、非冪等の処理操作はいくつかのまたはすべてのSPSステージで許可され
得る。
入力ストリームパーティションポリシ及び次にSPSプログラムによるインタフェース
を介して受信される処理操作の性質のような構成情報に少なくとも部分的に基づいて、様
々な実施形態では、処理ワークフローの様々なステージのために、どのくらいの数のワー
カノードが最初に設定されるべきかをSPS制御サーバは判定し得る。ワーカノードに使
用されるリソースの遂行能力(例えば、使用される仮想マシンまたは物理マシン)もまた
、初期番号及びワーカノードの配置を決定する際に、考慮され得る。選択されたワーカノ
ードの番号は、インスタンス化され得る(いくつかの実装では、実行可能なスレッドまた
は実行可能なプロセスをそれぞれ備える)。各ワーカノードは、例えば、適切な入力ソー
スからデータレコードを(例えば、1つ以上のストリームパーティションの検索ノードか
ら)取得し、データレコードで指定された処理操作を実行し、及び指定された宛先(単数
または複数)に処理の結果を伝送するよう構成され得る。加えて、少なくともいくつかの
実施形態では、パーティションレコードが連続して処理される仮定で、所与のワーカノー
ドは、そのワーカノードで処理されてきたプログレスレコードまたはパーティションの一
部を示すチェックポイントを格納するよう構成され得るにしたがい、チェックポイントの
スキームが実装され得る。いくつかの実装において、例えば、ワーカノードは、プログレ
スレコードを永続性ストレージに定期的(例えば、N秒毎に1度、またはRデータレコー
ドに1度が処理されている)に及び/またはSPS制御サーバからチェックポイントの要
求に対応して、書き込みしてよい。
いくつかの実施形態では、プログレスレコードはワーカノードの破損から迅速にリカバ
リするために使用され得る。例えば、SPS制御サーバは、(CPU利用、I/O装置利
用またはネットワーク利用レベルのような)例えば、ハートビート機構の使用及び/また
はリソース利用レベルの監視により、様々なワーカノードの健康状態を時間の経過ととも
に監視し得る。特定のワーカノードが好ましくないまたは健康ではない状態にあるとのS
PS制御サーバによる判定に対応して(例えば、応答しないかオーバーロードの場合)、
交換されたワーカノードは特定のワーカノードの役割を引き継ぐためにインスタンス化さ
れ得る。交換されたワーカノードは、交換されたワーカノードによって格納された最新の
プログレスレコードにアクセスして、交換されたワーカノードが処理すべきデータレコー
ドのセットを識別し得る。処理操作が冪等である実施形態では、いくつかの操作が繰り返
されていても(例えば、最新のプログレスレコードが交換されたワーカのインスタンス化
以前のある時に書き込まれたため)、処理全体の結果は破損及び交換の影響を受けないで
あろう。いくつかの実装においては、所与のストリームのサブセットまたはこのサブセッ
トによって処理されたパーティションを表すプログレスレコードを格納することに加えて
、ワーカノードもまた、蓄積されたアプリケーション状態の情報を格納するよう構成され
得る。例えば、ストリーム処理ワークフローは、サービス使用メトリクスを表すストリー
ミングデータレコードの分析に基づいて特定のサービスのためクライアント課金額を決定
する役割をする場合には、ワーカノードは、様々なクライアントに決定された累積の課金
額を定期的に格納し得る。
少なくともいくつかの実施形態では、SPS制御サーバは、また、様々なステージのた
めの入力ストリームの動的再分割の要求のようなその他の動作を開始し、所与のステージ
で所与のパーティションに割り当てられたワーカノードの数の変更し、いくつかのステー
ジにより高い性能のワーカノードの割り当てし、または異なる性能能力で1つの物理リソ
ースから別の物理リソースへワーカノードの伝達することによって、ワークロードレベル
若しくは検出されたワークロードの不均衡(例えば、1つのパーティションに対する取り
込みレートがその他のものよりも不均衡に高くなっている場合)の変更のような、様々な
その他のトリガに、応答するよう構成され得る。いくつかの実施形態では、例えば、ベス
トエフォートリカバリポリシは、チェックポイントベースのリカバリポリシよりもむしろ
、所与のステージのために実装されるSPS制御サーバによる判定に対応して、上記に記
載した種類のプログレスレコードは、少なくともいくつかのSPSステージのワーカノー
ドによって格納されない場合がある。このようなベストエフォートリカバリポリシのいく
つかの実装においては、交換されたワーカノードは、プログレスレコードにアクセスする
必要なく、受信された際に新しいデータレコードを単純に処理し得る。いくつかの実施形
態では、クライアントがSPSステージでベストエフォートリカバリポリシの実装を希望
する場合には、ステージで実行されるストリーム処理操作は必ずしも冪等である必要はな
い。非冪等の処理操作がSPSステージでストリームレコード上で実行されるいくつかの
実施形態では、チェックポイントベースのリカバリは支援されなくてよく、ベストエフォ
ートリカバリのような異なるリカバリスキームが使用され得る。少なくとも一実施形態に
おいては、冪等ストリーム処理操作のみがSPSステージ許容され得る。
いくつかのストリームのデータレコードは、秘密または機密情報を含み、またはSPS
ステージで実行される処理操作は、競合相手による発見は問題となり得る著作権のあるア
ルゴリズムの使用を含み得る。そのため、クライアントは様々なカテゴリのストリーム管
理及び処理操作のセキュリティについて、特に操作が、クライアント自身によって完全に
制御されないプロバイダネットワークデータセンタに配置されるリソースを使用して実行
される場合、関心があり得る。インターネット及び/またはその他のネットワークを介し
て分散されたクライアントのセットにアクセス可能な(様々な種類のクラウドベースのデ
ータベース、電算処理またはストレージサービスのような)1つ以上のネットワークにア
クセス可能なサービスを提供する会社または公的部門の組織のようなエンティティによっ
て設定されるネットワークは、本明細書ではプロバイダネットワークと称され得る。いく
つかの実施形態では、クライアントはデータストリームのために、複数のセキュリティに
関連する選択肢のうちから選択可能であり得る。上記のように、組み合わされたSPS及
びSMSの構成は、SMS及び/またはSPS用の制御ノード、SMS取り込みノード、
SMS記憶ノード、SMS検索ノード及びSPS処理若しくはワーカノードのような、異
なる機能のカテゴリのいくつかに属するノードを備え得る。いくつかの実施形態では、ク
ライアントが入手可能であるセキュリティに関連する選択肢は、様々な種類のノードの位
置または配置のため選択肢を含み得る。例えば、一実施形態では、クライアントは、たと
えストリームレコードが当初、プロバイダネットワークに配置されるリソースを使用して
収集及び/または格納されても、ストリームワークフローの1つ以上の処理ステージのた
めのSPSワーカノードは、クライアント所有の設備に配置された計算装置に実装される
ことを要求することが可能であり得る。このような配置要求に対応して、所与のストリー
ムのための異なる機能カテゴリのノードは、異なるセキュリティ特性またはプロフィール
とセットで各リソースでインスタンス化され得る。
リソースセットは、異なる実施形態において、例えば、物理位置、使用される物理セキ
ュリティプロトコル(例えば、リソースへの物理アクセルを有するもの)、ネットワーク
隔離レベル(例えば、リソースのネットワークアドレスが様々なエンティティに可視であ
る範囲)、マルチテナント対シングルテナント等を含む、様々なセキュリティに関連する
特性が互いに異なり得る。いくつかの実施形態では、クライアントのIVN内に含まれた
様々な装置のネットワーク構成を実質的に制御する所与のクライアントとともに、クライ
アントは、プロバイダネットワーク内に隔離された仮想ネットワーク(IVN)を確率し
得る。特に、クライアントは、様々なサーバまたはIVN内のコンピュートインスタンス
に割り当てられたネットワークアドレス(例えば、インターネットプロトコルまたはIP
アドレス)にアクセスすることを制限し得る。このような実施形態においては、クライア
ントはSMSノードまたはSPSノードの一定のサブセットが特定のIVN内でインスタ
ンス化されることを要求し得る。仮想インスタンスホスト(典型的にはマルチテナントホ
ストとして構成され得る)のようなプロバイダネットワークリソースが、SMSノードま
たはSPSノードの様々なカテゴリに使用される実施形態では、クライアントは、いくつ
かのセットのノードは、クライアントのみに属するインスタンスの実装を制限されるイン
スタンスホスト上でインスタンス化されることを要求し得る(すなわち、いくつかのSM
SノードまたはSPSノードはシングルテナントホストとして構成されたインスタンスホ
ストに実装され得る)。
いくつかの実施形態では、別のセキュリティ関連の選択肢としては、クライアントは、
特定のストリームのデータレコードは、例えば、SMSに取り込まれる前に、取り込みと
記憶サブシステムとの間、記憶サブシステムと検索サブシステムとの間、検索サブシステ
ムとSPSワーカノードとの間、及び/またはワーカノードとSPS出力宛先との間のネ
ットワークリンクから伝送される前に暗号化されることを要求し得る。クライアントはい
くつかの実施形態にて使用される暗号化アルゴリズムを特定し得る。一実施形態では、T
LS(トランスポート層セキュリティ)またはSSL(セキュアソケット層)プロトコル
のようなセキュアなネットワークプロトコルは、データレコードの伝送及び/またはSP
S処理結果の伝送に使用され得る。
データストリームのコンセプト及び概略
図1は、少なくともいくつかの実施形態による、データストリームの構想の簡略化した
概略を提供する。ここに示すように、ストリーム100は、DR110A、110B、1
10C、110D及び110Eのような複数のデータレコード(DR)110を備え得る
。データ生成部120A及びデータ生成部120Bのような1つ以上のデータ生成部12
0(データソースとも称され得る)ストリーム100のデータレコードの内容を生成する
ために書き込み操作151を実行し得る。いくつかの異なる種類のデータ生成部は、例え
ば、携帯電話あるいはタブレットアプリケーション、センサアレイ、ソーシャルメディア
プラットフォーム、ロギングアプリケーションあるいはシステムロギングコンポーネント
、種々のモニタリングエージェント等のような、異なる実施形態においてデータのストリ
ームを生成し得る。(データコンシューマ130A及びデータコンシューマ130Bのよ
うな)1つ以上のデータコンシューマ130は、データ生成部120によって生成された
データレコードの内容にアクセスするために読み出し操作152を実行し得る。いくつか
の実施形態では、データコンシューマ130は、例えば、ストリーム処理ステージのワー
カノードを備え得る。
少なくともいくつかの実施形態では、SMSに記憶される際の所与のデータレコード1
10はデータ部分101(例えば、それぞれDR110A,110B,110C,110
D及び110Eのデータ部分101A、101B、101C、101D及び101E)及
びシーケンス番号SN102(例えば、それぞれDR110A,110B,110C,1
10D及び110EのSN102A、102B、102C、102D及び102E)を備
え得る。シーケンス番号102は記載された実施形態において、DRはストリーム管理シ
ステム(またはストリーム管理システムの特定のノード)で受信された順序であることを
示し得る。データ部分101はいくつかの実装においては、変更不能な解釈されないバイ
ト列を含み得る。すなわち、書き込み操作152が完了すると、書き込みの結果として生
じたDRの内容は、SMSによって変更されなくてよく、一般にSMSはデータの意味を
認識しなくてよい。いくつかの実装においては、所与のストリーム100の異なるデータ
レコードは、異なる量のデータを含み、それに対しその他の実施形態では、所与のストリ
ームの全てのデータレコードは同じサイズであり得る。少なくともいくつかの実装におい
ては、SMSのノード(例えば、取り込みサブシステムノード及び/または記憶サブシス
テム)は、SN102を生成する役割をし得る。さらに詳細に後述のように、データレコ
ードのシーケンス番号は、必ずしも連続とは限らない。一実装においては、クライアント
またはデータ生成部120は、書き込み要求の一部として、対応するデータレコードに使
用される最小のシーケンス番号の表示を提供し得る。いくつかの実施形態では、データ生
成部120は、データレコードのデータの一部(またはアドレス)にポインタを含む書き
込み要求を、例えば、(装置名及び装置内のオフセットのような)記憶装置のアドレスま
たはデータ部分が取得され得る(URLのような)ネットワークアドレスを提供すること
によって送信し得る。
様々な実施形態では、ストリーム管理サービスは、データ生成部120からデータを受
信し、データを格納し、及びデータコンシューマ130を1つ以上のアクセスパターンに
おいてデータをアクセス可能にする役割をし得る。少なくともいくつかの実施形態では、
ストリーム100は、データレコードを受信し、格納し、及び検索するワークロードを分
散するためにパーティション化または「分割」され得る。このような実施形態においては
、パーティションまたは分割は、データレコードの1つ以上の属性に基づいて入ってくる
データレコード110のために選択され、及びデータレコードを取り込みし、格納しまた
は検索する特定のノードは、パーティションに基づいて識別され得る。いくつかの実装に
おいては、データ生成部120は、パーティションの属性として機能し得る各書き込み操
作を明示的なパーティションキーに提供し、及びこのようなキーはパーティション識別子
にマッピングされ得る。その他の実施形態においては、SMSは、データ生成部120の
識別、データ生成部のIPアドレスの要因に基づいて、または送信されたデータの内容に
基づいて、パーティションIDを推測し得る。データストリームがパーティション化され
るいくつかの実装においては、シーケンス番号はパーティション毎に割り当てられ得る。
例えば、シーケンス番号は、特定のパーティションのデータレコードが受信される順序を
示すが、2つの異なるパーティションにおけるデータレコードDR1及びDR2のシーケ
ンス番号は、DR1及びDR2が受信された関連する順序を必ずしも示さない可能性があ
る。その他の実装においては、データレコードDR1に割り当てられたシーケンス番号S
N1がデータレコードDR2に割り当てられたシーケンス番号SN2よりも低い場合には
、DR1及びDR2がどちらのパーティションに属するかに関わらず、これは、DR1は
SMSによってDR2よりも前に受信されたことを示すように、シーケンス番号はパーテ
ィション毎のベースよりもむしろストリーム幅に割り当てられ得る。
様々な実施形態では、SMSによって支援される検索または読み出しインタフェースは
、データコンシューマ130がデータレコードに連続して及び/または無作為の順番でア
クセスするのを可能にし得る。一実施形態では、イテレータベースの読み出しアプリケー
ションプログラミングインタフェース(API)のセットは支援され得る。データコンシ
ューマ130は、特定のシーケンス番号及び/またはパーティション識別子によって表さ
れたイテレータの初期の位置とともに、データストリームのためにイテレータを取得する
よう要求を送信し得る。イニシエータがインスタンス化された後、データコンシューマは
、ストリーム内またはパーティション内の初期位置から始まるシーケンスの順序で、デー
タレコードを読み込むために要求を送信し得る。データコンシューマが何らかの無作為の
順序でデータレコードを読み込みたい場合には、このような実施形態では、新しいイテレ
ータは各読み出しのためにインスタンス化しなければならない場合がある。少なくともい
くつかの実装においては、所与のパーティションまたはストリームのデータレコードは、
典型的にはディスクシークを避ける連続的な書き込み操作を使用して、シーケンス番号順
でディスクベースのストレージに書き込まれ得る。シーケンシャル読み出し操作はまた、
ディスクシークのオーバーヘッドを避け得る。したがって、いくつかの実施形態では、デ
ータコンシューマは無作為の読み出しよりもシーケンシャルな読み出しを実行することを
価格で動機付けして奨励され得る。例えば、イテレータのインスタンス化のような、ラン
ダムアクセス読み出し操作はシーケンシャルにアクセスする読み出し操作よりも高い関連
する課金率を有し得る。
システム環境の例
図2は、少なくともいくつかの実施形態による、ストリーム処理ステージの収集を含む
、ストリーム管理システム(SMS)及びストリーム処理システム(SPS)の様々なサ
ブコンポーネントの間のデータの流れの概略を提供する。ここに示すように、SMS28
0は取り込みサブシステム204、記憶サブシステム206,検索サブシステム208及
びSMS制御サブシステム210を備え得る。後述のように、SMSサブシステムのそれ
ぞれは、1つ以上のノードまたはコンポーネントを含んでよく、例えば、対応する実行可
能なスレッドまたはプロバイダネットワーク(またはクライアント所有設備か第三者の設
備)の様々なリソースでインスタンス化されるプロセスを使用して実装される。取り込み
サブシステム204のノードは、ストリームに使用されるパーティションポリシに基づい
て、(120A、120B、及び120Cのような)データ生成部120から特定のデー
タストリームのデータレコードを取得するよう、(例えば、SMS制御サブシステム21
0のノードによって)構成され、各取り込みノードは、記憶サブシステム206の対応す
るノードに受信されたデータレコードを渡し得る。記憶サブシステムのノードは、ストリ
ームのために選択された永続性ポリシにより、様々な種類の記憶装置の何れかに、データ
レコードを保存し得る。検索サブシステム208のノードは、SPS290のワーカノー
ドのようなデータコンシューマからの読み出し要求に応答し得る。SPS290のステー
ジ215A、ステージ215B、ステージ1215C及びステージ215Dのようなスト
リーム処理ステージ215は、SPS制御サブシステム220の助けによって確立され得
る。各ステージ215は、受信されたデータレコードで処理操作のセットを実行するSP
S制御サブシステム220によって構成された1つ以上のワーカノードを含み得る。ここ
に示すように、(215A及び215Bのような)いくつかのステージ215は、SMS
280から直接データレコードを取得し得る。一方、(215C及び215Dのような)
その他は、その他のステージから入力を受信し得る。多数のSPSステージ215は、い
くつかの実施形態においては並行して操作し得る。例えば、異なる処理操作は、ステージ
215A及びステージ215Bで同じストリームから検索されたデータレコード上で同時
に実行され得る。特定のストリーム用の、図2に示されたものと類似する、それぞれのサ
ブシステム及び処理ステージは、また、その他のストリームもインスタンス化され得るこ
とに注意する。
少なくともいくつかの実施形態においては、図2に示されているサブシステム及び処理
ステージのノードのうち少なくともいくつかは、プロバイダネットワークリソースを使用
して実装され得る。前述したように、インターネット及び/またはその他のネットワーク
を介して分散されたクライアントのセットにアクセス可能な(様々な種類のクラウドベー
スのデータベース、電算処理またはストレージサービスのような)1つ以上のネットワー
クにアクセス可能なサービスを提供する会社または公的部門の組織のようなエンティティ
によって設定されるネットワークは、本明細書ではプロバイダネットワークと称され得る
。サービスのいくつかは、より高いレベルのサービスを構築するために使用され得る。例
えば、算出、記憶またはデータベースサービスは、ストリーム管理サービスまたはストリ
ーム処理サービスのためのビルディングブロックとして使用され得る。プロバイダネット
ワークの少なくともいくつかのコアサービスは、「インスタンス」と呼ばれるサービスユ
ニットにおいてクライアントが使用するためにパッケージ化され得る。例えば、仮想計算
サービスによってインスタンス化される仮想マシンは、「コンピュートインスタンス」を
表し、及びストレージサービスによってインスタンス化されるブロックレベルのボリュー
ムのような記憶装置は、「ストレージインスタンス」と呼ばれることもあり、またはデー
タベース管理サーバは「データベースインスタンス」と呼ばれることもある。プロバイダ
ネットワークの様々なネットワークにアクセス可能なサービスの装置が実装される、サー
バのような計算装置は、本明細書では、「インスタンスホスト」またはより簡単に「ホス
ト」と呼ばれ得る。いくつかの実施形態では、取り込みサブシステム204のノード、記
憶サブシステム206、検索サブシステム208、SMS制御システム210、処理ステ
ージ215及び/またはSPS制御サブシステム220は、複数のインスタンスホスト上
の様々なコンピュートインスタンスで実行するスレッドまたはプロセスを備え得る。及び
/またはSPS制御サブシステム220は、複数のインスタンスホスト上の様々なコンピ
ュートインスタンスで実行するスレッドまたはプロセスを備え得る。所与のインスタンス
ホストはいくつかのコンピュートインスタンス及び特定のインスタンスホストでコンピュ
ートインスタンスでの収集は、1つ以上のクライアントの様々な異なるストリームのため
にノードを実行するために使用され得る。ストレージインスタンスは、いくつかの実施形
態では、様々なストリームのデータレコードを記憶するために使用されるか、ストリーム
処理ステージの結果の宛先であり得る。図15及び図16を参照すると、以下に記載され
るように、データレコードを依然、受信、記憶及び処理し続ける間、時間の経過とともに
、例えば、ノードを追加または削除、ノードのマッピングをコンピュートインスタンスま
たはインスタンスホストに変更または所与のストリームを再分割することによって、制御
サブシステムは、様々なトリガ条件に対応してその他のサブシステムの人口を動的に修正
し得る。
プロバイダネットワークリソースがストリームに関連した操作に使用される実施形態と
の関係においては、「クライアント」という用語は、所与の通信のソースまたは宛先とし
て使用される場合、(多数のユーザまたは単一のユーザを有する組織、グループのような
)エンティティに所有され、管理されまたは割り当てられる、計算装置、プロセス、ハー
ドウェアモジュールまたはソフトウェアモジュールのいずれかを意味し得る。プロバイダ
ネットワークの少なくとも1つのネットワークにアクセス可能なサービスにアクセスし、
利用することが可能なあるサービスのクライアントは、別のサービスのリソースを使用し
て自身が実装され得る。例えば、ストリームデータコンシューマ(ストリーム管理サービ
スのクライアント)は、コンピュートインスタンス(仮想化された計算サービスによって
提供されたり)を備え得る。
所与のプロバイダネットワークは、物理的及び/若しくは仮想化されたコンピュータサ
ーバの収集、それぞれに1つ以上の記憶装置を備えるストレージサーバ及びネットワーク
機器等のような、様々なリソースツールをホストする(異なる地理的領域にわたって分散
され得る)多数のデータセンタを含んでよく、プロバイダによって提供されるインフラス
トラクチャ及びサービスを実装、構成及び分散する必要がある。いくつかの異なるハード
ウェア及び/またはソフトウェアコンポーネントは、そのいくつかはインスタンス化され
るか、異なるデータセンタまたは異なる地理的領域で実行され得るが、様々な実施形態に
おけるサービスのそれぞれを実装するために一括して使用され得る。クライアントは、プ
ロバイダネットワークの外部にあるクライアント所有またはクライアント管理の構内若し
くはデータセンタに位置される装置及び/またはプロバイダネットワーク内装置から、プ
ロバイダネットワークでリソース及びサービスと相互作用し得る。プロバイダネットワー
クは、本明細書で記載される多くのストリーム管理技術及びストリーム処理技術が実装さ
れる一例のコンテキストとしての役割をするが、これらの技術は、プロバイダネットワー
クよりもその他の種類の分散システムに、例えば、アプリケーションの単一ビジネスエン
ティティによって操作される大規模な分散環境に、適用され得ることに留意する。
プログラムによるインタフェースの例
上記のように、少なくともいくつかの実施形態では、SPSは、様々なストリームベー
スのアプリケーションに、所望のビジネスロジックを実装するために、SPSクライアン
トによってより容易に使用されることが可能な、より高いレベルの機能を構築するように
、SMSプログラムによるインタフェースを利用し得る。SPSとSMSの機能の違いを
考えると、類似性が有用である。SPSの機能は、一般に、C++のような、より高いレ
ベルの言語におけるプログラミング言語の構築と比較され得る。それに対してSMSの機
能は一般に、プログラミング言語構築はコンパイラによって変換されるアセンブリ言語命
令と比較され得る。アセンブリ言語命令を直接使用して同一の操作を実行することは可能
であり得るが、より高いレベルの言語におけるプログラミングは、一般に、顧客またはユ
ーザの多くのカテゴリにはより容易である。同様に、SMSによって供給された基本要素
を使用して、様々なアプリケーションを実行することは可能であり得るが、SPS特徴を
使用して行うことはより容易であり得る。SPS処理操作(データレコードで実行される
冪等の処理操作のような)は、ストリームレコードのデータコンテンツ上で実行され得る
。一方、SMS操作は、レコードのコンテンツを通常考慮せずに、SMS操作の取得、記
憶及び検索を実行する。図3は、少なくともいくつかの実施形態による、SMS及びSP
Sで実装され得るプログラムによるインタフェースのそれぞれのセットの例を示す。いく
つかの異なるアプリケーションプログラミングインタフェース(API)は、SMS及び
SPSの両方を例として指示する。示されているAPIは、任意の所与の実装で支援され
る網羅的なリストであることを目的としていない。示されているAPIのいくつかは、所
与の実装で支援されなくてよい。
矢印350で示されているように、SPSクライアント375は、SPSプログラムに
よるインタフェース305を起動して処理ステージを構成し得る。様々な種類のSPSプ
ログラムによるインタフェース305は、異なる実施形態において実装され得る。例えば
、createStreamProcessingStageAPIは、クライアントが
特定の入力ストリームのために新しい処理ステージ215の構成を要求を可能にし得る。
ステージのワーカノードは、インタフェースの起動で特定される、一連の冪等操作を実行
し、出力分散ディスクリプタまたはポリシによって表示された宛先に、結果を分散するよ
う、それぞれ構成される。createStreamProcessingStage
APIまたはその等価物のいくつかのバージョンにおいては、クライアントは入力ストリ
ームも同様に作成を要求し得る。一方、その他のバージョンでは、入力ストリームは、処
理ステージが作成される前に作成されなければならない可能性がある。リカバリポリシは
ワーカノードに指定されてよく、例えば、チェックポイントベースのリカバリ技術が使用
されるべきか否か、またはベストエフォートのリカバリ技術が好ましいか否かを示す。い
くつかの実施形態では、initializeWorkerNode APIは特定のス
テージでワーカノードの明示的なインスタンス化を要求するために支援され得る。チェッ
クポイントベースのリカバリが実装される実施形態では、saveCheckpoint
APIが、プログレスレコードがワーカノードによって生成されるようクライアントが
要求することが可能になるよう支援され得る。
様々な種類のSPS出力管理APIは、setOutputDistribution
APIのような、異なる実施形態において支援され得る。それによって、クライアント
は、特定のステージで実行される処理操作の結果を使用して、1つ以上のストリームが作
成されることを示してよく、及び、特定のパーティションポリシが新しく作成されたスト
リームに使用される。いくつかの処理ステージが再分割のために主に構成され得る。例え
ば、レコードの属性セットA1に基づいて、データレコードをN1パーティションにマッ
プする1つのパーティション機能PF1は入力ストリームS1に使用され、及びN2パー
ティションに、(異なる属性セットA2または同一の属性セットA1の何れかを使用して
)これらの同一のデータレコードをマップするために処理ステージは異なるパーティショ
ンの機能PF2を実装するように使用され得る。linkStageのような、いくつか
のSPS APIは、任意のグラフ(例えば、有向非巡回グラフ)を構成するために使用
され得る。いくつかの実施形態では、第三者またはオープンソースのストリーム処理フレ
ームワークまたはサービスへのコネクタが支援され得る。このような一実施形態において
は、SPSステージは、第三者またはオープンソースシステムが存在することによる消費
に、(例えば、ステージで実行される処理操作の結果を適切にフォーマットすることによ
って)データレコードを用意するために使用され得る。記載された実施形態において、c
reateThirdPartyConnectorのようなAPIは、このようなコネ
クタを設定するために使用されてよく、SPSステージの結果を適切に第三者システムと
互換性があるフォーマットへの変換は、createThirdPartyConnec
torの結果としてインスタンス化された、1つ以上のコネクタモジュールによって実行
され得る。
SPSは矢印352で示すように、少なくとも機能のいくつかを実行するために、SM
S API307を起動してよい。例えば、記載された実施形態では、SMS API3
07は、createStream及びdeleteStream(それぞれストリーム
を作成し削除するために)と、(所与のパーティションの役割をする、様々な種類のノー
ドのネットワークアドレスのように、ストリームのためにメタデータを取得するために)
getStreamInfoとを含み得る。putRecordインタフェースは、デー
タレコードを書き込むために使用され得る。一方、getIterator及びgetN
extRecordsインタフェースは、それぞれ、非シーケンシャルリードとシーケン
シャルリードに使用され得る。repartitionStreamインタフェースは、
いくつかの実施形態では、特定のストリームの動的再分割を要求するために使用され得る
。このようにすることを希望するクライアント370は、矢印354によって示されるよ
うに、直接SMS API307を起動し得る。上記のように、様々なその他のSMS及
び/またはSPS APIは、また、その他の実施形態で実装されてよく、図3に列挙さ
れたAPIのいくつかは、いくつかの実施形態で実装されなくてよい。
種々の実施形態では、以外のAPIプログラムによるインタフェースもまた、SPSま
たはSMSの代わりに、または何れかに実装され得る。このようなインタフェースはグラ
フィカルユーザインターフェース、ウェブページまたはウェブサイト、コマンドラインイ
ンタフェース等を含み得る。場合によっては、ウェブベースのインタフェースまたはGU
Iは、ビルディングブロックとしてAPIを使用し得る。例えば、ウェブベースの相互作
用は、SMSまたはSPSの制御コンポーネントで1つ以上のAPIの起動がもたらされ
る可能性がある。図4は、少なくともいくつかの実施形態による、SPSクライアントが
ストリーム処理ステージのグラフ生成を可能にするために実装され得るウェブベースのイ
ンタフェースの実施例を示す。ここに示すように、インタフェースは、メッセージ領域4
02、グラフメニュー領域404及びグラフデザイン領域403を有するウェブページ4
00を備える。
ユーザは、ストリームの概念及び基本要素についてより学習するために使用可能なリン
クと同様に、メッセージ領域402のストリーム処理グラフの構築に関する一般的な命令
を提供され得る。いくつかのグラフィカルアイコンは、メニュー領域404におけるスト
リーム処理グラフツールセットの一部として提供され得る。例えば、クライアントは、様
々なSPS処理ステージの入力または出力、永続性ストリーム451、一過性のストリー
ム452、または第三者の処理環境へのコネクタ453として示すことが可能である。ウ
ェブベースのインタフェースが実装されるSPS/SMSに関して、永続性ストリーム4
51は、ディスク、不揮発性RAMまたはSSDのようなデータレコードが永続性記憶装
置に格納されるストリームとして定義されてよく、一過性ストリーム452はデータレコ
ードが永続性記憶装置に格納される必要がないものとして定義されてよい。一過性ストリ
ームは、例えば、ベストエフォートリカバリポリシが実装される、異なるSPSステージ
によって入力として消費されることが予想されるSPSステージの出力から作成され得る
2つの種類の処理ステージが例示的なSPSグラフ構成ウェブページ400において支
援されている。チェックポイントベースのワーカノードリカバリが使用されるステージ4
55(例えば、各ワーカノードがインターバルでプログレスレコードを保存し、特定のワ
ーカノードの破損の場合、交換されたノードが、どのデータレコードが処理を始めるべき
か判断する、損失したノードのプログレスレコードを参照する)、及びベストエフォート
リカバリが使用されるステージ456が使用される(例えば、交換されたワーカノードは
プログレスレコードを参照せず、しかし受信されたときに新しいデータレコードを単に処
理し始める)。各ステージで実行される処理操作に関する詳細は、メッセージ領域402
における命令によって示されるように、グラフ構成領域403中の対応するアイコンをク
リックすることによって、入力され得る。ストリーム、コネクタ及び処理ステージのアイ
コンに加え、メニュー領域404はまた、第三者または外部のストリーム処理システムを
示すアイコンタイプ459を含む。アイコンタイプ460は、リソースが処理ステージに
使用される、プロバイダネットワークで実装され得るストレージサービスのノードを示す
図4に示されている例示的な場合においては、クライアントは、グラフデザイン領域4
03内に、3つの処理ステージ412、処理ステージ415及び処理ステージ416を備
えるグラフ405を構築した。処理ステージ412は、チェックポイントベースのリカバ
リを使用するよう構成され、入力として永続性ストリーム411を使用する。ステージ4
12での処理の出力または結果は、ステージ415の入力を形成する、異なる永続性スト
リーム413の形態で、及びステージ416の入力を形成する、一過性ストリーム414
の形態で、2つの宛先に送信される。ステージ415及びステージ416の両方は、ベス
トエフォートリカバリポリシをワーカノードに使用する。ステージ415の出力は、一過
性ストリームの形態でストレージサービスノード419に送信される。ステージ415の
出力は、コネクタ417を介して第三者処理システム418に送信される。「グラフを保
存」というボタン420は、例えば、JSON(JavaScript(登録商標) O
bjectNotation)、XML(Extensible Markup Lan
guage)またはYAML任意の適切なフォーマットで処理ステージのグラフの表示を
保存するために使用され得る。任意の複雑な処理ワークフローは、様々な実施形態で、図
4に示されたものに類似するツールを使用して構築され得る。このようなツールを使用し
て作成されたワークフローは、次にアクティブ化され、このようなアクティブ化は、例え
ば、図4のステージ412のような処理ステージのためにデータレコードを取得するため
に、SMS APIの起動がもたらされる可能性があり、getIterator及び/
またはgetNextRecordインタフェースは、ストリーム411上で起動され得
る。
図5は、少なくともいくつかの実施形態による、SMSで実装され得る、プログラミン
グによるレコードの送信インタフェース及びレコード検索インタフェースの実施例を示す
。図示された実施形態において、DR110K及び110Qのような、データレコードは
、様々な種類のプログラムによる取り込みインタフェース510を介してSMSに送信さ
れ得る。DR110は、いくつかの実施形態で、(ストリーム「S1」に)501Aまた
は(ストリーム「S2」に)501Bのようなストリーム識別子、データまたはレコード
本体の表示、(504Aまたは504Bのような)任意のパーティションキー504及び
(順序付け設定表示506A及び順序付け設定表示506Bのような)任意の順序付け設
定表示506の、4つの種類の要素を備え得る。データ自体は、いくつかのレコード(例
えば、DR110Kのインラインデータ502)においてインラインにて提供されてよい
。一方、その他のデータレコードには、ポインタまたはアドレス503が提供されてよく
、SMS(またはネットワークの転送を必要としないローカルデバイスのアドレス)にネ
ットワークにアクセス可能な位置を表示する。いくつかの実施形態では、所与のストリー
ムは、インライン及びバイリファレンス(アドレスベース)データレコード送信の送信に
よって支援し得る。その他の実施形態では、所与のストリームは、すべてのデータをイン
ラインで、またはすべてのデータを参照によって供給するためにデータ生成部を必要とし
得る。いくつかの実装においては、データレコードの送信は、パーティション識別子がレ
コードに使用されることを含み得る。
図示された実施形態において、入力データレコード110は、パーティションポリシに
基づいて、それぞれの取り込み及び/またはストレージノードに向けられ得る。同様に、
レコードの検索もパーティションベースであり得る。例えば、1つ以上の検索ノードは所
与のパーティションのレコードに向けられた要求の読み取りに対応して指示され得る。い
くつかのストリームには、データ生成部は、明示的にパーティションキーに各データレコ
ード書き込み要求を提供することを必要とし得る。その他のストリームには、SMSは、
明示的に与えられたパーティションキー以外のメタデータまたは属性に依存するパーティ
ションスキームによるデータレコードを分散することが可能であり得る。例えば、データ
生成部への送信に関する識別情報は、パーティションキーとして使用され得る。またはデ
ータ生成部のIPアドレスの一部若しくはすべての送信データが使用されるか、送信され
るデータの一部が使用され得る。いくつかの実装においては、例えば、ハッシュ関数が、
128ビット整数のような特定のサイズの整数値を取得するために、パーティションキー
に適用され得る。そのサイズの正の整数の全範囲(例えば、0から2128−1)は、
N連続副範囲に分けられてよく、対応するパーティションを表す各副範囲を備え得る。こ
のため、このような実施例においては、データレコードのために決定され、または供給さ
れる任意の所与のパーティションキーは、128ビット整数値に対応してハッシュされ、
整数値が属する128ビット整数値の連続副範囲は、データレコードが属するパーティシ
ョンを表し得る。さらにパーティションポリシ及びその使用についての詳細は、図15に
関して下記に提供され得る。
特定のパーティションのデータレコードを取り込みまたは受信、データレコードの格納
、及び特定のパーティションに対する読み込み要求に応答する役割をするノードのセット
は、図5のパーティション用のISR(取り込み、記憶及び検索)ノードと総称される。
Sj−Pkという表記は、ストリームSiのk番目のパーティションを表すために使用さ
れる。図示した実施形態では、ISRノード520Aは、パーティションS1〜P1のレ
コードを取り込み、格納及び検索するように構成され、ISRノード520Bはパーティ
ションS1〜P2のレコードを設定し、ISRノード520Cは、パーティションS1〜
P3のレコードを設定し、ISRノード520Kは、パーティションS2〜P1のレコー
ドを設定し、及びISRノード520Lは、パーティションS2〜P2のレコードを設定
する。いくつかの実施形態では、取り込みサブシステム、記憶サブシステムまたは検索サ
ブシステムの所与のノードは、2つ以上のパーティション(または2つ以上のストリーム
の2つ以上のパーティション)のデータレコードを取り扱うよう構成され得る。いくつか
の実施形態では、所与のストリームの単一パーティションのレコードは、2つ以上のノー
ドによって取り込まれ、格納され、または検索され得る。所与のパーティションSj〜P
k用に示された取り込みノードの数は、少なくともいくつかの場合において、異なるパー
ティションSj〜Pl用に指定された取り込みノードの数と異なり得る。また、Sj〜P
k用に指定された記憶ノードの数及び/またはSj〜Pk用に指定された検索ノードの数
と異なり得る。取り込み及び/または検索に関して、SMS制御ノードは、いくつかの実
施形態において、どのノードがどのパーティションに対し役割をするかをクライアントが
決定することが可能になるように、(getStreamInfoのような)APIを実
装し得る。データレコードとパーティションとの間及びパーティションとISRノード(
または制御ノード)との間の構成されたマッピングは、下記の動的再分割に関する記載し
たように、経時修正され得る。
いくつかの実施形態では、いくつかの異なるプログラムによるインタフェース580は
、所与のパーティションからストリームデータレコードを検索または読み込みするために
実装され得る。図5にて示すように、いくつかの検索インタフェース581は、(特定の
シーケンス番号を備えたデータレコードで、または特定のシーケンス番号を備えたデータ
レコードの後に、イテレータをインスタンス化またはカーソルを読み込みするための)g
etIteratorまたは(特定のシーケンス番号を備えたデータレコードを読み込む
ための)getRecordのような、非シーケンシャルアクセスのために実装され得る
。その他の検索インタフェース582は、getNextRecord(シーケンス番号
の小さい順に、Nレコードがイテレータの現在位置から読み込まれることを要求するイン
タフェース)のようなシーケンシャル検索のために実装され得る。回転ディスクベースの
記憶システムにおいては、前述のように、多くの場合、シーケンシャルI/Oは、ランダ
ムI/Oよりもさらに、より効率的であり得る。平均I/O当たりに要求されるディスク
ヘッドシークの数は、典型的には、ランダムI/Oに対するよりも、シーケンシャルI/
Oに対してはかなり低い可能性がある。多くの実施形態では、所与のパーティションのデ
ータレコードは、シーケンス番号順に書き込まれ得る。シーケンス番号順に基づいて、そ
の結果、シーケンシャル読み込み要求(例えば、getNextRecordまたは類似
のインタフェースを使用する)は、ランダムリードリクエストよりも著しくより効率的で
あり得る。したがって、少なくともいくつかの実施形態では、異なる課金はシーケンシャ
ル対非シーケンシャル検索インタフェースに設定され得る。例えば、クライアントは非シ
ーケンシャルリードに対し、より多く課金され得る。
取り込みサブシステム
図6は、少なくともいくつかの実施形態による、SMSの取り込みサブシステム204
の要素の実施例を示す。図示された実施形態において、取り込み操作は、フロントエンド
及びバックエンドの機能に論理的に分かれ、データ生成部120(例えば、120A、1
20Bまたは120C)との相互作用を含むフロントエンドの機能及びSMS記憶サブシ
ステムとの相互作用を含むバックエンド機能を備える。このようなフロントエンド/バッ
クエンドの分割は、記憶サブシステムのセキュリティを向上し、データ生成部にパーティ
ショニングポリシの詳細を提供する必要を避けるなどの、いくつかの利点を有し得る。S
MSクライアントライブラリ602は、様々なデータ生成部120でインストールするた
めに提供され得る。データ生成部は、ライブラリ602に含まれるプログラムによるイン
タフェースを起動して取り込みのためにデータを送信し得る。例えば、一実施形態では、
データ生成部120は、何十万かのプロバイダネットワークの物理的及び/または仮想サ
ーバをインスタンス化されたロギングエージェントまたはモニタリングエージェントを備
え得る。このようなエージェントは、それぞれのサーバに様々なログメッセージ及び/ま
たは測定基準を収集し得る。また、定期的に、収集したメッセージまたは測定基準を、S
MSの1つ以上の取り込み制御ノード660によってインスタンス化されたフロントエン
ド負荷分散装置604の終点に送信し得る。いくつかの実施形態では、1つ以上の仮想I
Pアドレス(VIP)は、負荷分散装置用に確立され、データ生成部はストリームデータ
を送信し得る。一実装においては、ラウンドロビンDNS(ドメイン名システム)技術は
、データがデータ生成部120によって送信される、いくつかの同等に構成された負荷分
散装置のうち、特定の負荷分散装置を選択するためにVIPに使用され得る。
図示された実施形態において、受信されたデータレコードはいくつかのフロントエンド
のノード606(例えば、606A,606Bまたは606C)のいずれかに向けられ得
る。少なくともいくつかの実施形態では、負荷分散装置604は、データレコードに使用
するパーティショニングポリシ650を理解しなくてよい。したがって、フロントエンド
ノード606は、パーティションベースの負荷調整よりも、ラウンドロビン負荷分散(ま
たはいくつかのその他の汎用負荷調整アルゴリズム)を使用して、所与のデータレコード
に選択され得る。フロントエンドのノード606は、様々なストリーム用のパーティショ
ニングポリシ650を理解し、取り込み制御ノード660と相互作用して、所与のパーテ
ィションのデータレコードに構成される、特定のバックエンド取り込みノード608(例
えば、608A,608Bまたは608C)の識別子を取得し得る。そのため、図示され
た実施形態においては、フロントエンドのノード604は、データレコードが属するそれ
ぞれのパーティションに基づいて、複数のバックエンドノード606にデータレコードを
それぞれ伝送し得る。上記のように、データレコードが属するパーティションは、データ
生成部によって供給されるパーティションキー、データ生成部の識別またはアドレスのよ
うな1つ以上のその他の属性、またはデータのコンテンツのような、様々な要因の任意の
組み合わせに基づいて決定され得る。
バックエンドノード606は、1つ以上のストリームの1つ以上のパーティションに属
するデータレコードをそれぞれ受信し、データレコードを記憶サブシステムの1つ以上の
ノードに伝送し得る。データがHTTP(ハイパーテキストトランスファープロトコル)
の「PUT」ウェブサービスAPIを介して送信される、いくつかの実施形態では、バッ
クエンドノードは、「PUTサーバ」と称され得る。所与のバックエンドノードは、その
データレコードが制御ノード660にクエリを送信することによって伝送される、記憶サ
ブシステムノードのセットを決定し得る(順次、異なるサブシステムの制御機能が、ノー
ドの分離したセットによって処理される実施形態において、対応するクエリを記憶サブシ
ステムの制御ノードに送信し得る)。
少なくともいくつかの実施形態においては、少なくとも1回の取り込みポリシまたはベ
ストエフォート取り込みポリシのような、いくつかの異なる取り込み応答ポリシ652が
支援され得る。少なくとも1回のポリシでは、データ生成部120は、送信された各デー
タレコードに肯定応答を要求し、(第1送信の応答が受信されない場合には)応答が最終
的に受信されるまで、繰り返し同じデータレコードを送信し得る。ベストエフォート取り
込みポリシにおいては、肯定応答は、送信された少なくともいくつかのデータレコードは
必要とされなくてよい(しかしながら、取り込みサブシステムは依然として不定期に応答
を提供し得る。またはデータ生成部からの応答の明示的な要求に応答し得る)。取り込み
サブシステム204がデータ生成部に応答を提供するよう要求する、いくつかの実施形態
では、所与のデータレコードの役割をするバックエンド取り込みノード608は、応答を
生成する前に、要求された数のデータレコードの複製が、記憶サブシステムで正常に作成
されるまで(例えば、ストリームに確立された永続性ポリシに従って)待機し得る。様々
な実施形態では、シーケンス番号は、受信された各データレコードのために取り込みサブ
システムによって生成され得る。例えば、類似のパーティションまたはストリームのその
他のレコードに関連してそのレコードが取り込まれた順序を示す。またこのようなシーケ
ンス番号はデータ生成部に応答として、または応答の一部として返され得る。シーケンス
番号に関するさらなる詳細は、図13a及び図13bを参照して以下に提供され得る。い
くつかの実装においては、応答及び/またはシーケンス番号は、フロントエンドのノード
606を介してデータ生成部に戻って伝送され得る。少なくとも一実装においては、少な
くとも1回のポリシが、取り込みサブシステム自体のフロントエンドノードとバックエン
ドノードの間で実装され得る。例えば、所与のフロントエンドのノード606は、バック
エンドノードが応答を提供するまで、適切なバックエンドノード608にデータレコード
を繰り返し送信し得る。
取り込み制御ノード660は、ストリームの動的再分割に起因する、取り込みに関連し
た構成操作に対し、その他の機能のうち、フロントエンドノードとバックエンドノードを
インスタンス化し、ノードのヘルスとワークロードレベルを監視し、必要に応じてフェイ
ルオーバを編成し、所与のパーティションの役割をするノードに関するクエリまたはポリ
シに関連したクエリへの応答を提供する役割があってよい。いくつかの実施形態では、1
つ以上のストリームの所与のセットに指定された、取り込み制御ノードの数は、時間とと
もに変化され得る。例えば、1つ以上のマスター制御ノードは、必要に応じて制御ノード
プールの再構成をする役割をし得る。冗長グループが取り込みフロントエンドノードまた
はバックエンドノードに設定される、いくつかの実施形態では、図9及び図10を参照し
て、さらに詳細に後述のように、制御ノード660は、どのノードがプライマリでどのノ
ードが非プライマリであるか把握し、フェイルオーバに対するトリガ条件検出し、フェイ
ルオーバが要求されたときに置換えを選択し得る。図6に示された、多層の取り込みサブ
システム構造は、いくつかの実施形態で実装されない可能性があることに注意する。例え
ば、取り込みノードの単一セットのみがいくつかの場合において構成され得る。
記憶サブシステム
図7は、少なくともいくつかの実施形態による、SMSの記憶サブシステムの要素の実
施例を示す。ここに示すように、取り込みノード608(例えば、フロントエンド及びバ
ックエンド取り込みの役割は、異なるノードのセットによって処理される実施形態におけ
るバックエンド取り込みノード)は、これらのパーティション用に構成されたそれぞれの
記憶ノード702に、ストリームの1つ以上のパーティションのデータレコードを伝送し
得る。例えば、パーティションS1〜P1のデータレコード110Aはストレージノード
702Aに送信され、パーティションS2〜P3のデータレコード110Bは、ストレー
ジノード702B及びストレージノード702Cに送信され、パーティションS3〜P7
のデータレコード110Cは、ストレージノード702Dに送信され、及びパーティショ
ンS4〜P5のデータレコード110Dは、ストレージノード702Eに初めに送信され
る。記憶制御ノード780は、異なるストリームのデータレコードに適用される永続性ポ
リシ750を実現し、必要に応じてストレージノードを構成及び再構成し、ストレージノ
ードの状態を監視し、フェイルオーバを管理し、ストレージ構成クエリまたはストレージ
ポリシクエリに応答し、及び図示された実施形態において様々なその他の管理タスクをす
る役割をし得る。
永続性ポリシ750は、異なる実施形態において、様々な方法で互いに異なり得る。例
えば、ストリームSjに適用される永続性ポリシP1は、(a)格納される各データレコ
ードのいくつかの複製(b)複製が記憶される記憶装置またはシステムの種類(例えば、
複製が揮発性メモリ、不揮発性キャッシュ、回転ディスクベースのストレージ、ソリッド
ステートドライブ(SSD)、様々な種類のストレージアプライアンス、データベース管
理システム中の様々な種類のRAID(安価なディスクの冗長アレイ)、プロバイダネッ
トワークによって実装されるストレージサービスのノードなどに記憶されるべきか否か)
(c)複製の地理的分散(例えば、ストリームデータは、異なるデータセンタに複製を配
置することによって、大規模な破損または特定の種類の事故に対し回復力があるか否か)
(d)書き込み応答プロトコル(例えば、N複製が格納される場合には、応答が取り込み
ノードに提供される前に、いくつのN複製が正常に書き込みする必要があるか)及び/ま
たは(e)データレコードの多数の複製が格納される場合、複製は並行してまたは継続し
て作成されるか否かという点においてストリームSkに適用されるポリシP2、とは異な
り得る。多数の複製が格納されるいくつかの場合には、データレコード110Dの場合の
ように、所与のストレージノードは、データレコードは別のストレージノードに送信し得
る(例えば、ストレージノード702Eはさらにストレージノード702Fにデータレコ
ード110Dをさらに複製するために送信し、ストレージノード702Fはストレージノ
ード702Gを送信する)。多数の複製永続性ポリシが使用される、その他の場合におい
ては、2つのメモリ内複製が格納されるデータレコード110Bの場合においては、取り
込みノードは多数の複製を並行して開始し得る。少なくともいくつかの実施形態において
は、クライアントの選択した永続性ポリシは、ストリームデータレコードに使用される記
憶位置の種類を明示しなくてよい。むしろ、SMSは、記憶技術の適切な種類及び/また
は費用、性能、データレコードへの費用、性能、データソースへの近接、耐久性の条件等
、様々な基準に基づいた位置を選択し得る。一実施形態では、クライアントまたはSMS
のどちらかは、所与のストリームの異なるパーティションまたは異なるストリーム用の、
異なる記憶技術または記憶位置の種類を使用するために決定し得る。
図7に示された実施例においては、ストリームS1(または少なくともストリームS1
のパーティションS1〜P1)に適用される永続性ポリシは、メモリ内ポリシの単一の複
製である。一方、ストリームS2には、2つの並行複製メモリ内ポリシが適用される。し
たがって、データレコード110Aのメモリ内複製704Aは、ストレージノード702
Aで作成され、一方、データレコード110Bに対応する2つのメモリ内複製705A及
びメモリ内複製705Bは、ストレージノード702B及びストレージノード702Cで
並行して作成される。ストリームS3のデータレコード110Cには、単一ディスク上の
複製706Aが作成される。ストリームS4には、シーケンシャルな3つの複製のディス
ク上ポリシが適用可能であり、その結果、それぞれのディスク上の複製707A、複製7
07B及び複製707Cはシーケンシャルにストレージノード702E、ストレージノー
ド702F及びストレージノード702Gで作成される。様々なその他の種類の永続性ポ
リシが、異なる実施形態でデータストリームに適用され得る。検索サブシステムのノード
は、データコンシューマによる、様々な種類の検索APIの起動に対応する適切なストレ
ージノードから、データレコードを取得し得る。
検索サブシステム及び処理ステージ
図8は、少なくともいくつかの実施形態による、SMSの検索サブシステムの実施例の
要素及びSPSとの検索サブシステムの相互作用の実施例を示す。示されているように、
検索サブシステム206は、検索制御ノード880の収集と同様に、検索ノード802A
、検索ノード802B及び検索ノード802Cのような、複数の検索ノード802を備え
得る。検索ノード802のそれぞれは、後述のように、SPSのワーカノード840のよ
うな、様々なクライアントまたはデータコンシューマ130からのストリームデータの検
索要求に応答するよう構成され得る。様々なプログラムによる検索インタフェース802
は、前述した非シーケンシャル検索インタフェース及びシーケンシャル検索インタフェー
スによって、異なる実施形態において検索ノードによって実装され得る。いくつかの実施
形態では、HTTP GET要求のようなウェブサービスAPIは、データレコード検索
に使用され、したがって、検索ノード802はGETサーバと称され得る。所与の検索ノ
ード802は、記憶ノード702A及び記憶ノード702Bのような、適切な記憶サブシ
ステム702のセットから、記載された実施形態においては、例えば、検索制御ノード8
80によって、1つ以上のストリームパーティションのデータレコードを取得するよう構
成され得る。
記載された実施形態において、検索ノード802は1つ以上の記憶ノード702と対話
し、また、1つ以上のSPSワーカノード840から受信された検索要求に応答し得る。
例えば、パーティションS4〜P5のデータレコード(例えば、データレコード110K
)及びパーティションS5からP8(例えば、データレコード110L)は、記憶ノード
702Aから、検索ノード802Aによって読み込まれ、ワーカノード840A及びワー
カノード840Kにそれぞれ提供される。110Mのような、パーティションS6〜P7
のデータレコードは、記憶ノード702Aから検索ノード802Bによって読み込まれ、
ワーカノード840Kに提供される。パーティションS4〜P7のデータレコードは、検
索ノード802Cによって記憶ノード702Bから読み込まれ、ワーカノード840Bに
提供され、また、その他のデータコンシューマ130(例えば、SPSを介してSMSと
対話する代わりに、直接SMS検索APIをデータコンシューマ起動する)に提供される
少なくともいくつかの実施形態においては、検索ノード802のいくつか、またはすべ
ては、様々なパーティションのデータレコードが将来の検索要求を予測して一時的に保持
され得る、それぞれのキャッシュ804を実装し得る(検索ノード802Aでのキャッシ
ュ804A、検索ノード802Bでのキャッシュ804B及び検索ノード802Cでのキ
ャッシュ804C)。検索制御ノード880は、例えば、キャッシュポリシ(例えば、キ
ャッシュが所与のパーティションを構成するためにどのくらいの大きさであるべきか、デ
ータレコードはどのくらいの長さをキャッシュすべきか)、記憶ノード選択ポリシ(例え
ば、どの特定の記憶ノードが、データレコードの多数の複製が格納される場合において、
所与のデータレコードを取得するために最初に接触されるべきか)、などを含む、いくつ
かの検索ポリシ882を実装する役割をし得る。加えて、検索制御ノードは、検索ノード
802をインスタンス化し監視する役割をし、どちらの検索ノードがどちらのパーティシ
ョンの役割をし、再分割の操作等を開始して、応答するかに関するクエリに応答し得る。
図示された実施例では、SPS290は2つの処理ステージ215A及び処理ステージ
215Bを備える。SPS制御ノード885は、パーティションS4〜P5のレコードを
処理するワーカノード840A、パーティションS4〜P7のレコードを処理するワーカ
ノード840B、パーティションS5〜P8及びパーティションS6〜P7のレコードを
処理するワーカノード840Kのような、様々な処理ステージ215でワーカノード80
4をインスタンス化する役割をし得る。SPS制御ノード885は、(図3及び図4に示
されたような)プログラムによるインタフェースを実装し、SPSクライアントが処理ワ
ークフローを設計するのを可能にする。様々なチェックポイントポリシ850が、異なる
処理ステージまたはワークフローに実装されてよく、いつワーカノードがプログレスレコ
ードを格納するべきかを表示し、どのくらいそれぞれのパーティション、プログレスレコ
ード等に使用される記憶装置の種類などを処理しているのかを表示する。フェイルオーバ
/リカバリポリシ852は、異なるノードでワーカノードを置き換えすることにつながる
、トリガ条件または閾値を表示してよく、ベストエフォートリカバリが使用されるか、チ
ェックポイントベースのリカバリが所与の処理ステージに使用されるかを表示し得る。少
なくともいくつかの実施形態においては、SPS制御ノード885は、例えば、所与のス
トリームのデータレコードが取得される検索ノードを識別し、特定の処理ワークフロー等
に必要であり得る新しい一過性または永続性のストリームを確立するために、様々な種類
のSMS制御ノードと相互作用してよい。少なくとも一実施形態においては、クライアン
トはSPS制御ノードと対話し、ストリームをインスタンス化し得る。例えば、SMS制
御インタフェースを利用する代わりに、あるクライアントはより高いレベルのSPSイン
タフェースのみを起動したい可能性がある。SMSの取り込み、格納及び検索サブシステ
ムのための制御ノードの分離したセットは図6、図7及び図8に示されているが、SPS
ステージには、少なくともいくつかの実施形態では、所与の制御ノードはいくつかのサブ
システム及び/またはSPSに使用され得ることに注意する。
ノード冗長グループ
少なくともいくつかの実施形態においては、ノードの冗長グループは、SMSの1つ以
上のサブシステム用に構成され得る。すなわち、例えば、ストリームパーティションSj
〜Pk用のデータレコードを検索する1つの検索ノードを構成する代わりに、2つまたは
それ以上のノードが、このような検索のために確立されてよく、「プライマリ」と認めら
れている1つのノードまたは所与の時点で動作中の役割をする一方、その他のノードは「
非プライマリ」ノードとして設計されている。現在のプライマリノードは、例えば、クラ
イアントまたはその他のサブシステムのノードの何れかから受信した要求の、ワーク要求
に応答する役割をし得る。非プライマリノードまたはノードは、例えば、破損、プライマ
リへの接続不良、またはその他のトリガ条件のため、フェイルオーバがトリガされるまで
休眠したままでよく、その場合には、選択された非プライマリは制御ノードによって通知
され、従来のプライマリの役割に取って代わってもよい。したがって、プライマリの役割
は、フェイルオーバの間、従来のプライマリノードから取り消され、現在の非プライマリ
ノードを許可される。いくつかの実施形態では、非プライマリノードは、フェイルオーバ
が起こったと決定されたときに、プライマリとして取って代わり得る。例えば、明示的な
通知が必要とされなくてよい。様々な実施形態では、このようなノードの冗長グループは
、SMSの機能を取り込み、格納、検索及び/または制御するために設定されてよく、類
似の手法もまた、少なくともいくつかの実施形態でSPSのワーカノードに取られてよい
。いくつかの実施形態では、所与の機能のための、少なくとも1つのプライマリノード及
び少なくとも1つの非プライマリノードを備える、このようなグループは、「冗長グルー
プ」または「複製グループ」と呼ばれ得る。ストレージノードの冗長グループは、格納さ
れるデータレコードのいくつかの物理的複製を独立して実装され、例えば、格納されるべ
きいくつかの複製のデータレコードは、永続性ポリシによって決定されてよく、一方、対
応するパーティションのために構成された、いくつかの記憶ノードは、冗長グループポリ
シに基づいて決定されることに注意する。
図9は、少なくともいくつかの実施形態による、SMSまたはSPSのノード用に設定
され得る冗長グループの実施例を示す。記載された実施形態において、所与のストリーム
パーティションSj〜Pkには、それぞれの冗長グループ(RG)905、冗長グループ
915、冗長グループ925及び冗長グループ935が取り込みノード、記憶ノード、検
索ノード及び制御ノードのために設定されている。取り込み制御ノード、記憶制御ノード
または検索制御ノードのための分離したRGはいくつかの実施形態で実装されているが、
制御ノードのための共通のRG935は、図示された実施形態において実装されている。
各RGは、プライマリノード(例えば、プライマリ取り込みノード910A、プライマリ
記憶ノード920A、プライマリ検索ノード930A及びプライマリ制御ノード940A
)及び少なくとも1つの非プライマリノード(例えば、非プライマリ取り込みノード91
0B、非プライマリ記憶ノード920B,非プライマリ検索ノード920C及び非プライ
マリ検索ノード920D)を備える。プライマリの役割は、それぞれのフェイルオーバポ
リシ912(取り込みノード用)、フェイルオーバポリシ922(記憶ノード用)、フェ
イルオーバポリシ932(検索ノード用)及びフェイルオーバポリシ942(制御ノード
用)にしたがい、取り消され、現在の非プライマリが許可される。例えば、フェイルオー
バポリシは、プライマリステイタスにおける変更につながるトリガ条件管理してよく、プ
ライマリまたは非プライマリのヘルスステータスが監視されているか否か、及びどのよう
に監視されているか、所与の冗長グループ等に構成されるべき非プライマリの数を管理し
得る。少なくともいくつかの実施形態においては、単一のRGは、多数のパーティション
用に確立され得る。例えば、RG905は、パーティションSp〜Pqと同様に、パーテ
ィションSj〜Pkのレコードの取り込みを処理する役割があり得る。いくつかの実装に
おいては、1つのパーティション用のプライマリとして設計されたノードは、同時に、別
のパーティション用の非プライマリとして設計され得る。一実施形態では、多数のノード
は、同時に、所与のRG内のプライマリノードとして示され得る。例えば、所与のパーテ
ィションの取り込みに関連したワークロードは、2つのプライマリノードに分散されてよ
く、破損した場合に備え、どちらかがプライマリで非プライマリとして示される1つのノ
ードを備える。所与のRG内のインスタンス化されたノードの数は、対応する機能に望ま
しい入手可能性または回復レベルに依存し得る(例えば、そのグループ耐え得ることを予
定しているのが、どのくらい多くの同時発生または重複する破損か)。いくつかの実施形
態では、SMSノードへの使用またはSMSノードへの使用の代わりに、冗長グループは
SPS処理ステージのワーカノードのために設定され得る。図10に示されるように、所
与のRGのメンバは、例えば、いくつかのデータセンタにわたって地理的に時々、分散さ
れ得る。いくつかの実施形態では、選択された制御ノードは、例えば、ハートビート機構
またはその他のヘルス監視技術を使用し、フェイルオーバトリガ条件を検出するよう構成
され得る。また、このような制御ノードは、損失したプライマリの置換えとして、適切な
非プライマリノードを選択し、選択された置換えのノード等を通知/起動することによっ
てフェイルオーバを調整し得る。
いくつかの実施形態では、プロバイダネットワークは、複数の地理的領域に分けられ、
各領域は1つ以上のアベイラビリティコンテナを含んでよく、本明細書では「アベイラビ
リティゾーン」とも呼ばれる。アベイラビリティコンテナは、順次、1つ以上の異なる位
置またはデータセンタを備え、所与のアベイラビリティコンテナにおけるリソースが、そ
の他のアベイラビリティコンテナにおける破損から絶縁されるような方法で設計され得る
(例えば、電力関連装置、冷却装置、物理的安全構成要素等の、独立したインフラストラ
クチャコンポーネント)。一アベイラビリティコンテナにおける破損は、任意のその他の
アベイラビリティコンテナにおける損失という結果にならない可能性がある。このため、
リソースインスタンスのアベイラビリティプロフィールまたは制御サーバは、異なるアベ
イラビリティコンテナにおいて、リソースインスタンスのアベイラビリティプロフィール
または制御コントロールサーバに依存しないことを意図している。様々な種類のアプリケ
ーションは、それぞれのアベイラビリティコンテナにおける多数のアプリケーションイン
スタンスを起動すること、または、(いくつかのSMS及びSPSの場合)多数のアベイ
ラビリティコンテナにわたって、所与の冗長グループのノードを分散するによって、多数
の単一の位置での破損から保護され得る。同時に、いくつかの実装においては、安価で短
待ち時間のネットワークの接続は、類似の地理的領域内にあるリソース(SMS及びSP
Sノードに使用されるホストまたはコンピュートインスタンス)間で提供されてよく、類
似のアベイラビリティコンテナのリソース間のネットワーク伝送がさらに速くなり得る。
あるクライアントは、ストリーム管理リソースまたはストリーム処理リソースが予約及び
/またはインスタンス化される位置を特定したいと思う可能性がある。例えば、アプリケ
ーションが実行される様々な構成要素の所望の制御度合いを維持するアベイラビリティコ
ンテナレベルまたはデータセンタレベルの何れかの領域レベルリソースが、例えば性能、
ハイアベイラビリティ等のクライアントの要求に合致する限り、その他のクライアントは
、リソースが予約またはインスタンス化される、実際の場所にあまり興味が無い可能性が
ある。いくつかの実施形態では、1つのアベイラビリティコンテナ(またはデータセンタ
)に配置された制御ノードは、その他のアベイラビリティコンテナ(またはその他のデー
タセンタ)におけるその他のSMSまたはSPSノードを遠隔から構成することが可能で
あり得る。つまり、特定のアベイラビリティコンテナまたはデータセンタが、SMS/S
PSノードを管理するためにローカル制御ノードを有する必要はない。
図10は、少なくともいくつかの実施形態による、所与の冗長グループのノードが複数
のデータセンタに分散され得る、プロバイダのネットワーク環境を示す。図示された実施
形態においては、プロバイダネットワーク1002は、3つの可用性コンテナ1003A
、可用性コンテナ1003B及び可用性コンテナ1003Cを備える。各可用性コンテナ
は、1つ以上のデータセンタの一部または全部を含む。例えば、可用性コンテナ1003
Aはデータセンタ1005A及びデータセンタ1005Bを備え、可用性コンテナ100
3Bはデータセンタ1005Cを含み、及び可用性コンテナ1003Cはデータセンタ1
005Dを含む。SMS及び/またはSPSノードのいくつかの異なる冗長グループ10
12が示されている。データセンタ1005A内に配置されたRG1012Aの場合のよ
うに、いくつかのRG1012は、単一のデータセンタ内に全体が実装され得る。その他
のRGは、RG1012Bのように、所与の可用性コンテナ内で多数のデータセンタのリ
ソースを使用してよく、可用性コンテナ1003Aのデータセンタ1005A及びデータ
センタ1005Bにわたる。しかしながら、その他のRGは、異なる可用性コンテナにわ
たって広がるリソースを使用して実装され得る。例えば、RG1012Cは、可用性コン
テナ1003A及び可用性コンテナ1003Bのデータセンタ1005B及びデータセン
タ1005Cに配置されたリソースをそれぞれ使用し、RG1012Dは、可用性コンテ
ナ1003A、可用性コンテナ1003B及び可用性コンテナ1003C中それぞれのデ
ータセンタ1005B、データセンタ1005C及びデータセンタ1005Dでリソース
を利用する。一例示的な配置においては、RG1012が1つのプライマリノード及び2
つの非プライマリノードを備え、3つのノードのそれぞれは、異なる可用性コンテナに配
置され得る。そのため、少なくとも1つのノードは、大規模な破損イベントが2つの異な
る可用性コンテナを同時に起こしても、機能的なままである可能性が高い。
図示された実施形態において、SMS及びSPSのそれぞれに関連する、コンソールサ
ービス1078及びコンソールサービス1076は、使用が簡単なウェブベースのインタ
フェースを、プロバイダネットワーク1002にストリームに関連する設定を構成するた
めに提供し得る。いくつかのさらなるサービスは、その少なくともいくつかはSMS及び
/またはSPSによって使用され得るが、1つ以上のデータセンタにわたる、または1つ
以上の可用性コンテナを横断するリソースを使用してプロバイダネットワーク1002に
て実装され得る。例えば、仮想計算サービス1072は、実装され得る。クライアントが
様々な異なるケーパビリティレベルのコンピュートインスタンスとしてパッケージ化され
た計算能力の選択された量を利用することができ、このようなコンピュートインスタンス
は、SMS及び/またはSPSノードを実装するために使用され得る。1つ以上のストレ
ージサービス1070は、例えばブロックデバイスボリュームインタフェース、またはウ
ェブサービスインタフェースの何れかを介して実装されてよく、クライアントが所望のデ
ータ耐久性でデータオブジェクトを記憶しアクセスするのを可能にする。ストレージオブ
ジェクトは、サービス1072のコンピュートインスタンスに取り付け可能であり得る。
またはサービス1072のコンピュートインスタンスからアクセス可能であり得る。いく
つかの実施形態では、SMSストレージサブシステムで様々なストリーム永続性ポリシに
使用され得る。一実施形態では、ハイパフォーマンスキー値管理サービス1074のよう
な、1つ以上のデータベースサービスまたはリレーショナルデータベースサービスは、プ
ロバイダネットワーク1002で実装され得る。このようなデータベースサービスは、S
MNSストレージサブシステムによってストリームデータレコードに及び/または制御サ
ブシステム、取り込みサブシステム、記憶サブシステム、検索サブシステムまたは処理ス
テージのメタデータを格納するために使用され得る。
ストリームセキュリティオプション
少なくともいくつかの実施形態においては、SMS及び/またはSPSのユーザは、デ
ータストリームのためにいくつかのセキュリティに関連するオプションが提供されてよく
、クライアントが、取り込み、記憶、検索、処理及び/または制御のような、様々な機能
カテゴリに使用するためにリソースのセキュリティプロフィール(例えば、仮想または物
理マシン)を選択することが可能になる。このようなオプションとしては、例えば、様々
なノードに使用されるリソースの物理位置の種類に関する選択(例えば、プロバイダネッ
トワーク設備が使用されるべきかどうか、またはクライアント所有の設備が使用されるべ
きかどうかであり、これはプロバイダネットワーク設備とは異なるセキュリティ特徴を有
し得る)、ストリームデータの暗号化に関する選択、及び/またはストリーム処理インフ
ラストラクチャの様々な部分においてネットワークを遮断する選択が挙げられる。あるク
ライアントは、貴重な独占しているビジネスロジックまたはアルゴリズムへのアクセスを
する侵入者または攻撃者の可能性について懸念を持ち得る。例えば、クライアント所有の
プロミス内の計算装置を使用してストリーム処理ワーカノードを実装し得る。SMS及び
/またはSPSノードのセットを実装するために使用されるリソースの種類は、本明細書
においては、これらのノードに対する「配置先種類」と称し得る。図11は、少なくとも
いくつかの実施形態による、SMSまたはSPSのノード用に選択され得る複数の配置先
の種類を示す。
図示された実施形態において、配置先は、SMS/SPS機能カテゴリ用のプロバイダ
ネットワーク1102(例えば、取り込み、記憶、検索、制御または処理)及びその他の
種類のSMS/SPSの機能カテゴリ用の外部のプロバイダネットワーク1102内で選
択され得る。プロバイダネットワーク1102内では、コンピュートインスタンス、スト
レージインスタンスまたはデータベースインスタンスのような、いくつかのリソースは、
マルチテナントのインスタンスホスト1103を使用して実装され得る。このようなマル
チテナントのインスタンスホストは、1つ以上のクライアントに対するSMSまたはSP
Sノードのそれぞれがインスタンス化されてよく、配置先の種類の第1カテゴリ「A」を
形成し得る。その他のクライアントと物理リソースを共有しなければならないことを避け
るために、あるクライアントはSMS/SPSノードを単一のクライアントに限定したイ
ンスタンスホストを使用して実装されることを要求し得る。このようなシングルテナント
のインスタンスホストは、配置カテゴリの種類「B」を形成し得る。シングルテナントの
インスタンスホストは、いくつかの理由のため、あるクライアントの観点から、望ましい
場合がある。マルチテナントのインスタンスホストは、その他のクライアントに属するコ
ンピュートインスタンスを含み得る。シングルテナントのインスタンスホストよりも、マ
ルチテナントのインスタンスホストにおける別のクライアントのインスタンスからのセキ
ュリティ攻撃の可能性がより高くなり得る。加えて、マルチテナントホストで動くあるク
ライアントのコンピュートインスタンスCI1は、ワークロードでサージを経験し、ホス
トの計算サイクルまたはその他のリソースの大きな割合を消費し始め、そのため場合によ
り異なるコンピュートインスタンスCI2上で動く別のクライアントのアプリケーション
の性能に衝撃を与える、「ノイジーネイバー」現象は、またシングルテナントのインスタ
ンスホストが使用されるときに避けられ得る。
IVN1106A及びIVN1106Bのような、隔離された仮想ネットワーク(IV
N)1106は、図示された実施形態において、配置先種類の別のカテゴリ「C」を表し
得る。いくつかの実施形態では、IVN1106は、プライベートネットワークの論理等
価として、プロバイダネットワークのクライアントの要求で作成されてよく、プロバイダ
ネットワークのリソースを使用して構築するが、クライアントによって主に制御されるネ
ットワーク構成である。例えば、クライアントは、IVNの外部ですでに使用され得るI
Pアドレスを複製する可能性について懸念することなしに、IPアドレスを決定し、IV
N1106内で使用し得る。図示された実施形態において、1つ以上のIVNにおいて、
SMS及びSPSノードの様々な種類の実装は、クライアントのストリームデータの管理
及び/または処理に対するネットワークセキュリティのレベルをさらに上げ得る。場合に
よっては、所与のクライアントは、1つのIVN1106におけるSMS/SPSノード
の1つの機能的カテゴリ、及び異なるIVNに異なる機能的カテゴリを配置したいと思う
可能性がある。様々な実施形態では、所与のIVN1106は、シングルテナントのイン
スタンスホストかマルチテナントのインスタンスホストの何れか、またはインスタンスホ
ストの両種類を備え得る。いくつかの実施形態では、プロバイダネットワークのリソース
を使用する、配置先種類の選択の別のセット(またはセキュリティプロフィールの選択)
は、図11には図示されていないが、少なくともあるクライアントには入手可能であり得
る。クライアントが、ストリーム関連の操作のために、プロバイダネットワークの仮想計
算サービスからコンピュートインスタンスを取得し使用できる実施形態においては、コン
ピュートインスタンスは2つのモードのうち1つで使用され得る。1つのモードにおいて
は、クライアントは、SPSまたはSMSに、実行可能なプログラムまたは、SPSワー
カノードとして構成されたコンピュートインスタンスにて(若しくは取り込みノード、記
憶ノードまたは検索ノードにて)動作されるプログラムを提供し、SMSあるいはSPS
にプログラムを動作させ、ノードを管理させ得る。この第1モードは、ストリーム操作に
コンピュートインスタンスを使用する「ストリームサービスが管理する」モードとして呼
ばれることもある。その他のモードにおいては、クライアントは、SPSまたはSMSか
ら支援がより少ない状態で、実行可能なプログラムを動かし、コンピュートインスタンス
の管理をすることを希望する場合がある。この第2モードは、ストリーム操作にコンピュ
ートインスタンスを使用する「クライアントが管理する」モードとして呼ばれることもあ
る。よって、これら2つの操作モードは、クライアントが選択可能な配置先の種類または
セキュリティプロフィールに関する追加の選択肢を表し得る。例えば、クライアントは、
実行可能なプログラムが、クライアントの組織から主題に関する専門家によって最適に実
行されるデバッグ(シングルステッピングを含む)を必要とする可能性がある場合には、
クライアントが管理するモードを選択し得る。一方、ストリームサービスが管理するモー
ドは、デバッグを必要とする可能性のないより完成したコードには有効な選択肢であり得
る。いくつかの実施形態では、異なる価格設定がこれら2つのモードに適用し得る。
いくつかの配置の選択肢が、図11に示された実施形態におけるプロバイダネットワー
ク外部の設備で支援され得る。例えば、SMSライブラリ1171及び/またはSPSラ
イブラリ1172がインストールされるホスト1160は、クライアントの設備1110
Aまたは設備1110B内(例えば、クライアントが所有するデータセンタ若しくは構内
)でストリーム管理またはストリーム処理に使用されてよく、2種類のクライアントの設
備は、プロバイダネットワークへの接続方法において異なる。クライアントの設備111
0Aは、プロバイダネットワーク1102に少なくともいくつかの共有されるインターネ
ットリンク1151を介してリンクされている(すなわち、その他のエンティティのネッ
トワークトラフィックは、また、クライアントの設備1110Aとプロバイダネットワー
ク1102との間のリンクのいくつかにわたって流れ得る)。対照的に、(1110Bの
ような)いくつかのクライアントの設備は、特別な共有されない専用の物理リンク110
6(時に「直接接続リンク」と呼ばれ得る)を介してプロバイダネットワークにリンクさ
れ得る。これら2つの異なる種類のクライアントの構内は、配置先の選択肢「D」及び「
E」を備え、そのそれぞれが図11にて用語が使用されている。いくつかの実施形態では
、SMS及び/またはSPSの一部は、また、第三者の構内(例えば、SMS及び/また
はSPSのクライアントによって使用されるが所有または管理されないデータセンタ)で
実装可能であってよく、このような第三者の構内は、配置先「F」として示され得る。少
なくともいくつかのクライアント及び/または第三者の構内においては、SMS及び/ま
たはSPSライブラリは、プロバイダネットワークから取得され、SMS及び/またはS
PSノードに使用されるホストにインストールされる必要があり得る。少なくとも一実施
形態においては、すべての異なる機能カテゴリのノードは、適切なライブラリの支援でプ
ロバイダネットワークの外部に実装され得る。
異なる実施形態においては、異なる配置先の種類は、ネットワーク隔離の特徴が実装され
、侵入検知の機能が支援され、物理セキュリティポリシが実装され、暗号化レベルが支援
されるなど、様々なセキュリティに関連する態様において、互いに異なり得る。したがっ
て、様々な配置の種類のそれぞれは、対応するセキュリティプロフィールを有すると考え
られてよく、これは1つ以上の方法で、その他の配置先のセキュリティプロフィールとは
異なることがある。いくつかの実施形態では、SMS及び/またはSPSのクライアント
は、異なるサブシステムまたはノードセットに対し、例えば、図12a及び図12bにて
示されているように、SMSまたはSPSの1つ以上の制御ノードに要求を送信すること
によって、それぞれの配置先の種類をプログラムで選択し得る。注意が必要なのは、いく
つかの実施形態及びストリームアプリケーションの特定の種類においては、クライアント
は配置先の種類を、単にセキュリティの理由からではなく、性能及び/または機能性の理
由から制御したいと思う可能性があることである。例えば、前述のノイジーネイバー現象
は、専用のクライアントの設備のリソースまたはシングルテナントのインスタンスホスト
を使用することにより回避され得る。いくつかの実施形態では、クライアントは、SPS
ステージまたはSMSノードに使用を希望する専用または専有のハードウェア及び/また
はソフトウェアを有し得る。このようなコンポーネントを使用して達成可能な機能上の能
力または性能レベルは、プロバイダネットワークで容易に複製されることが不可能であり
、または単にプロバイダネットワークで支援されない。クライアントは外部のデータセン
タで、スーパーコンピュータレベルの処理能力を有するコンピュータサーバにアクセスし
得る。例えば、プロバイダネットワークのリソースのみを使用するときに可能な処理より
も、かなり高い速度でSPS処理を実行することが可能であり得る。クライアントが様々
なノードへの配置先を選択することを可能にすることで、このような専用装置または専用
ソフトウェアが使用できる。
図12a及び図12bは、少なくともいくつかの実施形態による、SPSクライアント
及びSMSクライアントのそれぞれによって送信され得る、セキュリティオプションの要
求の実施例を示す。図12aは、SPSセキュリティオプションの要求1200を示し、
識別子1210を備える1つ以上の処理ステージには、クライアントが、ステージ(要素
1212)の制御ノードに要求される配置先の種類(PDT)、及びワーカノード(要素
1214)に要求されるPDTを示す。少なくとも一実施形態においては、クライアント
もまた、ストリームデータレコードまたはストリーム処理結果に対する暗号化設定を構成
する要求を送信可能であり得る。例えば、様々なネットワークリンクにわたって伝送する
前に、特定のアルゴリズムまたはプロトコルを使用して暗号化されるデータレコードを要
求することにより、または様々な制御若しくは管理相互作用を暗号化することを要求する
ことにより、例えば、図12aでは、ステージに対する暗号化設定は、ステージ処理操作
の結果に適用される暗号化技術及び/またはステージの制御ノードとステージのワーカノ
ードとの間の通信に使用される暗号を示し得る。
同様に、図12bにおいては、クライアントのSMSのセキュリティオプション要求1
250は、特定の識別子1252を備える、1つ以上のストリームに対するクライアント
のセキュリティの基本設定を示すいくつかの要素を備える。取り込みノード、記憶ノード
及び検索ノードに対する配置先の種類の基本設定は、それぞれ要素1254、要素125
8及び要素1262に示され得る。取り込み制御ノード、記憶制御ノード及び検索制御ノ
ードに対するPDTの基本設定は、それぞれ要素1256、要素1260及び要素126
4に示され得る。例えば、データレコードがあるノードのカテゴリから別のカテゴリへと
伝送されるときに、暗号がデータレコードに対して実行されるか否か、及び/またはどの
ように実行されるか、のようなデータレコードに対する暗号化の基本設定は、要素126
6を介して示され得る。図12a及び図12bに示されるようなセキュリティオプション
の要求を使用して、クライアントは位置(例えば、プロバイダネットワークの内部または
プロバイダネットワークの外部)及びストリーム管理及び処理環境の異なる部分に対する
、様々なその他のセキュリティプロフィールコンポーネントを選択可能であり得る。
ノードの配置先の選択は、少なくともいくつかの実施形態では、セキュリティよりもそ
の他の理由にあることに注意する。例えば、クライアントは、性能上の理由から(例えば
、主にセキュリティ上の理由よりもむしろ、前述の「ノイジーネイバー」の問題を避ける
ため)、シングルテナントのホストで実装される、いくつかの種類のSMSまたはSPS
ノードを有することを要望し得る。配置の選択は、少なくともいくつかの実施形態では、
ストリームの耐用年数の間に変更され得る。例えば、クライアントは最初にSMSノード
がマルチテナントのインスタンスホストでのインスタンス化を許可するが、後で、ノード
のサブセットの少なくともいくつかをシングルテナントのインスタンスホストに移動する
ことを要望する可能性がある。少なくともいくつかの実施形態では、異なる価格設定が異
なるセキュリティ関連のオプションに適用され得る。例えば、IVNの外部のマルチテナ
ントのインスタンスホストよりも、IVNでの特定の機能的カテゴリのSMSノードを実
装する方が、費用がかかる可能性がある。またはマルチテナントのインスタンスホストで
するよりも、シングルテナントのインスタンスホストでSMSノードを実装する方が、費
用がかかる可能性がある。
ストリームレコードのシーケンシャル記憶及びシーケンシャル検索
多くの種類のストリームアプリケーションには、データレコードが複数のデータ生成部
120から高速でSMSで受信されてよく、データコンシューマは、典型的には、レコー
ドが生成された順番に、記憶されたデータレコードにアクセスすることを希望し得る。特
に、前述したように、回転磁気ディスクがストリームデータレコードに記憶装置として使
用される環境においては、シーケンシャルI/Oアクセスパターン(読み出し及び書き込
み)は、ランダムI/Oアクセスパターンに優る著しい性能面での利点を有し得る。いく
つかの実施形態では、ストリーム固有またはパーティション固有のシーケンス番号は、S
MSによって受信されたときに、データレコードを割り当てられ得る。シーケンス番号に
基づいたシーケンシャル検索操作が支援され得る。図13aは、少なくともいくつかの実
施形態による、ストリームデータ生成部とSMSの取り込みサブシステムとの間の相互作
用例を示す。ストリームデータ生成部は、データレコード110を取り込みサブシステム
に送信してよく、図示された実施形態においては、取り込みサブシステムは、送信された
レコード用に選択されたシーケンス番号102に応答してよい。少なくともいくつかの実
施形態においては、取り込みノードは記憶サブシステムからシーケンス番号の一部を取得
し得る。例えば、シーケンス番号102は、このような実施形態における、適用可能な永
続性ポリシによる、受信されたデータレコードが記憶された後で決定され得る。また、記
憶サブシステムは、データレコードに対し、自身の数列インジケータを生成してよく、取
り込みノードによってデータレコードに割り当てられる、より大きなシーケンス番号に含
めるために、そのインジケータを提供してよい。
シーケンス番号は、様々な実施形態において、安定的で一貫性のあるデータレコードの
順序を提供するため、また、データコンュシーマによってレコード上で繰り返し反復する
ことを可能にするために、実装され得る。少なくともいくつかの実装においては連続であ
る必要はないが、特定のパーティションのデータレコードに割り当てられたシーケンス番
号は、時間とともに単調増加し得る。様々な実施形態では、シーケンス番号は以下のセマ
ンティックスの少なくともいくつかのサブセットに割り当てられ得る。(a)シーケンス
番号はストリーム内で固有である。すなわち、所与のストリームの2つのデータレコード
は同一のシーケンス番号に割り当てられる可能性はない。(b)シーケンス番号は、スト
リームのデータレコードに索引付けとして機能し得る。また、所与のストリームパーティ
ション内のデータレコード内を繰り返して使用され得る。(c)任意の所与のデータ生成
部には、データ生成部が正常にデータレコードを送信する順序は、データレコードに割り
当てられたシーケンス番号に反映される。及び(d)所与のパーティションキー値を有す
るデータレコードにシーケンス番号の付与は、動的再分割操作にわたって、セマンティッ
クの単調増加を維持する。例えば、再分割後にパーティションキー値K1を有するデータ
レコードに割り当てられたシーケンス番号は、任意のシーケンス番号よりもそれぞれが大
きくてよく、このシーケンス番号は、動的再分割の前にそのパーティションキー値K1を
有するデータレコードに割り当てられている。(動的再分割は図16を参照して下記にさ
らに詳細が記載されている。)
いくつかの実施形態では、データ生成部は少なくともいくつかのデータレコードに選択
されたシーケンス番号102の選択に影響したい可能性がある。例えば、そのストリーム
のデータコンシューマにとって、ストリームの特定のサブセットを対象とする読み出し要
求を送信することをより容易にするために、データ生成部120は、境界または割り当て
られたストリームのシーケンス番号内のセパレータを画定したいかもしれない。いくつか
の実装においては、データ生成部120は、最小のシーケンス番号の表示をレコードとと
もに送信してよく、また、SMSは、上述したシーケンス番号のセマンティックにも従う
、要求最小によるシーケンス番号を選択してよい。
図13bは、少なくともいくつかの実施形態による、SMSでの取り込まれたデータレ
コードのために生成され得るシーケンス番号の要素例を示す。図示された実施形態におい
ては、シーケンス番号は4つの要素、n1−ビットSMSバージョン番号1302、n2
−ビットタイムスタンプまたはエポック値1304、n3−ビットサブシーケンス番号1
306及びn4−ビットパーティション番号1308、を含み得る。いくつかの実装にお
いては、128ビットのシーケンス番号が使用されてよく、例えば、n1、n2、n3及
びn4は、それぞれ、4、44、64及び16ビットであり得る。バージョン番号130
2は、例えば、SMSソフトウェアのどのバージョンがシーケンス番号を生成するために
使用されたのか区別を容易にするために、単にSMSソフトウェアバージョンのロールア
ウトを、混乱を避けるために使用され得る。バージョン番号1302は、少なくともいく
つかの態様において変更が頻繁に行われることを想定していない。タイムスタンプ値13
04は、例えば、取り込みサブシステムノードによってローカルクロックソースまたはグ
ローバルにアクセス可能なクロックソース(例えば、getCurrentEpochま
たはgetCurrentTime APIを実装するプロバイダネットワークの状態管
理システム)から取得され得る。少なくともいくつかの実装においては、時間においてよ
く知られたポイントからのオフセットは、(例えば、1970年1月1日の協定世界時0
0:00:00から経過した秒数であり、Unix(登録商標)ベースのオペレーティン
グシステムで、様々な時間に関連したシステムコールによって得ることができる)タイム
スタンプ値1304に使用され得る。いくつかの実施形態では、サブシーケンス番号10
36は、記憶サブシステムによって生成されてよく、特定のパーティションのデータレコ
ードが記憶装置に書き込まれる順を示してよい。このように、多数のデータレコードが所
与の秒内に受信され、タイムスタンプ値1304が約1秒から2秒の間隔でのみ変更する
実装においては、サブシーケンス番号1306は、たまたま同一の秒内に到着し、そのた
め同一のタイムスタンプ値の割り当てられるデータレコードに対し、レコードが到着(ま
たは記憶)する順のインジケータとしての役割をしてよい。いくつかの実施形態では、パ
ーティション番号1308は、所与のストリーム内のパーティションを固有に識別し得る
。対応するデータレコードが取り込まれるシーケンス番号のタイムスタンプが(少なくと
もほぼ)クロックタイムを示す少なくともいくつかの実装においては、シーケンス番号が
特定の種類の時間ベースの検索要求のためのインデックス機構に使用され得る。例えば、
クライアントは、特定の日または特定の時間範囲の間に生成され取り込まれたストリーム
レコードを検索することを希望し、シーケンス番号はデータレコードの適切なセットを検
索する暗黙の二次インデックスのキーとして使用され得る。このように、少なくともいく
つかの実施形態においては、並べられた記憶及び検索に対するタイムスタンプを含むシー
ケンス番号の使用は、時間的なインデックスを格納されたデータレコードのセットに提供
する追加の利点を有し得る。
所与のパーティションのデータレコードは、典型的には、シーケンス番号順に(例えば
、ディスクに)書き込まれ、しばしば大規模な連続的な書き込み操作を使用して書き込ま
れる。いくつかの実施形態では、前述したように、イテレータベースのプログラムによる
インタフェースは、データコンシューマがシーケンス番号順にデータレコードを読み込む
ことができるように実装され得る。図14は、少なくともいくつかの実施形態による、S
MSでのストリームデータレコードを順番に並べられた記憶及び検索する実施例を示す。
パーティションSj〜Pk(ストリームSjのk番目のパーティション)の、6つのデー
タレコード110A〜110Fがシーケンス番号順に格納されていることを示す。図示さ
れているように、シーケンス番号は少なくともいくつかの実施形態において、連続してい
ない場合がある。例えば、値がタイムスタンプ部1304に割り当てられる手法か、また
は上述したサブシーケンス番号1306は、それらの要素に対して必ずしも連続値になる
とは限らないからである。
図14に示された実施例においては、データコンシューマは、イテレータが作成するよ
う要求し、シーケンス番号「865」での開始を明示する。要求に対して、SMSは、イ
テレータ1を初期化し、要求された開始シーケンス番号よりも大きいか等しい、最も近い
シーケンス番号でデータレコードに配置する。この場合、シーケンス番号870のデータ
レコード110Cは、イテレータの開始位置として選択されており、次のより低いシーケ
ンス(データレコード110Bに割り当てられた860)は、コンシューマの要求におけ
る開始シーケンス番号よりも小さい。このgetIteratorインタフェースは、パ
ーティション内の要求された位置でカーソルを設定するための要求の論理等価として考え
られ、getNextRecordインタフェースは、次に、例えばシーケンス番号順に
ストリームに沿ってカーソルを移動するために、カーソルの位置から始まるデータレコー
ドを読み出すために使用され得る。図示された実施例では、データコンシューマはget
NextRecordインタフェースを“iterator”のセットをIterato
r1に、“maxNumRecords”(データレコードを返す最大数)のセットを3
にするパラメータで起動する。したがって、SMS検索サブシステムは、データレコード
110C,データレコード110D及びデータレコード110Eをその順でデータコンシ
ューマに返す。イテレータのIterator1は、例えば、データレコード110Fの
ような、新しい位置に移動され、getNextRecordが完了を宣言した後、次に
同一のイテレータに対するgetNextRecordの起動は110Fで始まるデータ
レコードを返し得る。getIteratorの宣言のセマンティックスはいくつかの実
施形態において異なり得る。例えば、特定のシーケンス番号よりも大きいか等しい、最も
近いシーケンス番号でデータレコードでイテレータを配置する。イテレータは、いくつか
の実施形態で、要求されたシーケンス番号と等しいかまたは低い最も近いデータレコード
に配置され得る。別の実施形態では、クライアントはgetIteratorの呼び出し
における現在のシーケンス番号を特定しなければならない可能性がある。例えば、要求さ
れたシーケンス番号がストリーム中に存在しない場合、エラーが返され得る。
パーティションマッピング
前述したように、様々なパーティション及び再分割ポリシによる様々な実施形態におい
ては、所与のストリームのレコードの取り込み、記憶、検索及び処理に関するワークロー
ドは、細分化され、いくつかのノードに分散される。図15は、少なくともいくつかの実
施形態による、SMSノード及びSPSノードのために作成され得るストリームパーティ
ションマッピング1501及び対応する構成決定の実施例を示す。例えばクライアントに
よるcreateStream APIの起動に対応して、特定のデータストリームが作
成されるか初期化されるとき、パーティショニングポリシはストリームのために有効にさ
れ、ストリームの任意の所与のデータレコードがメンバと考えられるか、パーティション
を決定するために使用され得る。所与のデータレコードに対して操作を実行する、取り込
みサブシステム204、記憶サブシステム206、検索サブシステム208及び任意の関
連するSPSステージ215の特定のノードは、レコードのパーティションを基準にして
選択され得る。一実施形態では、所与のデータレコードに使用される少なくとも制御ノー
ドのサブセットは、パーティションにも基づいて選択され得る。少なくともいくつかの実
施形態においては、データレコードの動的再分割は、例えば、ポリシに示されたトリガ条
件または明示的な要求に対応して、パーティションポリシの一部として支援され得る。
様々な実施形態では、所与のデータレコードに選択されたパーティションは、レコード
に対しては、パーティションキーに依存し、その値はデータ生成部によって直接(例えば
、パラメータの書き込みまたは要求として)または間接的(例えば、SMSは、データ生
成部のクライアントの識別子若しくは名前、データ生成部のIPアドレス、またはパーテ
ィションキーとしてデータレコードの実際のコンテンツの一部のようなメタデータを使用
し得る)の何れかで供給され得る。1つ以上のマッピングの機能1506は、図15に示
された実施形態のデータレコードのパーティション識別子1510を決定するために、デ
ータレコードのパーティションキーまたは属性1502に適用されてよい。一実装におい
ては、例えば、所与のパーティション識別子1510は、128ビットの整数値のスペー
スの連続した範囲にわたって、表し得る。ストリームのすべてのパーティションに対する
範囲のユニオンが、128ビットの整数値が仮定する、すべての可能な値をカバーし得る
。このような例示的な場合においては、1つの単純なマッピング機能1506は、データ
レコードのパーティションキー値(単数または複数)から128ビットのハッシュ値を生
成するか、データレコードの属性値を選択されてよく、パーティションの識別子は、ハッ
シュ値がある特定の隣接する範囲に基づいて決定され得る。いくつかの実装においては、
隣接する範囲は、少なくとも最初はサイズが等しく、その他の実装では、異なるパーティ
ションは、互いにサイズが異なり得る隣接する範囲に対応する。再分割は、また、1つの
実装において範囲の境界を調整する結果となり得る。その他のパーティション機能106
は、異なる実装で使用され得る。
データストリームが(さらに詳細に下記に記載されているように)動的再分割された場
合、特定のキーを有するレコードがマップされるパーティションは変更し得る。したがっ
て、少なくともいくつかの実施形態においては、SMS及び/またはSPS制御ノードは
、ストリームの耐用年数の間、ストリームに適用する、いくつかの異なるマッピングを把
握する必要がある。いくつかの実施形態では、タイムスタンプの有効性の範囲1511の
ようなメタデータまたはシーケンス番号の有効性の範囲は、各パーティションマッピング
に制御ノードによって格納され得る。タイムスタンプの有効性の範囲1511は、例えば
、特定のマッピングM1は、ストリームの作成時間から時間T1までを適用し、異なるマ
ッピングM2はT1からT2等に適用することを表し得る。ストリームに向けられた読み
出し要求に応答して、検索ノードは、どのマッピングが(例えば読み出し要求に示された
シーケンス番号に基づいて)使用され、次にそのマッピングを適切な記憶ノードを識別す
るために使用する。
少なくともいくつかの実施形態では、SMS制御ノード及びSPS制御ノードは、いく
つかの異なる粒度でパーティションをリソースにマッピングする役割をし得る。例えば、
図15の例示的な実装1599に示されているように、1つの実装、各取り込み、記憶、
検索または処理(ワーカ)ノードは、実装され得る。サーバ仮想マシン内でそれぞれの処
理、または実行のそれぞれのスレッドとしてJava(登録商標)仮想マシン(JVM)
またはコンピュートインスタンス、及び各JVMまたはコンピュートインスタンスは特定
の物理ホストでインスタンス化され得る。いくつかの実施形態では、多数のJVMは、単
一のコンピュートインスタンス内で起動されてよく、リソースのマッピング決定の別の層
を加える。したがって、所与のパーティションには、1つ以上の制御ノードが、どの特定
のリソースが取り込みノード1515、記憶ノード1520、検索ノード1525または
処理ステージワーカノード1530(例えば、ステージPS1またはステージPS2に対
してそれぞれ、ノード1530Aまたはノード1530B)として使用されるべきか、選
択し得る。制御ノードは、また、それらのノードをサーバ(取り込みサーバ1535,ス
トレージサーバ1540,検索サーバ1545または処理サーバ1550のように)にマ
ッピングすること、及びサーバとホスト(取り込みホスト1555、ストレージホスト1
560、検索ホスト1565またはSPSホスト1570A/ホスト1570B)との間
をマッピングすることを決定し得る。いくつかの実装においては、パーティションマッピ
ングは、示されている様々なリソースの粒度(例えば、ノード、サーバ及びホスト粒度)
のそれぞれに、識別情報(例えば、リソースの識別子)を含むと考えられ得る。機能15
06自身と同様に、機能1506への入力として使用されるデータレコードの属性の表示
が使用される。制御サーバは、メタデータ記憶にてパーティションマッピングの表示を記
憶し得る。いくつかの実施形態では、(getPartitionInfoAPIのよう
な)様々なAPIまたはその他のプログラムによるインタフェースを暴露して、データ生
成部、データコンシューマまたはSMSサブシステムのノードまたはSPSにマッピング
の情報を提供し得る。
データレコードをパーティションにマッピングすること、及びパーティションからリソ
ースにマッピングすることは、(a)所与のノード、サーバまたはホストは、いくつかの
実施形態において、多数のパーティションの役割をするよう設計され得る、または(b)
破損またはその他のトリガは、所与のパーティションまたはパーティションのセットに割
り当てられた新しいノード、サーバまたはホストがもたらされる可能性があるというよう
な、様々な要因からさらにいくつかの実施形態においては複雑になり得る。加えて、上記
に示したように、また下記に記載するように、所与のストリームに対するパーティション
マッピングは、ストリームレコードがSMSノード及び/またはSPSノードによって処
理され続ける一方、時間の経過とともに動的に修正され得る。その結果、マッピングのメ
タデータのいくつかのバージョンは、いくつかの実施形態においては、少なくとも一時的
に所与のストリームに保持されるため、それぞれは異なる時間にそれぞれ対応し得る。
動的ストリームの再分割
図16は、少なくともいくつかの実施形態による、動的ストリームの再分割の実施例を
示す。図16に示された時系列の時間T1で、ストリームS1が作成されるか初期化され
る。パーティションマッピングPM1は、ストリームS1のために作成され、時間間隔T
1からT2の間に有効を維持する。T1とT2との間のSMSによって受信された3つの
データレコードは、一例として示されている。データレコード110A(DR110A)
は、クライアントが供給するパーティションキー値「Alice」とともに送信され、D
R110Bはクライアントが供給するパーティションキー値「Bill」とともに送信さ
れ、DR110Cは、クライアントが供給するパーティションキー値「Charlie」
とともに送信される。初期のマッピングPM1において、すべての3つのデータレコード
110A、データレコード110B及びデータレコード110Cは、パーティション識別
子「P1」を備える同一のパーティションにマッピングされる。P1データレコードには
、単一のノードI1が取り込みを処理するために構成され、単一のノードS1は、記憶装
置を処理するために構成され、単一のノードR1は、検索を処理するために構成され、及
び単一のワーカノードW1は、SPS処理を行うために構成される。PM1をマッピング
する有効な範囲の開始のタイムスタンプはT1に設定されている。
時間T2、ストリームS1は、図16の例示的な時系列において動的に再分割される。
図示された実施形態において、データレコードは継続して到着し、SMS及びSPSによ
って処理される。再分割がいつ起こるのかに関係なく、SMSまたはSPSの何れもオフ
ラインにする必要はない。例えば、取り込み、記憶、検索または処理ノードにおいてオー
バーロード状態の検出に対応して、様々なサブシステムの異なるホストでのワークロード
レベル間のずれ、または不均衡の検出に対応して、またはデータコンシューマ若しくはデ
ータ生成部からの要求に対応して、再分割はいくつかの要因のいずれかの結果として開始
され得る。図示された実施形態において、PM2に示された有効範囲の開始タイムスタン
プの設定によって示されるように、新しいマッピングPM2は、時間T2(またはT2の
直後)で影響を及ぼす。少なくともいくつかの実装においては、データレコードの属性の
異なるセットは、再分割の前に使用されたよりもデータレコードの分割に使用され得る。
場合によっては、追加の分割の属性は、(例えば、SMSの要求で)データ生成部によっ
て送信され得る。一方、その他の場合では、追加の属性はSMS取り込みノードによって
生成され得る。このような追加の属性は「塩漬けされた」属性と称され得る。再分割に追
加の属性を使用する技術は、「塩漬けする」と称され得る。一例示的な実装においては、
オーバーロードした取り込みサーバは、データ生成部(例えば、データ生成部によって実
行されるSMSクライアントライブラリコード)に示してよく、再分割には、無作為に選
択された小整数値が以前に使用されたパーティションキーに加えて提供される。元のパー
ティションキーと塩漬けされた追加の整数との組み合わせは、その後に、取り込みノード
の異なるセットに取り込みワークロードを分散するために使用され得る。いくつかの実施
形態では、検索ノード及び/またはデータコンシューマは、再分割に使用される追加の属
性に関して通知される必要があり得る。このような追加の属性は、少なくともいくつかの
実装において、再分割に使用されなくてよい。
図16に示す実施形態では、T2前の同一のキーのために選択されたパーティションに
対して、新しいパーティションマッピングは、T2の後に受信されたデータレコードの少
なくともいくつかのために選択された、異なるパーティションの結果になる。DR110
Pは、パーティションキー値「Alice」でT2の後に送信され、DR110Qは、パ
ーティションキー値「Bill」でT2の後に送信され、DR110Rは、パーティショ
ンキー値「Charlie」でT2の後に送信される。図示された場合においては、PM
2のマッピングを使用して、DR110Pは、パーティション「P4」のメンバに指定さ
れ、DR110Qは、パーティション「P5」のメンバに指定され、一方、DR110R
は、パーティション「P6」のメンバに指定される。図示された実施形態において、T2
の後の受信として示される、例示的なデータレコードの何れも、以前に使用されたパーテ
ィションの「P1」のメンバとして指定されない。その代わりに、完全に新しいパーティ
ションが、再分割後に使用され得る。いくつかの実施形態では、少なくともいくつかの以
前に使用されたパーティションが再分割後に使用され続けてよい。新しいパーティション
のP4、P5及びP6のそれぞれには、異なるノードが取り込み、記憶、検索及び/また
は処理に指定され得る。例えば、ノードI4、ノードS4、ノードR4及びノードW4は
、パーティションP4に構成されてよく、ノードI5、ノードS5、ノードR5及びノー
ドP5は、パーティションP5に構成されてよく、ノードI6、ノードS6、ノードR6
及びノードP6は、パーティションP6に構成されてよい。いくつかの実施形態では、同
一の記憶ノードは、再分割前のこのようなレコードに使用されたように、再分割後の特定
のパーティションキーまたは属性を備えるレコードに使用され得る。しかしながら、その
ノード(例えば、異なるディスク、異なるディスクパーティションまたは異なるSSD)
内の異なる記憶位置は、再分割後に使用され得る。
T2での動的再分割後、少なくともある時間、検索要求は、再分割の前にSMS取り込
み及び/または記憶サブシステムによって処理された、データレコードのために、継続し
て検索されてよい。少なくともいくつかの場合においては、要求されたデータレコードは
、データレコードが取り込まれた時に有効である、PM1マッピングに基づいて検索され
る必要があり得る。したがって、図16に示されたように、データ検索の目的で、PM1
及びPM2の両方は、T2の後のある時点で継続して使用され得る。少なくともいくつか
の実装においては、データレコードは、古くなるにつれて、ストリームから最終的に削除
され、より古いパーティションマッピングは、また、最終的に破棄され得る。例えば、す
べての対応するデータレコード自体が削除される。いくつかの実施形態では、削除される
代わりに(または削除の前に)、ストリームレコードは、SMSによって使用されるパー
ティションマッピングは、アーカイブの後、レコードを検索することが依然として不可能
なように、記憶位置または記憶装置の異なるセットに、(例えば、クライアントが選択し
たアーカイブポリシに基づいて)アーカイブされ得る。このような実施形態においては、
アーカイブストレージに向けられた検索要求を支援する必要がある限り、PM1及びPM
2のようなパーティションマッピングは保持され得る。いくつかのアーカイブの実装にお
いては、ストリームパーティションマッピングが保持される必要のない、異なる検索手法
が使用され得る(例えば、新しいインデックスがアーカイブされたデータレコードのため
に作成され得る)。いくつかの実施形態では、再分割の前に使用されたが、再分割の後、
書き込みがもはや指示されない、P2のようなパーティションは、再分割の後ある時点で
読み込みのために「閉じられ」得る。例えば、「パーティションの最後に達しました」と
いうエラーメッセージの等価は検索要求に対して提供され得る。
いくつかの実装においては、所与のデータストリームは、多数(例えば、何十万)のパ
ーティションに分かれ得る。ストリームS1が初めに1000のパーティションのP1,
P2,・・・,P1000に分かれる例示的な場合を考える。1つのパーティション、例
えばP7に対応するオーバーロード状態が検出される場合、データレコードP7を初期の
マッピングを変更することは価値があり得るが、その他のパーティションのマッピングは
、変更される必要はない。1つの手法においては、2つの新しいパーティションP100
1及びP1002が、再分割操作を介して作成され得る。その属性が元々、(すなわち、
元のマッピングを基準として)P7におけるメンバの結果となる再分割後に受信されたレ
コードは、再分割後、つまり、2つのパーティションのうち、P7のワークロードを分配
した後、P1001またはP1002のいずれかにマッピングされ得る。残余のパーティ
ション、例えばP1〜P6及びP8〜P1000は、修正される必要はなくてよい。小さ
なパーティションのサブセットのみがこのような再分割によって影響を受けるため、少な
くともいくつかの実施形態では、パーティション入力(またはパーティション入力のツリ
ー)の有向非巡回グラフのような組み合わされたデータ構造が、生成され、格納され得る
。各入力は、パーティション機能の出力範囲と、有効な時間範囲(入力のパーティション
情報が有効である時間)を示し得る。前述の例では、P7を含む再分割は、時間T2で実
行された。一方、ストリームS1(及びその初期のマッピング)は時間T1で作られる。
このような場合においては、P7に関する入力の有効な時間は「T1からT2」であり、
P1001及びP1002の有効な時間は「T2以降」、及び残りのパーティションの有
効な時間は、「T1以降」であろう。このような組み合わされたデータ構造の使用は、少
なくともいくつかの実装における、パーティションマッピングのメタデータに使用される
、メモリまたはストレージに実質的な減少につながり得る。上記の例では、パーティショ
ンP7を2つの新しいパーティションに分けることが記載されていた。少なくともいくつ
かの実装においては、パーティションはまた、再分割をする間にマージされ得る。例えば
、比較的少ない検索要求が受信され、または比較的少ないレコードが送信された、2つの
隣接したパーティションは、単一のパーティションにマージされ得る。任意の所与の時点
では、データレコードが属するパーティションは、パーティションの機能及び有効な時間
範囲の情報を使用して、明確に決定され得る。時間の経過とともに、組み合わされたデー
タ構造は、より多くの分割及び/またはマージが実行されながら発展し得るが、メタデー
タを分割するために必要な全空間は、急激に増加し得ない(分割の頻度、分割によって影
響を受けるパーティションの平均数)。対照的に、異なる実施形態では、再分割が起こる
たびに、ストリームのための変更されていないメタデータのセットの全体が、複製され、
再分割の影響を受けたパーティションのための入力とセットで組み合わされ得る。パーテ
ィションマッピングのメタデータのためのストレージ及びメモリの要求は、後の実装にお
いては、さらに速い速度で増加し得る。特に以前のマッピングが上記のように、再分割後
の少なくともある時点で、保持される必要があり得る。
タイムスタンプ値(図13bに示されたタイムスタンプ値1304のような)を含むシ
ーケンス番号が使用される、少なくともいくつかの実施形態では、シーケンス番号の推移
の特定の種類は、動的再分割のために実装され得る。図13bに示されているのと同様に
、タイムスタンプベースのシーケンス番号のスキームがストリームS1に使用される一例
として考えると、新しいタイムスタンプ値が常にシーケンス番号で生成される動的再分割
が支援される少なくともいくつかの実装においては、動的再分割後割り当てられたシーケ
ンス番号は、(再分割に対応して、選択された初期のタイムスタンプ値から始まる)動的
再分割前に使用されるものと異なるタイムスタンプ値のセットをすべて使用し得る。例え
ば、動的再分割がコミットする(すなわち、有効になる)時間で使用されるタイムスタン
プ値がTkであった場合には、コミット後に発行される新しいシーケンス番号は、Tk+
1以降のタイムスタンプ値を使用する必要があり得る。シーケンス番号値が、図13bに
使用されるスキームにおける少なくともいくつかの上位ビットをタイムスタンプ値を符号
化するため、記載されたように、タイムスタンプの境界に対応する再分割のイベントは、
順次、検索要求に対応して使用されるマッピングの識別に関する記帳を簡素化し得ること
を確実にする。したがって、このような実装においては、特定のシーケンス番号を特定す
る検索要求が受信されると、タイムスタンプ値がシーケンス番号から抽出されてよく、再
分割後のマッピングが使用されるべきか、または再分割前のマッピングが使用されるべき
かを容易に判断され得る。抽出されたタイムスタンプ値が、再分割のために選択された初
期のタイムスタンプよりも低い場合には、再分割前のマッピングが使用されてよく、抽出
されたタイムスタンプ値が再分割に選択された初期のタイムスタンプ値に等しいかまたは
高い場合には、再分割後のマッピングが使用され得る。
ストリームの管理及び処理の方法
図17は、少なくともいくつかの実施形態による、ストリームレコードの取り込み及び
ストリームレコードの検索用のプログラムによるインタフェースのそれぞれのセットを支
援するために実行され得る、操作の態様を示すフローチャートである。要素1701に示
されているように、例えば、SMSのクライアントまたはデータ生成部のクライアントか
ら、データストリームを作成するか初期化する要求が受信され得る。ストリームに使用さ
れる初期のパーティションマッピングは、決定され得る(要素1704)。例えば、特定
のデータレコードが属するパーティションを識別するのに使用される機能(単数または複
数)、及び機能(単数または複数)に使用される入力パラメータは、パーティションポリ
シに基づいて識別され得る。前述のように、SMSの制御コンポーネントは、様々な実施
形態で、ストリームの作成要求を受信し、応答する役割をし得る。ストリームの作成及び
初期化が実行される方法(その他の制御プレーン操作と同様に)は、一実施形態から別の
実施形態によって異なり得る。一実施形態では、例えば、制御サーバの冗長グループが確
立されてよく、その冗長グループのプライマリ制御サーバは、(例えば、初期パーティシ
ョンマッピング、取り込みノード、記憶ノード及び検索ノード等の初期のセット)新しい
ストリームのために、永続性記憶位置に、適切なメタデータを生成し格納することによっ
て、ストリーム作成要求に応答してよい。ストリームに関する次のクエリに対する応答(
例えば、所与のパーティションの役割をするバックエンドノードに関するフロントエンド
の取り込みノードからの要求)は、格納されたメタデータを使用するプライマリ制御サー
バによって生成され得る。SMS制御プレーンの機能の別の実装では、ストリーム構成の
メタデータは、取り込みサブシステム、記憶サブシステムまたは検索サブシステムの少な
くともいくつかのノードによって直接アクセス可能なデータベースに格納され得る。スト
リームが作成し初期化された後、典型的には制御コンポーネントと追加の相互作用をせず
に、レコードの送信、記憶及び検索のようなデータプレーンが開始してよく、対応するサ
ブシステムのそれぞれのコンポーネントによって処理されてよい。
いくつかの実施形態では、データ生成部は書き込み要求を有する明示的なパーティショ
ンキーを送信する必要はなくてよい。一方、その他の実施形態においては、パーティショ
ン機能に使用される入力は、データ生成部の識別、データレコードが受信されるIPアド
レス、またはデータレコード自身のコンテンツからのような、書き込み要求に関連するメ
タデータに基づいて決定され得る。少なくとも一実装においては、クライアントは所望に
より、データレコードの送信におけるパーティションの識別子を供給し、追加のパーティ
ション機能は、このような実装にいて必要とされなくてよい。
ストリームのための取り込み機能、記憶機能及び検索機能用のノードの初期セットを決
定または構成するとき、いくつかの異なる要素が考慮に入れられ得る(要素1707)。
例えば、(ストリームが分けられるパーティションの数及びパーティションの関連する予
想サイズを決定し得る)パーティションマッピング自体、このような情報が入手可能な場
合には予想される取り込み率及び/または検索率に関する情報、ストリームデータレコー
ドのための耐久性/永続性の要件、及び/または(図9及び図10に示されたものと類似
の冗長グループの設定になり得る)様々なサブシステムのための高可用性の要件は、異な
るサブシステムのノードの数と配置に影響し得る。加えて、クライアントが、(図11、
図12a及び図12bに示されるように)様々なカテゴリのノードに対して配置先種類の
基本設定を示し得る実施形態においては、このような基本設定は、また、SMS及び/ま
たはSPSノードに使用されるリソースを決定する上で役割をし得る。少なくともいくつ
かの実施形態においては、取り込み、記憶及び/または検索機能の実行が可能なノードの
それぞれのプールは、前もって設定され、制御コンポーネントは、作成される新しいスト
リームのそれぞれにこのようなプールの選択されたメンバを割り当て得る。その他の実施
形態では、少なくともいくつかの場合においては、新しい取り込みノード、記憶ノードま
たは検索ノードは、ストリームが作成または初期化されるときにインスタンス化される必
要があり得る。
図示された実施形態における取り込みノードでは、レコードは、例えば、(データは送
信要求に含まれている)インラインの送信インタフェースを含む、データレコードの送信
(要素1710)のために実装されたプログラムによるインタフェースのセットのいずれ
かを介して受信され、参照によるバイリファレンス送信インタフェース(アドレスが送信
要求に提供され、たとえば、ウェブサービス要求またはその他のインタフェースを使用し
てデータがSMS取り込みノードまたはSMS記憶ノードによって検索され得る。)いく
つかの異なる種類のプログラムによるインタフェースのいずれかは、レコードを送信する
方法のそれぞれに、異なる実施形態に提供され得る。例えば、それぞれのアプリケーショ
ンプログラミングインタフェース(API)は、インライン対バイリファレンス送信のた
めに支援され得る。ウェブページまたはウェブサイトは確立され、グラフィカルユーザイ
ンターフェースが実装され、またはコマンドラインツールが開発され得る。少なくともい
くつかの実施形態においては、SMSは各取り込みレコードにシーケンス番号を割り当て
得る。例えば、レコードが取り込みまたは格納される順に表示し、シーケンス番号はデー
タコンシューマによって検索要求に使用可能であり得る。検索サブシステムノードでは、
レコード検索要求は、実装されたプログラムによる検索インタフェースの任意のセットを
介して受信され、要求されたデータレコードのコンテンツは、応答(要素1713)に提
供され得る。非シーケンシャルなアクセスには、例えばインタフェースは、(getIt
eratorの起動で示されたシーケンス番号に基づいて、イテレータがパーティション
内で選択された位置でインスタンス化されるように要求する)getIteratorま
たは(特定のシーケンス番号を備えたデータレコードを取得するための)getReco
rdWithSequenceNumberを含み得る。シーケンシャルなアクセスには
、(イテレータの現在位置から始まる順、または特定のシーケンス番号から始まる順に、
いくつかのレコードを要求する)getNextRecordのようなインタフェースが
実装され得る。少なくともいくつかの実施形態においては、異なる検索インタフェースは
、それに関連する異なる課金率を有し得る。例えば、シーケンシャル検索のためのレコー
ド課金毎の率は、非シーケンシャル検索に対するレコード毎の課金率より低く設定され得
る。異なる送信インタフェースは、またいくつかの実施形態において、異なる課金率を有
し得る。例えば、バイリファレンス送信は、インライン送信よりもレコード毎の費用がよ
りかかり得る。
時間の経過とともに、制御ノードまたは特定の課金サーバは、ストリーム管理サービス
(要素1716)の様々なサブシステムで実装される異なるプログラムによるインタフェ
ースに対する使用メトリクスを収集し得る。例えば、このメトリクスは、異なるプログラ
ムによるインタフェースの起動カウントと、(単一起動で多数のレコードを検索するため
に使用され得るgetNextRecordのような、少なくともいくつかのインタフェ
ースのための起動カウントとは異なり得る)取り込まれるか検索されるレコードの総数と
、取り込まれるか検索されるデータの総量等とを含み得る。ストリームを所有するクライ
アントまたはストリームからデータを生成及び/若しくは消費するクライアントに請求さ
れる課金額は、プログラムによるインタフェース(要素1719)に関連する、少なくと
も部分的に使用メトリクス及びそれぞれの課金率に基づいて、所望により生成され得る。
少なくともいくつかの実施形態においては、課金動作は、ストリーム取り込み/検索操作
に関して非同期であり得る。例えば、請求書はその月の間に収集されたメトリクスに基づ
いて月毎の請求期間の最後に生成され得る。
図18aは、少なくともいくつかの実施形態による、ストリーム処理ステージ(SPS
)を構成するよう実行され得る、操作の態様を示すフローチャートである。要素1801
に示されているように、プログラムによるインタフェースは、クライアントがストリーム
データレコードのためにいくつかの処理ステージ構成可能にするよう実装され得る。例え
ば、特定のステージを構成するために、クライアントは、ステージで分割されたストリー
ムデータレコード上で実行される処理操作(単数または複数)を示してよく、処理される
データの入力ストリームの識別のような、その他のパラメータと同様に、処理操作の出力
のための分散ポリシが取得され得る。いくつかの実施形態では、SPSステージでの処理
操作は、冪等に必要であり得る。その他の実施形態では、非冪等の操作は、また、少なく
ともいくつかのステージで支援され得る。所与のステージで実行される処理が非冪等であ
る場合、クライアントは依然として、いくつかの実施形態で、ワーカノードが定期的に、
いくつかの永続性のある外部位置に操作の出力をフラッシュするように構成し、レコード
検索シーケンスに関してフラッシュ操作がいつ実行されたか記録し、及び後に交換された
ワーカノードが回復中にフラッシュ操作を再操作するよう構成することで、回復に関連し
た冪等の利益を取得することが可能である。少なくともいくつかの実施形態においては、
並行してストリームデータ上で操作しているいくつかの異なる状態、及びその他のステー
ジに入力ストリームとして使用されるいくつかのステージの結果を備える、クライアント
は有向非巡回グラフ(DAG)またはその他の処理ステージのグラフを構成することが可
能であり得る。いくつかの実施形態では、永続性ストリームよりもむしろ、1つ以上の一
過性は、異なるステージ間で作成され得る。例えば、1つのステージからのデータレコー
ド出力は、異なるステージに入力として入れられる前に、必ずしも永続性記憶装置に格納
されない。
例えば、チェックポイントベースの回復ポリシまたはベストエフォート回復ポリシを含
む、いくつかの実施形態では、いくつかの異なる回復ポリシのいずれかは、SPSステー
ジに実装され得る。一実施形態では、クライアントは異なるSPSステージに対する回復
ポリシを選択するために、プログラムによるインタフェースを使用し得る。チェックポイ
ントベースの回復が使用されるステージでは、ワーカノードは、プログレスレコードまた
は間隔毎のチェックポイントを格納するよう構成され、ストリームパーティション内でワ
ーカノードがどのくらいまで達したのか示し得る(例えば、一番最近処理されたレコード
のシーケンス番号がプログレスのインジケータとして格納され得る)。図19を参照して
以下に記載されたように、プログレスレコードは、破損後の復旧操作の間、後に使用され
得る。ベストエフォートリカバリポリシにおいては、プログレスレコードは格納される必
要がなく、破損に対応して構成される交換されたワーカノードは、受信されるときに新し
いデータレコードを単に処理し得る。所与のSPSステージグラフまたはワークフローの
中では、いくつかの実施形態において異なる回復ポリシが異なるステージに適用され得る
SPS制御サーバは、例えば、要素1801において示されたプログラムによるインタ
フェースの1つを介して、パーティションポリシPPol1による、ストリームS1の特
定のステージPS1で実行される冪等操作Op1の表示を受信してよく、処理の結果が出
力分散ディスクリプタDDesc1に従って分散される(要素1804)。状態PS1の
ために構成されるワーカノードの数及び、ノードに必要な仮想リソースまたは物理リソー
スは、例えば、Ppol1冪等操作Op1の複雑性及びワーカノードに使用されるリソー
スの遂行能力(要素1807)のような様々な要因に基づいて、決定され得る。
ワーカノードは、次にインスタンス化され、例えば、選択された仮想または物理マシン
リソースで、プロセスまたはスレッドとして構成され得る(要素1810)。単純な一実
装においては、例えば、1つのワーカノードは、S1の各パーティションに最初に割り当
てられ得る。所与のワーカノードは、(a)S1の検索ノードの適切なサブセットからデ
ータレコードを受信し、(b)受信されたデータレコード上でOp1を実行し、(c)所
望により、例えば、PS1のために回復ポリシに基づいて、パーティションレコードのセ
ットが処理されたことを示すプログレスレコード/チェックポイントを格納し、及び(d
)DDesc1(例えば、中間永続性ストリームまたは一過性ストリームへの入力、また
はその他の処理ステージまたは記憶システムへの直接入力)によって示された宛先に出力
を伝送するよう構成され得る。少なくともいくつかの実施形態においては、SPS処理は
、継続的にどこかに伝送される必要がある任意の出力を必ずしも生成しなくてよいことに
注意する。例えば、いくつかのSPSアプリケーションは、単にデータレコードの一時的
なリポジトリとして機能し、及び/またはユーザがデータレコードを見ることを可能にす
るクエリのインタフェースを実装し得る。このようなアプリケーションは、出力を管理し
得る。例えば、出力は受信されたクエリに対応して生成され得るが、分散されたディスク
リプタにより生成されない。ロギングに関連したSPSアプリケーションは、大規模な分
散システムから収集された最終日のログレコードを保持し、例えば、クライアントがデバ
ッグまたは分析の目的でロギングデータを見ることを可能にする。したがって、いくつか
の実施形態では、出力分散ディスクリプタは、SPSの少なくともいくつかのステージ、
少なくともいくつかのストリーム、または少なくともいくつかのパーティションのために
特定される必要はない。ワーカノードは、次に、それぞれの構成の設定(要素1813)
通りに、検索を開始し、データレコードを処理し始め得る。少なくともいくつかの実施形
態においては、SPS制御ノードは、ワーカノード(要素1816)に使用されるリソー
スにおけるリソース利用レベルのような、様々なその他のメトリクスと同様に、(例えば
、ハートビートプロトコルのように応答性チェックを使用して)ワーカノードのヘルスス
テータスを監視し得る。ワーカノードから収集される情報は、下記に記載するように、例
えば、ワーカノードは置換えられ、回復ポリシが実装されるべき場合にフェイルオーバが
必要か否かを決定するために使用され得る。
いくつかの実施形態では、実装可能なSPSクライアントのライブラリは、クライアン
トが所有する構内でSPSワーカノードを、及び/またはクライアントが選択するプロバ
イダネットワークのリソースを実装することを希望するクライアントに提供され得る。ク
ライアントのライブラリはまた、SPSクライアントが、ヘルス監視機能、自動ワークロ
ード監視及び分散、セキュリティ管理、動的再分割等のような、SPS管理サービスの様
々な制御プレーン特徴の使用を希望する程度を選択するのを可能にし得る。図18bは、
少なくともいくつかの実施形態による、ストリーム処理ワーカノードの構成のための、ク
ライアントのライブラリコンポーネントの起動に対応して実行され得る操作の態様を示す
フローチャートである。要素1851に示されるように、SPSクライアントのライブラ
リは、(例えば、図18aに図示したように、操作の種類を実行するよう構成されるマル
チテナントのSPS管理サービスのウェブサイトからダウンロードを介して)提供され得
る。ライブラリは、いくつかの実行可能なコンポーネント及び/またはクライアントのア
プリケーションにリンク可能なコンポーネントを含み得る。いくつかのライブラリのコン
ポーネントは、クライアントが、選択、SPS管理サービスを登録、または1つ以上のS
PSステージのストリーム処理操作が実行される、様々なワーカノードの所望の特性を明
示することを可能にし得る。例えば、あるクライアントは、ワーカノードのためのプロバ
イダネットワークの仮想計算サービスで実装されるコンピュートインスタンスのセットを
使用することを希望してよい。一方、別のクライアントは、ストリームレコードを処理す
るために、(プロバイダネットワークによって支援されない専用装置のような)クライア
ント自身のデータセンタに配置された計算装置を使用することを希望してよい。クライア
ントはワーカノードをクライアントの構内において必要に応じて、または所望により、仮
想計算サービスのコンピュートインスタンスを使用してオンラインにし得る。このような
オンデマンドでのワーカノードのインスタンス化に加え、またはその代わりに、いくつか
の実施形態では、クライアントは、必要な時に配置され得る、潜在的に再利用可能なワー
カノードのプールを事前に構成し得る。いくつかの実装においては、ライブラリコンポー
ネントは、クライアントが、指定されるステージのワーカノードのようなクライアントに
よってインスタンス化される、SPS管理サービス、特定のプロセスまたはスレッドでの
登録を可能にするよう実行または起動されてよく、後の制御プレーン操作がSPS管理サ
ービスによって処理され得る。一実施形態では、クライアントは、またワーカノードのた
めにSPS管理サービスによって処理される異なるレベルの制御プレーンの役割から選択
することも可能であり得る。例えば、あるクライアントは、ワーカノードのヘルス状態を
監視するためにクライアント自身のカスタムモジュールを使用することを希望し、一方、
別のクライアントはワーカノードのヘルス状態を監視し、破損が検出された場合には適切
な行動を取るためのSPS管理サービスを利用することを希望し得る。
SPS管理サービスは、特定のクライアントは、特定のSPSステージPS1(要素1
854)のワーカノード及び/または制御プレーン操作を構成するクライアントのライブ
ラリを使用することを希望するという表示を受信し得る。(PS1自体は、ライブラリに
含まれるプログラムによるインタフェースまたはSPS管理サービスによって露出される
プログラムによるインタフェースを使用して設計されてよく、これは図4に示されたウェ
ブベースのインタフェースに類似している)クライアントはまた、データがPS1による
入力として使用するために検索されるストリームを示し得る。所望により、少なくともい
くつかの実施形態においては、クライアントは、例えばクライアントがノードのために、
サービスのヘルス状態の監視能力を使用することを希望するか、または独自のヘルス状態
を監視するツール(要素1857)を使用することを希望するかに対するPS1に制御プ
レーンを設定を示し得る。クライアントによって示された基本設定に応じて、クライアン
トの使用するために構成されるSMS及び/またはSPSの1つ以上のノードは、決定さ
れ得る(要素1860)。ネットワークの接続性は、SMS及び/またはSPSのノード
へのクライアントのワーカノード、並びに/またはその他の構成操作は、データレコード
が流れ、かつ所望の結果を処理することを可能にするために実行され得る。データレコー
ドは、検索要求を受信するとSP1ワーカノードに提供され、所望の制御プレーン操作(
クライアントによってそれが要求された場合)は必要に応じて実行され得る。少なくとも
いくつかの実施形態においては、クライアントが、SMS管理サービスの様々なサブシス
テムの制御プレーンの機能性を使用することを希望する範囲の制御を可能にする類似の手
法も、あるいはその代わりに実装され得ることに注意する。
図19は、少なくともいくつかの実施形態による、ストリーム処理のために1つ以上の
リカバリポリシを実装するために実行され得る、操作の態様を示すフローチャートである
。要素1901に示されているように、SPS制御ノードは、特定のワーカノードを置き
換えるためのトリガ基準が合致したと決定し得る。例えば、ワーカノードは応答しなくな
るか、ヘルス状態でなくなり、現在のノードのワークロードレベルは、フェイルオーバの
ため閾値に達し、ワーカノードで検出された、いくつかのエラーは、閾値を超え、または
ワーカノードの何か別の予期しない状態が識別され得る。置換えられたワーカノードは識
別されるかインスタンス化され得る(要素1904)。いくつかの実施形態では、入手可
能なワーカスレッドのプールが設定され、置き換えとして選択されてよく、例えば、新し
いスレッドまたはプロセスが開始され得る。
ベストエフォートリカバリポリシが、特定のワーカノードが動作しているSPSステー
ジで(要素1907にて決定される際に)使用される場合には、置き換えられたワーカノ
ードは、入手可能になるときに(要素1916)、追加のデータレコードを単に処理し始
めてよく、例えば、置換えられたワーカノードの進捗記録は確認されない。チェックポイ
ントベースの回復ポリシが使用される場合、置換えられたワーカノードは、置換えられた
ワーカノードによって格納されたプログレスレコードにアクセスし得る位置の表示(例え
ば、記憶装置のアドレスまたはURL)は、提供され得る(要素1910)。置換えられ
たワーカノードは、置換えられたノードによって格納された直近のプログレスレコードを
検索し、置換えられたワーカノードが、ステージの冪等操作を実行(要素1913)すべ
きデータレコードのセットを決定するためにプログレスレコードを使用し得る。このよう
なチェックポイントベースの回復ポリシにおいては、最後のプログレスレコードと置換え
られたワーカノードがインスタンス化される時間との間の持続時間に応じて、置換えられ
たワーカノードが、記憶されたプログレスレコード以降の、追加のレコードを処理した速
度と同様に、いくつかの数のデータレコードが2回以上処理され得る。実行されるこの操
作は冪等である場合には、このような反復操作は少なくともいくつかの実施形態では、良
くない影響を有し得ない。置換えられたワーカノードが、以前に格納されたプログレスレ
コードに基づいて、反復の回復操作を実行した後、少なくともいくつかの実施形態では、
置き換えのワーカスレッドは、そのプログレスレコードを格納してよく、回復が完了した
ことを示し、新しく受信されたデータレコード(要素1916)上の通常のワーカスレッ
ド操作を開始してよい。
図20は、少なくともいくつかの実施形態による、データストリーム用の複数のセキュ
リティオプションを実装するために実行され得る、操作の態様を示すフローチャートであ
る。要素2001に示されているように、クライアントがデータストリームの管理及び処
理のために、例えば、異なる機能カテゴリ(例えば、取り込み、記憶、検索、処理または
制御ノード)のノードのための配置先の種類の選択肢を含む、様々なセキュリティオプシ
ョンから選択するのを可能にする、1つ以上のプログラムによるインタフェースが実装さ
れ得る。配置先の種類は、様々なセキュリティプロフィールに関連する態様において、互
いに異なり得る。SMSまたはSPSノードに使用されるリソースの物理位置は、いくつ
かの実施形態において、宛先の種類によって異なり得る。例えば、プロバイダネットワー
クデータセンタに配置されるインスタンスホストのようなリソースは、ノードに使用され
得る。またはクライアントが所有する設備のリソースが使用され得る。または第三者のリ
ソースが使用され得る。ネットワーク隔離レベルまたはその他のネットワークの特徴は、
少なくともいくつかの実施形態において、宛先の種類によって異なり得る。例えば、いく
つかのSMSノードまたはSPSノードは、隔離された仮想ネットワーク内、または、専
用の隔離された物理リンクを介してプロバイダネットワークに接続されたクライアントが
所有する設備でインスタンス化されてよい。一実施形態では、特定の種類のSMSノード
またはSPSノードは、入手することも可能なマルチテナントのインスタンスホストを使
用する代わりに、プロバイダネットワークのシングルテナントのインスタンスホストに確
立されることをクライアントは示し得る。少なくともいくつかの実施形態においては、様
々な種類の暗号化の選択肢はまた、セキュリティに関連するプログラムによるインタフェ
ースを介して選択され得る。
クライアントのセキュリティプロフィールの選択またはストリームS1のための1つ以
上の機能カテゴリのノードに関する基本設定は、セキュリティに関連するプログラムによ
るインタフェースを介して受信され得る。例えば、クライアントは機能カテゴリFC1(
例えば、クライアントはクライアントが所有する構内でSPSワーカノードを実装したい
と希望し得る)のノードに1つのセキュリティプロフィール及び異なる機能カテゴリFC
2のノードに異なるセキュリティプロフィール(例えば、クライアントはプロバイダネッ
トワークデータセンタでのSMS取り込みノードまたは記憶ノードの実装を希望し得る)
(要素2004)を選択し得る。場合によっては、クライアントは類似のセキュリティプ
ロフィールですべての異なる機能カテゴリのノードを設定すると決定し得る。SMS及び
/またはSPSは、いくつかの実施形態では、様々な機能カテゴリに対し、デフォルトの
配置先種類を定義し得る。例えば、クライアントが支持しない限り、すべての機能カテゴ
リのノードはプロバイダネットワークの隔離された仮想ネットワーク内に設定され得る。
異なる機能カテゴリのノードは、次に、セキュリティプロフィール及び/または位置に
対するクライアントの基本設定に基づいて(またはクライアントが基本設定を提供しない
機能カテゴリのデフォルトの設定に基づいて)(要素2007)構成され得る。構成は、
例えば、適切な物理ホストまたは物理マシンを選択すること、適切なコンピュートインス
タンス、仮想マシン、異なる機能カテゴリのノードのプロセス及び/またはスレッドをイ
ンスタンス化すること、ノード間の適切なネットワーク接続を確立すること、を含み得る
。いくつかの実施形態では、異なるストリーム管理及び処理機能に対する実行可能なライ
ブラリのコンポーネントは、構成の一部としてプロバイダネットワークの外部ホストにイ
ンストールするために提供され得る。
少なくともいくつかの実施形態による、暗号化モジュールは、例えば、クライアントに
よって示された暗号の基本設定によって、またはデフォルトの暗号化設定(要素2010
)に基づいてノードの1つ以上のカテゴリで作動され得る。様々な機能カテゴリのノード
は、次に、クライアントの希望で(要素2013)、ストリームデータが取り込まれ、格
納され、検索され及び/または処理されるように作動されてよい。
図21は、少なくともいくつかの実施形態による、データストリームのためのポリシを
動的再分割を実装するために実行され得る、操作の態様を示すフローチャートである。要
素2101にて示すように、パーティションポリシは、データストリームのために決定さ
れ得る。ポリシは、例えば、データストリームを再分割するための1つ以上のトリガ基準
と同様に、データ生成部によって供給されるキーに基づいて、または送信されるデータレ
コードの様々な属性に基づいて、パーティションにデータレコードを初期にマッピングす
ることを含み得る。例えば、いくつかの実施形態では、ハッシュ関数がパーティションキ
ーまたはキーに適用されてよく、128ビット整数のハッシュ値を生成する。可能な12
8ビット整数の範囲は、N連続副範囲に分かれてよく、それぞれはストリームのNパーテ
ィションのひとつを表す。いくつかの実施形態では、パーティションの数及び/または副
範囲の関連するサイズは、ストリームによって異なってよい。少なくともいくつかの実施
形態においては、代理してストリームが構成されるクライアントは、パーティションスキ
ームの使用、例えば、使用される所望のパーティションの数、所望のパーティション機能
の特徴に関する、入力を提供し得る。少なくとも1つの実施形態においては、クライアン
トはパーティションの識別子または送信されるデータレコードのいくつか、またはすべて
の名前を提供し得る。
ストリームのデータレコードが受信されると、それぞれのパーティションは供給された
キー及び/またはその他の属性に基づいて決定され得る。また、取り込み、記憶及び検索
ノードの適切なセットは、識別されるパーティション(要素2104)のために選択され
得る。少なくともいくつかの実施形態においては、それぞれのシーケンス番号(要素21
07)は、例えば、所与のパーティションのレコードが受信された順を示すデータレコー
ドのために生成され得る。シーケンス番号は、タイムスタンプ値(例えば、よく知られた
1970年1月1日の協定世界時00:00:00などからの経過秒数)、記憶サブシス
テム、SMSソフトウェアのバージョン番号及び/またはパーティション識別子から取得
されるサブシーケンス値のようないくつかの実装においていくつかの要素を構成し得る。
シーケンス番号はいくつかの実施形態では、データ生成部に、例えば、送信されたデータ
レコードの正常な取り込みへの応答に、提供され得る。いくつかの実施形態では、シーケ
ンス番号はデータコンシューマによって、ストリームのデータレコードまたはパーティシ
ョンを取り込み順に検索し、使用され得る。
データレコードは、パーティションポリシ(要素2110)に基づいて向けられた、ス
トレージノードで、少なくともいくつかの実施形態では、シーケンス番号順に格納され得
る。回転磁気ディスクの記憶装置が使用される実施形態では、シーケンシャルライトが典
型的には、受信されたデータレコードをディスクに保存するために使用され得る。それに
よってディスクシークレイテンシを避ける。少なくともいくつかの実装においては、不揮
発性のバッファは、例えば、ディスクシークの確立をさらに減少させるために、レコード
をディスクに記憶する前にライトキャッシュとして使用され得る。シーケンス番号によっ
て並べられた多数のデータレコードの読み込みに対する要求(例えば、getNextR
ecordまたは類似のインタフェースの起動)に対応して、データレコードは、記憶装
置(要素2113)からシーケンシャルリードを使用して後に読み込まれ得る。
図22は、少なくともいくつかの実施形態による、データストリームの動的再分割を実
装するために実行され得る、操作の態様を示すフローチャートである。要素2201に示
されるように、ストリームが、(例えば、SMSまたはSPSの制御コンポーネントで)
動的に再分割されるべきであると決定され得る。いくつかの異なるトリガ条件が、取り込
み、記憶、検索、処理または制御ノードのうち1つ以上で、過負荷の検出のようなストリ
ームを再分割する決定、または異なるノードのワークロードレベルにおける不均衡の検出
、またはクライアント(例えば、データ生成部またはデータコンシューマ)から受信され
得る再分割要求に誘導し得る。いくつかの実装において、クライアントの再分割要求は、
生成される修正されたマッピングの様々なパラメータのような、要求された再分割の特定
の詳細を含み得る(例えば、特定のパーティションが組み合わされ、または分割などされ
るべき、追加または削除された、パーティションの数)。一実装においては、クライアン
トによる再分割の要求は、クライアントが解決を希望する(負荷の不均衡のような)問題
のある状態を示し得る。また、SMSまたはSPSは、問題のある状態の記載を適切な再
分割の操作に変換する役割があってよい。場合によっては、問題のある状態を再分割また
は記載することを要求する代わりに、クライアントは再分割に使用するためにトリガ基準
を特定し得る。データストリームにおけるデータの耐久性要件の変更を決定するのは、再
分割をトリガし得る。いくつかの実施形態では、例えば、ストリームレコードのために、
異なるセットの記憶装置または異なる記憶技術を選択する結果になり得る。データストリ
ームの使用状況の変化(例えば、データレコードが生成または消費される速度)の検出は
、また、場合によっては、再分割をもたらし、また、変更された使用状況により適切な、
異なる記憶技術または異なる記憶装置のセットを使用することになり得る。例えば、再分
割の決定は、所与のパーティションまたはストリーム全体に予想される読み出し及び書き
込みの速度には、SSDは回転磁気ディスクよりも、より適切な記憶技術であり得るとい
う判断をもとになされ得る。予定された、または間近に迫ったソフトウェア及び/または
ハードウェアのバージョン改訂は、一実施形態では、再分割をトリガし得る。場合によっ
ては、課金または請求についての懸念は、再分割をトリガし得る。クライアントが予算の
制約があることを示す場合には、異なるパーティション手法または異なる格納手段を使用
してより効率的になり得る。変更された性能目標は、また少なくともいくつかの実施形態
では、再分割をトリガし得る。図22に示された実施形態においては、再分割後に割り当
てられるシーケンス番号に使用される、初期のタイムスタンプ値は、(1970年1月1
日の協定世界時00:00:00秒からのオフセットのように、エポック値は、典型的に
は、いくつかのオペレーティングシステムにおけるシステムコールを介して入手可能であ
る)選択され得る(要素2204)。いくつかの実装においては、プロバイダネットワー
クで実装されるグローバル状態管理部は、getEpochValue APIを支援し
てよく、例えば、均一なタイムスタンプ値を取得するためにSMS及び/またはSPSの
様々なコンポーネントがシーケンス番号の生成のために使用されることを可能にする。そ
の他の実装においては、その他の時間源が使用され得る。例えば、SMSまたはSPS制
御ノードは、その他のコンポーネントに均一に並べられたタイムスタンプ値を提供するよ
う指定され得るか、またはローカルシステムコールの起動が使用され得る。いくつかの実
施形態では、タイムスタンプ値は、任意の特定のホストで、必ずしも壁時計時刻に対応す
る必要がない。例えば、単調増加整数カウンタ値が単に使用され得る。
修正されたパーティションマッピングは、再分割の決定時に使用されるマッピングとは
異なり、ストリームのために生成され得る(要素2207)少なくともいくつかの実施形
態においては、変更されたマッピングは、特定のパーティションキーを有するデータレコ
ードを、再分割前にマップされた同一のキーを有するデータレコードと異なるパーティシ
ョンにマップし得る。いくつかのパーティション(典型的には、使用頻度が高いパーティ
ション)が分割され得る。一方、その他の(典型的には、使用頻度が低い)パーティショ
ンが、再分割及び/または観察されたワークロードメトリクスのためのトリガ条件に応じ
て、組み合わされ得る。いくつかの実施形態では、異なるパーティション機能が、再分割
の前よりも再分割後に使用され得る。例えば、異なるハッシュ関数、またはハッシュ関数
による結果をパーティションに細分化するための異なる手法が使用され得る。いくつかの
実装においては、例えば、128ビット整数、128ビット整数空間の連続的な範囲に対
応するパーティションは、再分割後に副範囲の異なるセットに分けられ得る。少なくとも
いくつかの実施形態においては、取り込み、記憶、検索、処理または制御ノードの新しい
セットは、新しく作成されたパーティションに割り当てられ得る。いくつかの実装におい
ては、空間効率のよい組み合わされたデータ構造は、初期のマッピング及び修正されたマ
ッピング(要素2208)の両方を表すために使用され得る。例えば、有向非巡回グラフ
またはツリー構造は格納されてよく、各入力は、修正されたパーティションに対応するレ
コードのみが再分割の結果として変更が必要であるように、パーティション機能出力範囲
(例えば、所与のパーティションに対応するパーティションのハッシュ関数の結果の範囲
)の表示及び有効な時間範囲を含み得る。再分割の間に変更されないパーティションの入
力は、データ構造中で修正される必要がない可能性がある。新しいノードは、修正された
パーティションマッピング(要素2210)を実装するよう構成され得る。少なくともい
くつかの実施形態においては、以前のマッピングを基準にして格納されたデータレコード
に対する検索要求が少なくともある時に継続して受信され得るため、従来のノード及び従
来のマッピングは、ある時に保持され得る。特定のシーケンス番号またはタイムスタンプ
を明示する読み出し要求が受信されると(要素2213)、新しいパーティションマッピ
ングか、または従来のパーティションマッピングを使用して読み出し要求を満たすかにつ
いての決定が(例えば、制御ノードまたは検索ノードで)され得る。選択されたマッピン
グは、次に、要求されたデータが取得される、適切な記憶ノードを識別するために使用さ
れ得る。
図23は、少なくともいくつかの実施形態による、データストリームレコード用の少な
くとも1回のレコードの取り込みポリシを実装するために実行され得る、操作の態様を示
すフローチャートである。要素2301に示されるように、1つ以上のプログラムによる
インタフェースは、クライアントが、データストリームのために、例えば、(a)肯定応
答が受信されるまで、どちらのレコード送信者がレコードを1回以上送信したかによる、
少なくとも1回のポリシまたは(b)どちらの応答が少なくともいくつかのレコード送信
に提供されないかによる、ベストエフォート取り込みポリシを含む、いくつかの取り込み
ポリシの選択肢から、レコード取り込みポリシを選択可能なように実装され得る。いくつ
かのデータを生成するクライアントは、その他の人と同じようには、レコードのほんの一
部分の潜在的な損失については心配しない可能性がある。そのためベストエフォートの取
り込み手法を選択し得る。いくつかの実装においては、ベストエフォートの取り込みのた
めに構成されたストリームに対しても、SMSは、データレコードのいくつかのサブセッ
トに対して応答を依然として提供し得る。または、ベストエフォートポリシはデータレコ
ード毎に応答を必要とはしないものの、すべてのデータレコードに対する応答の提供を試
みようとさえし得る。
要求は、特定のストリーム(要素2304)のために使用される特定の取り込みポリシ
を示す、プログラムによるインタフェースの1つを介して受信され得る。取り込みノード
は、ストリームに影響するパーティションポリシによって、インスタンス化され得る(要
素2307)。同一データレコードの1つ以上の送信が取り込みノードで受信されると(
要素2310)、異なる動作が、有効な取り込みポリシに依存して行われ得る。少なくと
も1回取り込みポリシが使用されると(要素2313において決定されるように)、応答
は、1つ以上の送信のそれぞれのために、データ生成部に送信され得る。しかしながら、
データレコードは記憶サブシステム(2316)にて1度のみ保存され得る。(ストリー
ムのために有効な永続性ポリシによる、所与のレコードのN複製が場合によっては、格納
され得る。しかしながら、所与のデータレコードがM回数送信されると、複製は送信のう
ち1つのみに対して生成され得る。すなわち、格納されたレコードの複製の全体数は、依
然としてNであり、NxMではないことに注意する)。ベストエフォート取り込みポリシ
が有効であった場合には、(要素2313においても検出されるように)データレコード
は記憶装置にて依然として1度のみ保存され得る。しかしながら、応答はデータ生成部(
要素2319)に送信される必要はない。少なくともいくつかの実施形態においては、ク
ライアントの請求額は、所望により、少なくとも部分的に選択された取り込みポリシ(要
素2322)に基づいて、決定され得る。前述したように、いくつかの実施形態では、少
なくとも1回の取り込みポリシの2つのバージョンは、支援され得る。図23に示された
ものと同様に、1つのバージョンにおいて、SMSは、データレコードを複製を排除する
機能があり得る(すなわち、2つまたはそれ以上の送信のセットの1つのみに対応して、
データがSMS記憶サブシステムに格納されることを確実にする)。少なくとも1回の取
り込みの異なるバージョンにおいては、SMSによるデータレコードの複製が許可され得
る。後者の手法は、ストリームアプリケーションには有用であり得、データレコードの複
製の否定的な結果が少数であるか、全く無い。及び/またはそれぞれの複製を排除を実行
するストリームアプリケーションであり得る。
図24は、少なくともいくつかの実施形態による、データストリーム用の複数の永続性
ポリシを実装するために実行され得る、操作の態様を示すフローチャートである。要素2
401に示されるように、クライアントが複数の永続性ポリシからストリームデータレコ
ードのために永続性ポリシを選択可能にする、1つ以上のプログラムによるインタフェー
スが実装され得る。永続性ポリシは様々な面のいずれかにおいて、互いに異なり得る。例
えば、(a)保存すべきいくつかの複製の数が異なり得る(例えば、N個の複製対2つの
複製対単一の複製ポリシが支援され得る)(b)使用されるストレージの位置/装置の種
類が異なり得る(例えば、回転磁気ディスク対SSD対RAM対データベースサービスま
たはマルチテナントストレージサービス)及び/または(c)ポリシが大規模な破損に対
する回復力の予想される範囲が異なり得る(例えば、マルチデータセンタ対シングルデー
タセンタポリシが支援され得る)。要求が、特定のストリーム(要素2404)のため、
特定の永続性ポリシのクライアントの選択を示す受信され得る。いくつかの実施形態では
、クライアントに選択された永続性ポリシは、所与のストリームのそれぞれのパーティシ
ョンのための異なる記憶位置の種類または装置の種類の使用をする結果となり得る。一実
施形態では、ストリームレベルまたはパーティションレベルの何れかで、クライアントよ
りもむしろSMSが記憶位置の種類または装置の種類を選択し得る。いくつかの実施形態
では、クライアントは、(所望の読み出し及び書き込みスループットまたは待ち時間のよ
うな)データの耐久性及び/または性能の目標を示し得る。いくつかの実施形態では、永
続性ポリシを選択する際に、これらの目標は、適切な記憶装置の種類または位置を選択す
るために、SMSによって使用され得る。例えば、短待ち時間が所望される場合には、S
SDは、1つ以上のパーティションまたはストリームのデータレコードを格納するために
、回転磁気ディスクの代わりに、使用され得る。
1セットの取り込みノードは、データ生成部からの選択されたストリームのデータレコ
ードを受信するよう決定または構成され得る。また、ストレージノードセットは、選択さ
れた永続性ポリシを実装するように構成され得る(要素2407)。データレコードが取
り込みノードにおいて受信されるとき(要素2410)、1つ以上のデータレコードのコ
ピーが、データレコードが属するパーティションの役割をするストレージノードによって
選択された記憶装置で、選択された永続性ポリシに基づいて格納され得る(要素2413
)。少なくともいくつかの実装においては、請求額は所望により(及び/または非同期的
に)、クライアントによって選択された特定の永続性ポリシに基づいて、決定され得る(
要素2416)。
ストリーム処理のための分散化したワークロード管理
いくつかの実施形態では、SPSの実質的な部分または制御プレーンの機能性のすべて
は、例えば、(ワーカノードへのパーティションの割り当て、動的パーティションへの応
答、ヘルス監視及び/または負荷分散のような)様々な制御操作を調整する所与のSPS
ステージ内のワーカノードによって、データベーステーブルのような、共有されたデータ
構造を介して、分散化された方法で実装され得る。所与のワーカノードW1は、例えば、
どのステージの入力ストリームのパーティションが(もしあれば)、現時点では処理され
ていない共有されたデータ構造内の入力であるか決定するために調べ得る。このようなパ
ーティションP1が発見されるときには、W1は、W1がP1のレコード上でステージの
処理操作を実行することを示すために、共有されたデータ構造中の入力をアップデートし
得る。その他のワーカノードは、W1はP1レコードを処理するために割り当てられ、ま
た、したがって、異なるパーティションをP1レコードに割り当て得ることを学習し得る
。ワーカノードは定期的に、または場合により、SMS制御プレーンにクエリを送信して
、入力ストリームに有効な現在のパーティションマップを決定し、また、必要であれば(
例えば、再分割の結果として)マップの変更を示す共有されたデータ構造をアップデート
し得る。負荷分散及びその他の操作は、また、様々な実施形態において下記に記載される
ように、共有されたデータ構造を介して調整され得る。いくつかのこのような分散化され
た実装においては、専用の制御ノードは、SPSに必要とされず、そのためSPSワーク
フローを実装するのに必要なオーバーヘッドを低減する。このような分散化されたSPS
制御プレーンの実装は、例えば、顧客またはプロバイダネットワーク外の位置に割り当て
られるプロバイダネットワーク内のコンピュートインスタンスのような、SPSクライア
ントライブラリを利用してストリーム処理の様々な態様を実装する、特に予算に敏感な顧
客には人気があり得る。分散されたSPS制御プレーン技術は、また、クライアントライ
ブラリが使用されていない実施形態において使用され得る。例えば、SMS及びSPSに
使用されるすべてのリソースがプロバイダネットワーク内に構成されている場合である。
ワーカノードが、少なくともいくつかの処理ステージのための、いくつかのまたはすべて
のSPS制御プレーン機能を実装するSPSは、本明細書においては、「分散された制御
SPS」と称する。
図25は、少なくともいくつかの実施形態による、処理ステージのワーカノードがデー
タベーステーブルを使用してワークロードを調節するストリーム処理システムの例を示す
。分散された制御SPS2590内では、2つのステージ215A及びステージ215B
は、ワーカノードのそれぞれのセットで定義される。ステージ215Aは、ワーカノード
2540A及びワーカノード2540Bを備え、一方、ステージ415Bは、ワーカノー
ド2540K及びワーカノード2540Lを備える。ステージ215A及びステージ21
5Bのそれぞれには、対応するパーティションの割り当て(PA)テーブル2550は、
ステージ215AにはPAテーブル2550A及びステージ215NにはPAテーブル2
550Bのような、データベースサービス2520で作成される。いくつかの実施形態で
は、所与のステージに対するPAテーブル2550は、例えば、クライアントライブラリ
コンポーネントまたは機能の起動に対応して、ステージの初期化中に作成され得る。各P
Aテーブル2550は、入力の初期セットで、またはステージの入力ストリームの未割り
当てのパーティションを表す行が備えられ得る(すなわち、ワーカノードが現時点で割り
当てられていないパーティション)。例示的なカラムまたはPAテーブル入力の属性は、
図26に示され、以下に記載されている。ステージのために開始されるワーカノード25
40(例えば、コンピュートインスタンスまたはその他のサーバで開始されるプロセスま
たはスレッド)は、ステージのPAテーブルに読み出し/書き込みアクセスを許可され得
る。ワーカノードからPAテーブルに向けられる読み出し及び書き込みは、ワーカノード
2540A、2540B、2540K及び2540Lに対し、それぞれ2564A、25
64B、2564K及び2564Lの矢印で図25において示されている。
所与のワーカノード2540は、PAテーブル中の入力を調べることによって、ステー
ジの処理操作を実行する特定のパーティションを選択するよう構成され得る。一実装にお
いては、ワーカノード2540Aは、未割り当てのパーティションPkの入力を見つけら
れるまでPAテーブル2550Aにおける入力をスキャンし、入力をアップデートするこ
とによって、例えば、ワーカノードの識別子を入力のカラムのうちの1つに挿入すること
によって、パーティションPkの割り当てを試み得る。このような挿入は、ワーカノード
によってパーティションをロックすることに類似していると考えられ得る。使用されるデ
ータベースのサービスの種類によって、同時にPAテーブルの入力への書き込みを潜在的
に管理するための異なる手法(例えば、ほぼ同時に未割り当てのパーティションを期せず
して識別する、2つまたはそれ以上のワーカノードによって)が、使用され得る。
一実施形態では、プロバイダネットワークの非リレーショナルマルチテナントデータベ
ースサービスが使用されてよく、強い整合性及び条件付き書き込み操作を支援するリレー
ショナルデータベースのトランザクションセマンティクスを必ずしも支援せずに、条件付
きの書き込み操作は、ワーカノードによるアップデートのような場合で使用され得る。P
Aテーブル中のパーティションに割り当てられた特定のワーカノードの識別子を示すため
に、カラム「ワーカノードID」が使用される例、及びワーカノードがパーティションに
割り当てられないカラムの値が「null」に設定されるを考える。このような場合にお
いては、識別子WID1を備えるワーカノードは、以下の論理的等価を要求し得る。「パ
ーティションPkに対する入力においては、ワーカノードIDはnullであり、次に、
その入力に対するワーカノードIDをWID1に設定する」。このような条件付きの書き
込み要求が成功する場合には、識別子WID1を有するワーカノードは、パーティション
Pkが割り当てられると仮定され得る。ワーカノードは次に、パーティションPkのデー
タレコードを検索し、例えば、矢印2554(例えば、ワーカノード2540A、254
0B、2540K及び2540Lに対し、それぞれ2554A、2554B、2554K
及び2554Lの矢印)で示されるように、SMS検索サブシステム206のレコード検
索インタフェースを使用して、及び検索レコード上の処理操作を実行し始め得る。条件付
きの書き込みが失敗すると、ワーカノードは異なる未割り当てパーティションに対して検
索を開始し得る。その他の実施形態では、トランザクションを支援する(リレーショナル
データベースのような)データベースサービスが使用されてよく、トランザクションの機
能性は条件付きの書き込み操作の等価を実装するために使用され得る。例えば、ワーカノ
ードの成功にパーティションを割り当てる、複数の同時(またはほぼ同時)の試みのうち
1つのみを確保するために、このような同時の試みに含まれるワーカノードは確実に成功
または失敗を通知される条件付きの書き込みまたはトランザクションの支援のどちらにも
依存しない同期技術は、いくつかの実施形態で使用され得る。データベースサービスが使
用されなくてよい、いくつかの実装においては、その代わりに、ロッキングサービスが、
PAテーブルに類似の永続性データ構造における入力をアップデートするため、排他アク
セスを取得するために、ワーカノードによって使用され得る。
その他のワーカノード2540は、PAテーブルにおける入力を調査し、どちらのパー
ティションが未割り当てかを決定し、それらに1つ以上のパーティションを割り当てする
ことに結果的に成功し得る。このように、ステージの入力ストリームのパーティションま
たはストリームのためのワークロードを処理することは、結果的に、ステージのワーカノ
ードにより、それらに分散され得る。
任意の所与のストリームの初期のパーティションマッピングは、例えば、前述した動的
再分割操作の結果として、時間の経過とともに変化し得る。したがって、図25に示され
た実施形態に示すように、1つ以上のワーカノード2540は、場合により(または以下
に記載されるようにトリガ条件に対応して)、現在のパーティションメタデータを取得す
るために、ステージの入力ストリーム(単数または複数)のSMS制御サブシステム21
0に要求を送信し得る。いくつかの実装においては、このような要求は、矢印2544A
、2544B、2544K及び2544Lによって示されたgetStreamInfo
APIの起動のように、SMS制御プレーンAPIの起動を含み得る。SMS制御サブ
システムは、例えば、ストリームのパーティションの最新のリスト及び/またはパーティ
ションの有効時間のようなその他の詳細で応答し得る。SMS制御サブシステム210に
よって提供されたパーティション情報がPAテーブル中の入力に合致しない場合には、例
えば、1つ以上のパーティションに入力を挿入または削除することによって、PAテーブ
ルはワーカノードによって修正され得る。SMS制御サブシステムへのこのような要求2
554は、典型的には、少なくともいくつかの実施形態においては、矢印2554Aの「
低頻度」ラベルによって示されたように、レコード検索要求2554(及び/またはデー
タベースの読み出しまたは書き込み操作2564)よりもかなり低頻度である。例えば、
一旦、パーティションに割り当てられると、ワーカノードは、典型的には、(例えば、ス
トリームの所有者がストリームを閉鎖する場合、またはパーティションが動的再分割の結
果閉鎖する場合には)パーティションデータが完全に消費されるまで、または(例えば、
異なるワーカノードが、以下に記載されるように、負荷の不均衡を検出したため、パーテ
ィションの移動を要求する場合には)何か他の確立の低い環境に遭遇するまで、そのパー
ティションのデータレコードを検索し、処理し続け得る。このため、たとえ実質的な情報
量が任意の所与の起動に対応して提供される場合でも、getStreamInfoまた
はsimilarAPIの起動に関連したオーバーヘッドは、典型的には、様々な実施形
態で非常に小さくてよい(何十万かのパーティションがステージの入力ストリームに定義
される場合にはあり得る)。
したがって、分散された制御SPS環境のキーワークロード管理操作のいくつかは、図
25に図示された実施形態において、以下のように要約され得る。(a)ストリーム処理
ステージの第1のワーカノードによって、データベースのテーブルに少なくとも一部アク
セスすることに基づいて、ステージに定義された処理操作のセットを実装する、ストリー
ム処理ステージの入力データストリームの特定のパーティションを選択し、(b)テーブ
ルに格納された特定の入力に、第1のワーカノードに特定のパーティションの割り当ての
表示を書き込みし、(c)第1のワーカノードによって、マルチテナントのストリーム管
理サービスで実装されるプログラムによるレコード検索のインタフェースを使用して、特
定のパーティションのレコードを検索し、(d)第1のワーカノードによって、特定のパ
ーティションのレコード上の処理操作のセットを実装し、(e)第2のワーカノードによ
って、少なくとも部分的に特定のデータベーステーブル中の特定の入力に基づいて、第1
のワーカノードが特定のパーティション上の処理操作のセットを実行するために割り当て
られることを決定し、及び(f)第2のワーカノードによって、処理操作のセットを実行
するための異なるパーティションを選択する。ワーカノードがこれ以上のレコードが割り
当てられないパーティション内に留まることを決定する場合またはするときに、ワーカノ
ードはSMS制御サブシステムから入力ストリーム上でメタデータを要求してよく、メタ
データが不一致を示した場合にはPAテーブルをアップデートしてよい。
図26は、少なくともいくつかの実施形態による、ワークロードの調節に使用されるパ
ーティションの割り当てテーブル2550に格納され得る入力の例を示す。ここに示すよ
うに、テーブル2550は、パーティション識別子カラム2614,割り当てられたワー
カノード識別子カラム2618,ワーカノードヘルスインジケータカラム2620及びワ
ークロードレベルインジケータカラム2622の4つのカラムを備える。その他のカラム
セットがその他の実装において実装され得る。例えば、パーティション作成時間を示すカ
ラムまたはパーティション機能出力値範囲がいくつかの実施形態で使用され得る。または
ワークロードレベルインジケータカラムは使用されなくてよい。
いくつかの実施形態においては、SMS制御サブシステム(例えば、パーティション入
力ツリーの一部として、前述したグラフまたはその他の組み合わされたデータ構造)によ
って維持されたパーティションリスト2650は、少なくともある時点において、PAテ
ーブル2550に含まれるよりも多くのパーティションを含むことに注意する。図示され
た実施例において、パーティションリスト2650は、パーティションP1、P2、P3
、P4及びP5を含み、パーティションP1及びP4は再分割の結果、閉じられた状態に
示され、一方、パーティションP2、P3及びP5は動作中である(すなわち、データレ
コードが現在検索され処理されているパーティション)。PAテーブル2650は、図示
された実施形態において動作中のパーティションのための入力を含み、閉じられたパーテ
ィションのための入力を含まない(例えば、再分割が行われた後、getStreamI
nfoの起動に対応して取得されたときに、ワーカノードによって削除された可能性があ
る)少なくともいくつかの実装においては、ストリームの現在開いているパーティション
のすべてが、所与の時間でPAテーブルにおいてそれぞれの入力を必ずしも有しない可能
性がある。その代わりに、例えば、現在割り当てられ、または処理中の、それらのパーテ
ィションのサブセットのみが示され得る。
図26に示された例示的な場合においては、パーティションP1及びP2は、識別子W
7及びW3をそれぞれ有するワーカノードに割り当てられ、一方、P5は現時点では、割
り当てられていない。ヘルスインジケータカラム2620は、異なる実装において、異な
る種類の値を格納し得る。いくつかの実装においては、ワーカノードは定期的に(例えば
、毎N秒に一度、またはヒューリスティックスのいくつかのセットに基づいたスケジュー
ルによって)、割り当てられたパーティションのPA入力中のヘルスインジケータカラム
のコンテンツをアップデートして、ワーカノードが動作中であり、検索及び処理操作を継
続可能であることを示す役割をし得る。図26において、その入力のためのワーカノード
がヘルスインジケータカラムをアップデートした(「最後に修正された時間」)、直近の
時間の表示は、格納され得る。例えば、ワーカW7が、2013年12月1日の02:2
4:54及び53秒に入力を修正したと示されている。いくつかの実施形態では、その他
のワーカノードは最後に修正された時刻値を使用して、割り当てられたワーカノードが健
全化否かを判断する。例えば、ステージのためのフェイルオーバポリシにて定義されるよ
うにX秒またはX分が経過した場合、割り当てられたワーカノードは健全ではないか、ま
たはアクセス不可能であるとされ、パーティションは再割り当てされ得る。その他の実装
においては、カウンタはヘルス状態のインジケータとして使用されてよく、(例えば、カ
ウンタ値がY秒で変化しない場合には、割り当てられたワーカノードはフェイルオーバの
ための候補と判断され得る。または、割り当てられたワーカノードが最後に入力を読み出
した時を示す「最終の読み出し時刻」値が使用され得る。
少なくともいくつかの実施形態においては、ワークロードレベルのインジケータ値26
22は、例えば、いくつかの最近の時間間隔中(例えば、最後に修正された時刻の前5分
間で)に処理された、いくつかのレコードのような割り当てられたワーカノード、CPU
利用、メモリ利用、ストレージ利用などのような最近の性能に関連するワーカノードのメ
トリクスによって、入力に格納され得る。いくつかの実施形態において、このようなワー
クロードレベルのインジケータ値は、図29に関して下記に記載されるように、負荷の不
均衡が存在するか否かを決定し、検出された不均衡に対応して行動をするために、ワーカ
ノードによって使用され得る。例えば、ワーカノードWkは、ワークロードレベルが平均
のワークロードレベルより上であることを判定し、パーティションの一つに割り当てず、
または動的再分割を要求し得る。あるいは、ワーカノードWkは、ワークロードがその他
のワーカノードまたはパーティションのワークロードと比較して低すぎると判定し、追加
のパーティション自体に割り当て得る。したがって、図26に示されたPAテーブルのカ
ラムを使用して、ワーカノードは、集中化制御SPSの実装における、専用のSPS制御
ノードによって典型的に実行され得る、図示された実施形態における制御プレーンの機能
の類似の種類のいくつかを実行し得る。
図27は、少なくともいくつかの実施形態による、処理操作を実行するパーティション
を選択するために、ストリーム処理ステージのワーカノードによって実行され得る操作の
態様を示す。要素2701に示されるように、PAテーブルPAT1は、分散された制御
SPS処理ステージSP1のために、データベースサービスで初期化され得る。例えば、
テーブルは、SPSクライアントのライブラリコンポーネントが起動されるときに、例え
ば、クライアントの設備のホストから、またはプロバイダネットワークのデータセンタの
コンピュートインスタンスから作成され得る。クライアントのライブラリは様々な目的に
使用され得る。例えば、SPSステージで実装される特定の処理操作のためのJAR(J
ava(登録商標)アーカイブ)ファイルのような、実行可能なコンポーネントを提供す
るため、ワーカノードを識別するために使用され得るラベル(プログラム名、プロセス名
またはコンピュートインスタンス名)を表示するため、ステージへの入力に使用されるス
トリームを表示するため、ステージの出力先(もしあれば)を表示するため、等である。
PAT1は、いくつかの実施形態では、ステージの入力ストリーム(単数または複数)に
定義された少なくともパーティション{P1,P2,・・・}のサブセットのための入力
または列に最初に格納され得る。いくつかの実装においては、テーブルは最初は空であっ
てよく、例えば、SMS制御サブシステムからのパーティションのメタデータを取得した
結果として、1つ以上のワーカノードはテーブルを割り当てていないパーティションのた
めの列をポピュレートし得る。ワーカノード{W1,W2,・・・}の初期のセットは、
例えば、プロバイダネットワーク内の様々なコンピュートインスタンスで、またはクライ
アントが所有する計算装置で起動され得る(要素2704)。ワーカノードは、図示され
た実施形態において、PAT1への読み出し及び書き込みアクセスを許可し得る。
ワーカノードがオンラインなると、それぞれが割り当てられていないパーティションを
見つけるために、PAT1にアクセスし得る。例えば、ワーカノードW1は、PAT1を
調べ、パーティションP1が割り当てていないことを見つける(要素2707)。W1は
次にPAT1のP1の入力をアップデートする。例えば、使用されるデータベースサービ
スの種類に応じて、条件付き書き込み要求またはトランザクショナルアップデート要求を
使用して、P1がW1に割り当てられることを示す(要素2710)。テーブルをアップ
デートし、W1は、SMS検索サブシステムインタフェース(要素2713)を使用して
、P1のデータレコードの検索を開始し得る。また、検索されたレコード上のステージP
S1の処理操作を実行し得る。
その間、ある時点で、異なるワーカノードW2が、割り当てられていないパーティショ
ンを見つめようとPAT1にアクセスし得る(要素2716)。W2は、W1の以前のア
ップデートに基づいて、P1がすでに割り当てられていること、しかし異なるパーティシ
ョンP2が割り当てられていないことを判断し得る。いくつかの実施形態では、P2の現
在の受託者ワーカノードは、W2によって健全ではないか、動作中ではないことを(P2
の入力におけるヘルスインジケータカラムに基づいて)判断し、W2をP2を選択するよ
う導き得る。このように、少なくともいくつかの実施形態においては、割り当てられてい
ない状態または現在のワーカノードの健全ではない状態の判断の何れかは、再割り当て(
または最初の割り当て)のために所与のパーティションを選択するために使用され得る。
W2は、次にPAT1をアップデートしてそれ自体をP2を割り当てるよう試み得る(要
素2719)。アップデートが成功した場合には、W2はP2レコードをSMS検索イン
タフェース(要素2722)を使用して検索し始め、ステージのために定義された適切な
処理操作を実行し始める。
前述のように、分散された制御SPSワーカノードは、典型的には低頻度で、SMSか
らマッピング情報を取得してよく、必要に応じてPAテーブルをアップデートするための
このような情報を使用し得る。図28は、少なくともいくつかの実施形態による、ストリ
ーム管理サービス制御サブシステムから取得された情報に基づいて、パーティション割り
当てテーブルをアップデートするために、ストリーム処理ステージのワーカノードによっ
て実行され得る操作の態様を示す。要素2801に示されるように、割り当てられたパー
ティションの1つを閉鎖するようなワーカノードの初期化中、または様々なトリガ条件に
対応して、ワーカノードW1は最新の若しくは現在のパーティションリストまたは非アク
ティブのパーティションリストを取得するために、SMS制御サブシステムへ要求を送信
し得る。いくつかの実装においては、getStreamInfoまたは類似のAPIは
、この目的で起動され得る。その他のトリガ条件はいくつかの実施形態において使用され
得る。例えば、ワーカノードは無作為な時間量後に新規のパーティションリストを取得す
るようそれぞれ構成され得る。またはワークロードレベルにおける予期しない減少若しく
は増加に対応して取得するよう構成され得る。SMSによって返されたパーティションリ
ストは、パーティションのためのPAテーブル中の入力と比較され得る(要素2807)
。不一致が明らかになる場合には、(例えば、PAテーブル中に存在しない、新規に取得
されたパーティションリストにいくつかのパーティションがある場合、またはSMSのリ
ストに存在しないPAテーブル中の入力がある場合には、ワーカノードは、図示された実
施形態の不一致を解決するために、PAテーブル中の入力を挿入または削除し得る(要素
2810)。(いくつかの実施形態においては、現在、削除を対象とする入力は、割り当
てられたワーカノードを有する場合には、追加の調整が必要となり得る。例えば、割り当
てられたワーカノードは、直接またはPAテーブル自体を介して通知され得る)。
不一致が修正された後、または不一致が検出された場合には、ワーカノードW1は、ス
テージの処理操作を実行すべきパーティションのセットを選択し(要素2813)、した
がってPAテーブルをアップデートし得る。場合によっては、検索されたパーティション
リストに導くトリガ条件に応じて、W1は、すでに割り当てられた1つ以上のパーティシ
ョンを有し、割り当てを変更するかPAテーブルをアップデートする必要がない。W1は
次に、SMS制御サブシステムと相互作用し、PAテーブルのいくつかの入力を変更する
必要なく、割り当てられたパーティションのデータレコードの検索及びレコードの処理に
進み得る(要素2816)。最終的に、トリガ条件が検出されると、(例えば、「パーテ
ィションの最後に到達した」ことに相当する応答が検索要求に受信され、パーティション
が閉鎖されたことを示す。W1は新しいパーティション情報のためにSMS制御サブシス
テムへの要求を再度、送信し、要素2801以降の操作が繰り返され得る。
図29は、少なくともいくつかの実施形態による、ストリーム処理ステージのワーカノ
ードによって実行され得る負荷分散操作の態様を示す。要素2901に示されるように、
ワーカノードW1は、負荷分散分析は、高リソース利用レベルの検出のような、様々なト
リガ条件のいずれかの検出によって、または構成可能なスケジュールに基づいて、ステー
ジ上で実行されると判断し得る。W1はステージのために様々なワークロードメトリクス
を判断するためPAテーブル(要素2904)の入力を調査し得る。このようなメトリク
スは、ワーカノードに割り当てられた平均の数のパーティション、(ワークロードレベル
インジケータがテーブルに保存される実施形態において)ワーカノードの平均ワークロー
ドレベルまたは異なるパーティションの平均ワークロードレベル、ワーカノードのワーク
ロード毎の範囲または分散等を含み得る。
W1は、次にワークロードを、(例えば、W1に割り当てられたいくつかのパーティシ
ョンに基づいて、及び/またはパーティション毎のワークロードレベルインジケータに基
づいて)いくつかまたはすべてのメトリクスと比較する。一般的に、W1が過負荷であり
、W1が負荷が少ない、またはW1のワークロードが高すぎもなく低過ぎもないという、
3つの種類の結果のいずれかが描かれ得る。「高すぎる」または「低すぎる」ワークロー
ドレベルは、いくつかの実施形態において、代表してステージが構成されるクライアント
によって選択されたポリシによって、またはその他の実施形態における発見のいくつかの
デフォルトのセットを使用して、定義され得る。W1がワークロードが、例えば、いくつ
かの最低負荷の閾値T1未満のように、低すぎると判断した場合には(要素2907)、
よりビジーまたはより高負荷のワーカノードWkが識別され得る(要素2910)。W1
は、次に、1つ以上のパーティションPmをWkからW1自身(要素2913)に転送す
るプロセスを開始し得る。例えば、PAテーブルのPm入力を修正することを試みること
によって、このような(Wkのために生成された通知がもたらされ得る)修正を要求する
ことによって、またはWkを直接要求することによって、開始し得る。
W1は、ワークロードが、例えば、最大閾値T2を超えるように、高すぎると判断した
場合には(要素2916)、放棄するために(すなわち、その他のワーカノードによって
割り当てをリリースするために)(要素2919)、1つ以上の割り当てられたパーティ
ションPnを識別し得る。W1は、次に、例えば、PAテーブルのPnのための入力の受
託者カラムから識別子を削除することによって、適切な入力を修正し得る(要素2922
)。W1のワークロードが高すぎもなく低過ぎもない場合には、またはW1は、ワークロ
ードを増加または減少するために、上述の動作の種類をとった後に、W1は、割り当てら
れるパーティションのレコードの処理を開始し得る(要素2925)。別の負荷分散の分
析をトリガする条件が合致するとき、または合致する場合には、要素2901以降に対応
する操作が繰り返され得る。図29に示された操作において、W1は、ワークロードに対
して不均衡を検出する場合に限り、ワークロードの変化を開始として示されるであること
に注意する。その他の実施形態では、W1は、W1自身よりもその他のワーカノードの間
の不均衡を検出する場合、例えば、W2がW3よりも低いワークロードレベルを有すると
判断した場合には、再度均衡をとる動作を開始し得る。いくつかの実装においては、W1
は、ワークロードの不均衡を検出した場合、または検出するとき、(例えば、図3または
その等価に示されたような、repartitionStream SMS APIを起
動することによって)動的再分割を要求または開始し得る。いくつかの実施形態では、図
29に示された操作の種類は、新しく構成されたワーカノードによって実行され得る。例
えば、ステージがすでにしばらくの間操作された後、新しいノードがステージに加えられ
るときに、新しいノードは、過負荷の現在のノードからパーティションの再割り当てを要
求することによって、間接的に、現在のノードの有無を通知し得る。いくつかの実施形態
では、SPSワーカノードのために、上記に類似する分散された制御技術は、1つ以上の
SMSサブシステムで使用され得るまたは代わりに使用される。例えば、取り込み、記憶
または検索サブシステムのノードは、PAテーブルに類似する共有されたデータ構造を使
用してワークロードを調整し得る。
様々な実施形態では、図17〜図24及び図27〜図29のフローチャートに示された
もの以外の操作は、上記のストリーム管理サービス及び/またはストリーム処理機能を実
装するために使用され得ることに注意する。示された操作のいくつかは、いくつかの実施
形態において実装されなくてよい。または異なる順で実装されるか、または連続して実装
されるよりもむしろ、並行して行われ得る。プログラムによるインタフェースが様々な実
施形態において支援される、SMS及びSPSの機能のそれぞれに関して、1つ以上の技
術の任意の組み合わせが、ウェブページ、ウェブサイト、ウェブサービスAPI、その他
のAPI、コマンドラインツール、グラフィカルユーザインターフェース、モバイルアプ
リケーション(app)、タブレットアプリケーション等の使用を含む、インタフェース
を実装するために使用され得ることにも注意する。
ユースケース
スケーラブルなパーティションベース、収集、検索及び段階的なストリームデータレコ
ードの処理のため、動的に構成可能に管理されたマルチテナントサービスを確立する、上
記の技術、いくつかの場合において有用であり得る。例えば、大きなプロバイダネットワ
ークは、いくつかの異なるマルチテナントのサービスインスタンスまたは同時に何万もの
クライアントに対するシングルテナントを実装する、何千ものインスタンスホストを備え
得る。様々なインスタンス及びホストにインストールされた監視及び/または課金エージ
ェントは、プロバイダネットワークのデータセンタに効果的なプロビジョニングプランを
決定するため、ネットワーク攻撃等を検出するなどのために、正確な課金レコードを生成
するために格納され分析される必要があり得る、何千ものメトリクスレコードを迅速に生
成し得る。監視レコードは、スケーラブルな取り込み及び格納のために、SMSに入力ス
トリームを形成し得る。また、記載されたSPS技術は、収集されたメトリクスの分析の
ために実装され得る。同様に、多数のログソースから大多数のログレコードを収集し分析
するアプリケーション(例えば、分散されたアプリケーションのノードからのアプリケー
ションログ、またはデータセンタにおけるホストまたはコンピュートインスタンスからシ
ステムログ)は、また、SMS及びSPSの機能を利用可能であり得る。少なくともいく
つかの環境においては、SPS処理操作は、リアルタイムのETL(抽出変換負荷)処理
操作(すなわち、オフラインで変換する代わりに、宛先にロードするために、リアルタイ
ムで受信されたデータレコードを変換する操作)またはデータウェアハウスに挿入するた
めにデータレコードの変換を備え得る。リアルタイムでデータウェアハウスにデータをロ
ードするために、SMS及び/またはSPSの組み合わせを使用することは、データが分
析のためにウェアハウスに挿入可能である前に、典型的には、1つ以上のデータソースか
らクリーンでキュレートなデータを必要とする遅延を回避し得る。
いくつかの異なる「ビッグデータ」のアプリケーションもまた、SMS及びSPS技術
を使用して構築され得る。例えば、様々な形式のソーシャルメディアの相互作用における
トレンド分析が、ストリームを使用して効率的に実行され得る。ユーザの位置情報のよう
な、携帯電話またはタブレット型コンピュータから収集されたデータはストリームレコー
ドとして管理され得る。例えば、全監視カメラから収集されたオーディオまたはビデオ情
報は、スケーラブルな方法で収集され処理され、場合により様々な種類の攻撃を防ぐ助け
となり得る、ストリーミングデータセットの別のカテゴリを表し得る。例えば気象衛星、
海洋ベースのセンサ、森林ベースのセンサ、天体望遠鏡から収集された、増える一方のデ
ータセットの分析を必要とする科学研究用のアプリケーションは、また、本明細書に記載
されたストリーム管理及び処理能力から利益を得られ得る。適応性のあるポリシベースの
構成の選択肢及び価格設定は、異なる種類のユーザがストリーミングの機能性を特定の予
算及びデータの耐久性/可用性の必要条件に適合するように、カスタマイズするのを支援
し得る。
本開示の実施形態は、以下の条項を考慮して記載され得る。
1.
システムは、
1つ以上の計算装置であって、
マルチテナントストリーム管理サービスのクライアントが、特定のデータストリームに
、複数のデータ取り込みポリシの中からデータ取り込みポリシを選択するのを可能にする
プログラムによるインタフェースの第1のセットを実装し、複数のデータ取り込みポリシ
は、レコード送信者が1回以上データレコードの表示をストリーム管理サービスに肯定応
答が受信されるまで伝送することによる少なくとも1回の取り込みポリシを含み、
クライアントが特定のデータストリームのために、複数のデータ永続性ポリシから、デ
ータの永続性ポリシを選択するのを可能にするプログラムによるインタフェースの第2セ
ットを実装し、データレコードの多数の複製のどちらがストリーム管理サービスによって
それぞれの記憶位置に格納されるかにより、複数のデータ永続性ポリシは多数の複製の永
続性ポリシを含み、
第1及び第2のセットのそれぞれのプログラムによるインタフェースを介してストリー
ム管理サービスで、クライアントが特定のデータストリームのために、少なくとも1回の
取り込みポリシを選択したことの第1の表示と、クライアントが特定のデータストリーム
のために多数の複製永続性ポリシを選択したという第2の表示を受信し、
特定のデータレコードをストリーム管理サービスに示す複数の伝送に対応して、少なく
とも1回の取り込みポリシによる複数の転送に対応する少なくとも1つの肯定応答を送信
し、
複数の伝送の特定の伝送に対応して、多数の複製の永続性ポリシによる複製の記憶位置
で、特定のデータレコードのコピーを格納するよう構成された計算装置を備える、システ
ム。
2.
どちらのストリーム管理サービスが、対応する肯定応答をレコード送信者に提供せずに
、少なくともいくつかの特定したストリームのデータレコードを受け入れ及び格納するべ
きかにより、複数のデータ取り込みポリシがベストエフォートの取り込みポリシを備える
、条項1にて説明されるシステム。
3.
クライアントによって選択された多数の複製永続性ポリシが、データレコードのコピー
の格納に使用される記憶位置の種類の表示を備え、記憶位置の種類は、(a)磁気ディス
クベースのストレージ、(b)ソリッドステートドライブ(SSD)、(c)揮発性RA
M(ランダムアクセスメモリ)、(d)不揮発性RAM、(e)データベース管理システ
ム、または(f)プロバイダネットワークによって実装されるネットワークにアクセス可
能なストレージサービスのストレージノード、のうち1つを備える、条項1にて説明され
るシステム。
4.
クライアントによって選択された多数の複製永続性ポリシは、要求されたデータ耐久性
レベルの表示を備え、1つ以上の計算装置がさらに、少なくとも部分的に要求されたデー
タの耐久性レベルに基づいて複数の記憶位置を選択するよう構成される、条項1にて説明
されるシステム。
5.
1つ以上の計算装置はさらに、特定のクライアントが少なくとも部分的に、(a)特定
のクライアントによって選択されたデータ取り込みポリシ、及び(b)特定のクライアン
トによって選択されたデータ永続性ポリシのうち、1つ以上に基づいてストリーム管理操
作に請求される請求額を決定するよう構成される、条項1にて説明されるシステム。
6.
プログラムによるインタフェースのセットを実装して、ストリーム管理サービスのクラ
イアントが、複数のデータ取り込みポリシの中から、特定のデータストリームのためにデ
ータ取り込みポリシを選択するのを可能にし、
複数のデータ取り込みポリシは、どちらのレコード送信者が1回以上データレコードの
表示を、ストリーム管理サービスに肯定応答が受信されるまで伝送するべきかによって、
少なくとも1回の取り込みポリシを含み、
プログラムによるインタフェースのセットを介して要求を受信し、クライアントが少な
くとも1回の取り込みポリシを特定のデータストリームのために選択したことを示し、
ストリーム管理サービスにおいて特定のデータレコードを示す複数の送信の受信に対応
して、
少なくとも1回の取り込みポリシによって、複数の伝送の各伝送に対応する、それぞ
れの肯定応答を送信し、
複数の伝送のうち特定の伝送の受信に応答して格納し、特定のデータストリームのた
めに選択されたデータ永続性ポリシにより、1つ以上の記憶位置での特定のデータレコー
ドのコピーを格納することを、1つ以上の計算装置によって実行することを含む方法。
7.
どちらのストリーム管理サービスが、対応する肯定応答をレコード送信者に提供せずに
、特定されたストリームの少なくともいくつかのデータレコードを受け入れ及び格納する
べきかにより、複数のデータ取り込みポリシがベストエフォートの取り込みポリシを備え
る、条項6にて説明される方法。
8.
少なくとも1回の取り込みポリシにより、ストリーム管理サービスが複製されたデータ
レコードを削除するよう構成される、条項6にて説明される方法。
9.
少なくとも1回の取り込みポリシにより、ストリーム管理サービスが、複数の伝送に対
応して、特定のデータレコードのうち2つ以上のコピーを格納するよう構成される、条項
6にて説明される方法。
10.
クライアントが特定のデータストリームのために、複数のデータ永続性ポリシから、デ
ータの永続性ポリシを選択するのを可能にするプログラムによるインタフェースの第2セ
ットの実装を、1つ以上の計算装置によって実行することをさらに含む、条項6にて説明
される方法。
11.
複数のデータ永続性ポリシが、多数の複製永続性ポリシと、単一の複製永続性ポリシを
含む、条項10にて説明される方法。
12.
データ永続性ポリシがデータレコードを格納するために使用される記憶位置の種類の表
示を備え、記憶位置の種類は、(a)磁気ディスクベースのストレージ、(b)ソリッド
ステートドライブ(SSD)、(c)揮発性RAM(ランダムアクセスメモリ)、(d)
不揮発性RAM、(e)データベース管理システム、または(f)プロバイダネットワー
クによって実装されるネットワークにアクセス可能なストレージサービスのストレージノ
ードのうちの1つを備える、条項10にて説明される方法。
13.
データ永続性ポリシは特定のデータストリームの第1パーティションに使用される記憶
位置の第1種類の表示と、特定のデータストリームの第2のパーティションに使用される
記憶位置の異なる種類の表示と、を備える、条項10にて説明される方法。
14.
クライアントによって選択されたデータ永続性ポリシは、データレコードを格納するた
めに使用される記憶位置の種類の表示を含まず、データレコードは、1つ以上の計算装置
によって、ストリーム管理サービスの1つ以上のコンポーネントにより、データレコード
を格納するために使用される記憶位置の種類の選択を実行することをさらに含む、条項1
0にて説明される方法。
15.
記憶位置の種類を選択することが、特定のデータストリームの第1のパーティションの
ための記憶位置の第1の種類を選択し、特定のデータストリームの第2のパーティション
のための記憶位置の異なる種類を選択することを含む、条項14にて説明される方法。
16.
データ永続性ポリシが目標の待ち時間の表示を含み、ストリーム管理サービスの1つ以
上のコンポーネントによって、データレコードを少なくとも部分的に目標の待ち時間に基
づいて格納するために使用される記憶位置の種類を選択1つ以上の計算装置によって実行
されることをさらに含む、条項10にて説明される方法。
17.
クライアントによって選択されたデータ永続性ポリシが、要求されたデータの耐久性レ
ベルの表示を含み、1つ以上の計算装置によって、少なくとも部分的に要求されたデータ
耐久性レベルに基づいてストリームのデータレコードが格納された複数の記憶位置の選択
をさらに含む、条項10にて説明される方法。
18.
1つ以上の計算装置によって、(a)特定のクライアントによって選択されたデータ取
り込みポリシ、及び(b)特定のクライアントによって選択されたデータ永続性ポリシの
うち少なくとも部分的に1つ以上に基づいて、特定のクライアントがストリーム管理操作
に対して請求されるべき請求額を決定することの実行をさらに含む、条項6にて説明され
る方法。
19.
(a)特定のデータレコードの1つ以上の属性に基づいて、特定のデータレコードが特
定のパーティションのメンバとして指定され、(b)いくつかのデータ取り込みノードの
うちのデータ取り込みノードが、特定のパーティションのデータレコードを取り込むため
に選択されることによる、少なくとも部分的にパーティションポリシに基づいて特定のデ
ータストリームのために構成されるいくつかのデータ取り込みノードの決定を1つ以上の
計算装置によって実行することをさらに含む、条項6にて説明される方法。
20.
(a)特定のデータレコードの1つ以上の属性に基づいて、特定のデータレコードが特
定のパーティションのメンバとして指定され(b)いくつかのデータストレージノードの
うちのデータストレージノードが、特定のパーティションのデータレコードを格納するた
めに選択されることにより、少なくとも部分的にパーティションポリシに基づいて、いく
つかのデータストレージノードが特定のデータストリームを構成するよう決定することを
、1つ以上の計算装置によって、実行することをさらに含む、条項6にて説明される方法

21.
特定のデータストリームの複数のデータレコードの各データレコードに対応して、特定
のデータレコードを含む、並べられたデータレコードのセットに対する読み出し要求に応
答することが不可能な、それぞれのシーケンス番号を格納し、
データストリームの異なるデータレコードの送信者から、異なるデータレコードに対応
する格納される最小のシーケンス番号の表示を受信し、
異なるデータレコードに対応して、最小のシーケンス番号より大きいかまたは等しい特
定のシーケンス番号を格納することを、1つ以上の計算装置によって実行することをさら
に含む、条項6にて説明される方法。
22.
特定のデータストリームのために、クライアントがストリーム管理サービスを選択可能
にするプログラムによるインタフェースのセットを実装し、そのデータレコードは、選択
されたデータ取り込みポリシに基づいてストリームに取り込まれ、複数のデータ永続性ポ
リシは、(a)特定のデータストリームのデータレコードの多数のコピーによる多数の複
製永続性ポリシがそれぞれの記憶位置に格納され、(b)特定のデータストリームのデー
タレコードの単一コピーが格納される、単一の複製永続性ポリシを含み、
プログラムによるインタフェースのセットを介して要求を受信し、クライアントが多数
の複製永続性ポリシを特定のデータストリームのために選択したことを示し、
特定のデータストリームのデータレコードのために、多数の複製永続性ポリシを実装す
るために、複数のストレージノードを構成する、1つ以上のプロセッサ上で実行される場
合に、プログラムの命令を格納する、非一時的にコンピュータにアクセス可能な記憶媒体

23.
条項22にて説明されるように、非一時的コンピュータでアクセス可能な記憶媒体であ
って、複数のデータ永続性ポリシのうちの、少なくとも1つのデータ永続性ポリシがデー
タレコードを格納するために使用される記憶位置の種類を示すことを含み、記憶位置の種
類は、(a)磁気ディスクベースのストレージ、(b)ソリッドステートドライブ(SS
D)、(c)揮発性RAM(ランダムアクセスメモリ)、(d)不揮発性RAM、(e)
データベース管理システム、または(f)プロバイダネットワークによって実装されるネ
ットワークにアクセス可能なストレージサービスのストレージノードのうちの1つを備え
る、記憶媒体。
24.
条項22にて説明されるように、非一時的コンピュータでアクセス可能な記憶媒体であ
って、クライアントによって選択された多数の複製永続性ポリシが、要求されたデータの
耐久性レベルの表示を含み、1つ以上のプロセッサ上で実行される命令は、少なくとも部
分的に要求されたデータ耐久性レベルに基づいて、構成されるいくつかのストレージノー
ドを決定する、記憶媒体。
25.
条項22にて説明されるように、非一時的コンピュータでアクセス可能な記憶媒体であ
って、1つ以上の計算装置によって、少なくとも部分的に特定のクライアントによって選
択されたデータ永続性ポリシに基づいて、特定のクライアントがストリーム管理操作に対
して請求される請求額の決定を実行することをさらに含む、記憶媒体。
26.
条項22にて説明されるように、非一時的コンピュータでアクセス可能な記憶媒体であ
って、(a)特定のデータレコードの1つ以上の属性に基づいて、特定のパーティション
のメンバとして特定のデータレコードが指定され、(b)いくつかのデータストレージノ
ードのうちのデータストレージノードが、特定のパーティションのデータレコードを格納
するために選択されることにより、少なくとも部分的にパーティションポリシに基づいて
、特定のデータストリームのために構成されるいくつかのデータストレージノードの決定
を1つ以上の計算装置によって実行することをさらに含む、記憶媒体。
27.
マルチテナントストリーム管理サービスの複数のノードのうち、データストリームのデ
ータレコードを分散するために適用されるパーティションポリシを決定し、パーティショ
ンポリシは、データレコードに関連する、少なくとも部分的に1つ以上の属性値に基づい
て、複数のパーティションにデータレコードの初期のマッピングを含み、
初期のマッピングを使用して、少なくとも部分的に特定の属性値に基づいて、データス
トリームの特定のデータレコードがメンバを指定される第1のパーティションを識別し、
特定のデータレコードに対応して、ストリーム管理サービスの取り込みノードでレコー
ド取得シーケンス内の特定のデータレコードの位置を示す、シーケンス番号を生成し、取
り込みノードは少なくとも部分的に初期のマッピングに基づいて選択され、
複数のデータレコードのそれぞれのシーケンス番号に少なくとも部分的に基づいて、ス
トリーム管理サービスのデータ記憶位置の順で第1のパーティションの複数のデータレコ
ードを格納し、データ記憶位置は、少なくとも部分的に初期のマッピングに基づいて選択
され、
データストリームを再分割するためのトリガ条件が合致したという決定に対応して、デ
ータレコードの修正されたマッピングをパーティションに生成し、データストリームのデ
ータレコード取得における一時停止をスケジューリングなしに修正されたマッピングの使
用を開始し、特定の属性値で別のデータレコードのために選択し、その他のデータレコー
ドは、(a)ストリーム管理サービスの異なる取り込みノードまたは(b)ストリーム管
理サービスの異なるデータ格納位置のうち少なくとも1つで修正されたマッピングの使用
の開始に続いて受信されるよう構成された、1つ以上の計算装置を備えるシステム。
28.
シーケンス番号は(a)特定のデータレコードの取り込みに関連するタイムスタンプ、
及び(b)追加のサブシーケンス値の表示を含む、条項27にて説明されるシステム。
29.
条項28にて説明されるシステムであって、1つ以上の計算装置がさらに
修正されたマッピングを使用してマップされたデータレコードのシーケンス番号に使用
される初期のタイムスタンプ値を選択し、
特定のシーケンス番号を示すデータレコードの検索要求に対応して特定のシーケンス番
号によって示された特定のタイムスタンプの値が初期のタイムスタンプ値よりも低いとい
う決定に対応して、1つ以上のデータレコードを検索するために初期のマッピングを利用
し、
特定のタイムスタンプ値が初期のタイムスタンプ値よりも低くないという決定に対応し
て、1つ以上のデータレコードを検索するために修正されたマッピングを利用するよう構
成される、システム。
30.
トリガ条件が(a)オーバーロードの状態の検出、(b)ワークロードの不均衡の検出
、(c)再分割のクライアントの要求、(d)データストリームにおけるデータの耐久性
要件の変更を決定、(e)ソフトウェアのバージョン変更のスケジュールの決定、(f)
データストリームの使用状況の変化を検出(g)データストリームの再分割の価格の影響
の決定、または(h)データストリームに関連する性能ターゲットの決定のうち、1つ以
上を含む、条項27にて説明されるシステム。
31.
1つ以上の計算装置であって、データストリームに使用される1つ以上のパーティショ
ン基準を示すクライアントの要求を受信し、少なくとも部分的にクライアントの要求に基
づいて、初期のマッピングを生成することをさらに含む、条項27にて説明されるシステ
ム。
32.
データレコードの少なくとも部分的に1つ以上の属性値に基づいて複数のパーティショ
ンにデータストリームのデータレコードの初期のマッピングを決定し、
初期のマッピングを使用して、少なくとも部分的に特定の属性値に基づいて、データス
トリームの特定のデータレコードがメンバを指定する第1のパーティションを識別し、
初期のマッピングに少なくとも部分的に基づいて選択された記憶位置で特定のデータレ
コードを格納し、
トリガ条件が合致するという決定に対応して、修正されたデータレコードのマッピング
をパーティションに生成し、特定の属性値で別のデータレコードのために選択し、
その他のデータレコードは、修正されたマッピング、異なる記憶位置の使用の開始に
続いて受信されることを、ストリーム管理サービスの1つ以上の計算装置によって実行す
ることを含む方法。
33.
トリガ条件が合致したという決定の前に特定のデータレコード上で、少なくとも部分的
に初期のマッピングに基づいて、選択されたワーカノードで処理操作を実行し、
トリガ条件が合致したという決定の後に、特定の属性値で異なるデータレコード上で、
少なくとも部分的に修正されたマッピングに基づいて選択された、異なるワーカノードで
処理操作を1つ以上の計算装置によって実行することをさらに含む、条項32にて説明さ
れる方法。
34.
特定のデータレコードに対応して、ストリーム管理サービスの取り込みノードでレコード
取得シーケンス内の特定のデータレコードの位置を示す、シーケンス番号を生成し、
取り込みノードは少なくとも部分的に初期のマッピングに基づいて選択され、
シーケンス番号に対応して第1のパーティションのデータレコードを順番に格納するこ
とを、1つ以上の計算装置によって実行することをさらに含む、条項32にて説明される
方法。
35.
シーケンス番号は(a)特定のデータレコードの取り込みに関連するタイムスタンプ、
及び(b)追加のサブシーケンス値を含む、条項34にて説明される方法。
36.
タイムスタンプが、特定のデータレコードが取り込まれた時刻を示し、1つ以上の計算
装置によって、少なくとも部分的に特定のレコードの取り込む時間範囲に基づいて、1つ
以上のデータレコードが検索されることを要求する検索要求に対応して、1つ以上のデー
タレコードを検索するために、インデックスキーとして1つ以上のデータレコードに関連
するシーケンス番号の使用を実行することをさらに含む条項35にて説明される方法。
37.
修正されたマッピングを使用してマップされたデータレコードのシーケンス番号に使用
される初期のタイムスタンプ値を選択し、
特定のシーケンス番号を示すデータレコードの検索要求の受信に対応して、
特定のシーケンス番号によって示された特定のタイムスタンプの値が初期のタイムスタ
ンプ値よりも低いという決定に対応して、1つ以上のデータレコードを検索するために初
期のマッピングを利用し、
特定のタイムスタンプの値が初期のタイムスタンプ値よりも低くないという決定に対応
して、1つ以上のデータレコードを検索するために修正されたマッピングの使用を1つ以
上の計算装置によって実行することをさらに含む、条項35にて説明される方法。
38.
修正されたマッピングは少なくとも1つの追加の属性値を使用してデータレコードのパ
ーティションを決定する、条項32にて説明される方法。
39.
1つ以上の計算装置によって、
データストリームに使用される1つ以上のパーティション基準を示すクライアントの要
求を受信し、
少なくとも部分的にクライアントの要求に基づいて、初期のマッピングの生成を実行す
ることをさらに含む、条項32にて説明される方法。
40.
1つ以上の計算装置によって、トリガ条件を示すクライアントの要求を受信を実行する
ことをさらに含む、条項32にて説明される方法。
41.
1つ以上の計算装置によって、データストリームを再分割するクライアントの要求を受
信し、クライアントの要求は修正されたマッピングの1つ以上のパラメータを示すことを
実行することをさらに含む、条項32にて説明される方法。
42.
1つ以上の計算装置によって、再分割を介して潜在的な解決のために問題状態を示すク
ライアントの要求の受信を実行することをさらに含む、条項32にて説明される方法。
43.
選択されたビット数を含む、バイナリ値として表されるハッシュ結果を取得するために
、特定のデータレコードのコンテンツの少なくとも部分的にハッシュ関数を適用し、
選択されたビット数を使用してバイナリ値が表され得る範囲の、ハッシュ結果が属する
特定の副範囲を決定し、
少なくとも部分的に副範囲に基づいて第1パーティションの識別を、1つ以上の計算装
置によって、実行することをさらに含む、条項32にて説明される方法。
44.
(a)データレコードのソースによって提供されたパーティションキー、(b)データ
レコードのソースの識別、(c)データレコードのコンテンツの少なくとも一部、または
(d)データレコードのソースのネットワークアドレスのうち、1つ以上の属性値が少な
くとも1つを含む、条項32にて説明される方法。
45.
1つ以上の計算装置によって、修正されたマッピングの生成の後に、ストリーム管理シ
ステムの異なる数のノードを、(a)データレコードの取り込み、(b)データレコード
の格納、または(c)修正されたマッピングの生成前に構成されたよりもデータストリー
ムのためのデータレコードの検索のうち1つ以上実行するよう構成されることを実行する
ことをさらに含む、条項32にて説明される方法。
46.
初期のマッピング及び修正されたマッピングを表す組み合わされたデータ構造を格納し

組み合わされたデータ構造は、(a)初期のマッピングによる特定のデータレコードの
属性がマップされる第1のパーティションを示す第1の入力、及び第1のパーティション
に適用可能な初期のマッピングの時間範囲、及び(b)修正されたマッピングによる特定
のデータレコードの属性がマップされる異なるパーティションを示す第2の入力、及び異
なるパーティションに適用可能な修正されたマッピングの異なる時間範囲を含む、条項3
2にて説明される方法。
47.
組み合わされたデータ構造が(a)ツリーまたは(b)有向非巡回グラフのうち1つを
備える、条項46にて説明される方法。
48.
修正されたマッピングが初期のマッピングによって示されたパーティションの対の統合
を示すことを含む、条項32にて説明される方法。
49.
ストリーム管理サービスの複数のノードのうち、データストリームのデータレコードを
分散するために適用されるパーティションポリシを決定し、
パーティションポリシは、データレコードに関連する、複数のパーティションにデータ
レコードの初期のマッピングを示すことを含み、
初期のマッピングにより、及び、初期のマッピングによるデータレコードを格納するた
めにストリーム管理サービスのデータ格納ノードの第1セットにより、ストリームのデー
タレコードを受信するためにストリーム管理サービスの取り込みノードの第1セットを構
成し、
異なる複数のパーティションにデータレコードの修正されたマッピングを生成し、修正
されたマッピングの生成の後に受信されたデータレコードのために、取り込みノードの異
なるセット及びデータストレージノードの異なるセットを構成し、到着するデータレコー
ドが修正されたマッピングによって格納される、少なくとも特定の時刻のために、初期の
マッピングによるデータノードの第1セットに格納されたデータレコードを保持する、1
つ以上のプロセッサ上で実行される場合に、プログラムの命令を格納する、非一時的にコ
ンピュータにアクセス可能な記憶媒体。
50.
条項49にて説明されるように、非一時的コンピュータでアクセス可能な記憶媒体であ
って、1つ以上のプロセッサ上で実行される命令は、初期のマッピングによるデータスト
リームのためのデータ検索ノードの初期のセットを構成し、トリガ条件が合致したという
決定に対応して、データストリームのためのデータ検索ノードの異なるセットを構成する
、記憶媒体。
51.
トリガ条件が(a)オーバーロードの状態の検出、(b)ワークロードの不均衡の検出
、 (c)再分割のクライアントの要求、(d)データストリームにおけるデータの耐久
性要件の変更を決定、(e)ソフトウェアのバージョン変更のスケジュールの決定、(f
)データストリームの使用状況の変化を検出(g)データストリームの再分割の価格の影
響の決定、または(h)データストリームに関連する性能ターゲットの決定のうち、1つ
以上を含む、条項49にて説明されるように、非一時的コンピュータでアクセス可能な記
憶媒体。
52.
1つ以上のプロセッサ上で実行される命令は、データストリームに使用される1つ以上
のパーティション基準を示すクライアントの要求を受信し、少なくとも部分的にクライア
ントの要求に基づいて、初期のマッピングを生成する、条項49にて説明されるように、
非一時的コンピュータでアクセス可能な記憶媒体。
53.
1つ以上のプロセッサ上で実行される命令が、データストリームを再分割するためのト
リガ条件を示すクライアントの要求を受信する、条項49にて説明されるように、非一時
的コンピュータでアクセス可能な記憶媒体。
コンピュータシステムの例
少なくともいくつかの実施形態においては、SMSサブシステム(例えば、取り込み、
格納、検索及び制御サブシステム)のコンポーネントを実装する技術を含む、本明細書に
記載された、一部またはすべての1つ以上の技術を実装するサーバは、SPSワーカ及び
制御ノードと同様に、1つ以上のコンピュータがアクセス可能な媒体にアクセスすること
を含むか、またはアクセスするよう構成された汎用コンピュータシステムを含み得る。図
30は、このような汎用計算装置9000を示す。図示した実施形態では、計算装置90
00は、入力/出力(I/O)インタフェース9030を介して、システムメモリ902
0に接続された1つ以上のプロセッサ9010を含む。計算装置9000は、さらに、I
/Oインタフェース9030に接続されたネットワークインタフェース9040を含む。
様々な実施形態では、計算装置9000は、1つのプロセッサ9010を含む、単一プ
ロセッサまたは、いくつかのプロセッサ9010を含む、マルチプロセッサシステムであ
り得る(例えば、2、4、8または別の好適な数)。プロセッサ9010は、命令を実行
可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ9
010は、x86、PowerPC、SPARCまたはMIPS ISA、または任意の
その他の好適なISAのような、任意の様々な命令セットアーキテクチャ(ISA)を実
行する汎用または組込型プロセッサであり得る。いくつかの実装においては、グラフィッ
クス処理ユニット(GPU)は、従来のプロセッサの代わりに、または追加して使用され
得る。
システムメモリ9020は、プロセッサ(単数または複数)9010によってアクセス
可能な命令及びデータを格納するよう構成され得る。様々な実施形態では、システムメモ
リ9020は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイミ
ックランダムアクセスメモリ(SDRAM)、不揮発性/フラッシュタイプのメモリまた
は任意のその他の種類のメモリの種類を使用して実装され得る。図示した実施形態では、
1つ以上の所望の機能を実装する、プログラムの命令及びデータは、これらの方法、技術
及び上述のデータが示され、コード9025及びデータ9026のように、システムメモ
リ9020内に記憶される。
一実施形態では、I/Oインタフェース9030は、プロセッサ9010と、システム
メモリ9020と、データオブジェクトパーティションの物理複製を格納するために使用
される、様々な種類の永続的及び/または揮発性記憶装置のような、ネットワークインタ
フェース9040またはその他の周辺インタフェースを含む、装置内の任意の周辺装置と
の間のI/Oトラフィックを調節するよう構成され得る。いくつかの実施形態では、I/
Oインタフェース9030は、1つのコンポーネント(例えば、システムメモリ9020
)からデータ信号を変換するために、任意の必要なプロトコル、タイミングまたはその他
のデータ変換を別のコンポーネント(例えば、プロセッサ9010)によって使用するの
に適したフォーマットに実行し得る。いくつかの実施形態では、I/Oインタフェース9
030は、例えば、周辺構成要素相互接続装置(PCI)バス規格の変形またはユニバー
サルシリアルバス(USB)規格のような、様々な種類の周辺のバスを通して取り付けら
れる装置への支援を含み得る。いくつかの実施形態では、I/Oインタフェース9030
の機能は、例えば、ノースブリッジ及びサウスブリッジのように、2つまたはそれ以上の
分離したコンポーネントに分かれ得る。また、いくつかの実施形態では、システムメモリ
9020へのインタフェースのような、いくつかの、またはすべてのI/Oインタフェー
ス9030の機能は、プロセッサ9010に直接組み込まれ得る。
ネットワークインタフェース9040は、コンピュータシステムまたは例えば、図1か
ら図29に図示された装置のような、ネットワークまたはネットワーク9050に取り付
けられた、データが計算装置9000とその他の装置9060との間で交換できるように
構成され得る。様々な実施形態では、ネットワークインタフェース9040は、例えばイ
ーサネット(登録商標)ネットワークの種類のような、任意の好適な有線または無線の一
般的なデータネットワークを介して、通信を支援し得る。さらに、ネットワークインタフ
ェース9040は、ファイバチャネルSANのようなストレージエリアネットワークを介
して、または任意のその他の好適な種類のネットワーク及び/またはプロトコルを介して
、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークのような、電気通
信/電話網を介した通信を支援し得る。
いくつかの実施形態では、システムメモリ9020は、対応する方法及び装置の実施形
態を実装するために、図1から図29のために上記に記載されたように、プログラムの命
令及びデータを格納するよう構成された、コンピュータでアクセス可能な媒体の一実施形
態であり得る。しかしながら、その他の実施形態では、プログラムの命令及び/またはデ
ータが受信され、送信され、または異なる種類のコンピュータがアクセス可能な媒体に格
納され得る。一般に、コンピュータがアクセス可能な媒体は、磁気または光学媒体のよう
な、非一時的記憶媒体またはメモリ媒体を含み得る。例えば、I/Oインタフェース90
30を介して計算装置9000に接続されたディスクまたはDVD/CDである。非一時
的コンピュータがアクセス可能な記憶媒体は、また、いくつかの実施形態において、シス
テムメモリ9020または別の種類のメモリのように、計算装置9000中に含まれてよ
い、RAM(例えば、SDRAM、DDRSDRAM、RDRAM、SRAM等)、RO
M等のような、任意の揮発性または不揮発性媒体を含み得る。さらに、コンピュータがア
クセス可能な媒体は、ネットワークインタフェース9040を経由して実装され得るよう
な、ネットワーク及び/または無線接続のような、電気信号、電磁波信号またはデジタル
信号のような、通信媒体を経由して伝達される伝送媒体または信号を含み得る。図30に
示されたような、多数の計算装置の一部または全部は、様々な実施形態において、記載さ
れた機能を実装するために使用され得る。例えば、様々に異なる装置及びサーバで実行す
るソフトウェアコンポーネントは、機能性を提供するために一緒に動き得る。いくつかの
実施形態では、汎用コンピュータシステムを使用して実装されることに加えて、またはそ
の代わりに、記憶装置、ネットワーク装置または専用コンピュータシステムを使用して、
記載された機能性の一部は実装され得る。「計算装置」という用語は、本発明で使用する
場合、少なくともすべてのこれらの種類の装置を意味し、これらの種類の装置に限定され
ない。
結論
様々な実施形態は、さらに、コンピュータがアクセス可能な媒体についての前述の記載
により実装される、受信し、送信し、または命令及び/またはデータを格納することを含
み得る。一般に、コンピュータがアクセス可能な媒体は、磁気媒体または光媒体のような
、記憶媒体またはメモリ媒体を含み得る。ネットワーク及び/または無線接続のような、
通信媒体を経由して伝達される、伝送媒体または電気信号、電磁波信号またはデジタル信
号のような信号と同様に、例えば、RAM(例えば、SDRAM、DDR、RDRAM、
SRAM、etc.),ROM等のような、ディスクまたはDVD/CD−ROM、揮発
性媒体または不揮発性媒体が含み得る。
図面に示され、本明細書で記載された、様々な方法は、例示的な方法の実施形態を表す
。この方法はソフトウェア、ハードウェアまたはこれらの組み合わせにおいて実施され得
る。方法の順序は変更されてよく、様々な要素が追加され、順序が変更され、組み合わさ
れ、省略され、修正等され得る。
様々な修正及び変更が、本開示の利益を有する当業者には明白であるため、成され得る
。すべてのこのような修正及び変更を受け入れることを目的としており、したがって、上
記の記載は制限を意味するよりもむしろ、例証としてみなされるべきである。

Claims (15)

  1. マルチテナントのストリーム管理サービスの複数のノードのうち、データストリームのデータレコードを分散するために適用されるパーティションポリシを決定し、前記パーティションポリシは、前記データレコードに関連する1つ以上の属性値に少なくとも部分的に基づく、複数のパーティションへのデータレコードの初期のマッピングを含み、
    前記初期のマッピングを使用して、特定の属性値に少なくとも部分的に基づいて、前記データストリームの特定のデータレコードがメンバを指定される第1のパーティションを識別し、
    前記特定のデータレコードに対応して、前記ストリーム管理サービスの取り込みノードにおけるレコード取得シーケンス内の前記特定のデータレコードの位置を示す、シーケンス番号を生成し、前記取り込みノードは、前記初期のマッピングに少なくとも部分的に基づいて選択され、
    複数のデータレコードのそれぞれのシーケンス番号に少なくとも部分的に基づいて、前記ストリーム管理サービスのデータ記憶位置に、順番に前記第1のパーティションの複数のデータレコードを格納し、前記データ記憶位置は、前記初期のマッピングに少なくとも部分的に基づいて選択され、
    前記データストリームを再分割するためのトリガ条件が合致したという決定に対応して、
    パーティションに対するデータレコードの修正されたマッピングを生成し、
    前記データストリームのデータレコード取得における一時停止をスケジューリングすることなしに、前記修正されたマッピングの使用を開始し、
    前記特定の属性値を有し、前記修正されたマッピングの使用の開始に続いて受信される別のデータレコードのために、(a)前記ストリーム管理サービスの異なる取り込みノード、または(b)前記ストリーム管理サービスの異なるデータ記憶位置のうち少なくとも1つを選択する
    ように構成された、1つ以上の計算装置を備えるシステム。
  2. 前記シーケンス番号は、(a)前記特定のデータレコードの取り込みに関連するタイムスタンプ、及び(b)追加のサブシーケンス値の表示を含む、
    請求項1記載のシステム。
  3. 1つ以上の計算装置は、さらに
    前記修正されたマッピングを使用してマップされたデータレコードのシーケンス番号に使用される初期のタイムスタンプ値を選択し、
    特定のシーケンス番号を示すデータレコードの検索要求に対応して、
    前記特定のシーケンス番号によって示された特定のタイムスタンプの値が、前記初期のタイムスタンプ値よりも低いという決定に対応して、1つ以上のデータレコードを検索するために前記初期のマッピングを利用し、
    前記特定のタイムスタンプの値が、前記初期のタイムスタンプ値よりも低くないという決定に対応して、1つ以上のデータレコードを検索するために前記修正されたマッピングを利用する
    ように構成される、請求項2記載のシステム。
  4. 前記トリガ条件は、(a)オーバーロードの状態の検出、(b)ワークロードの不均衡の検出、(c)再分割のクライアントの要求、(d)データストリームにおけるデータの耐久性要件の変更の決定、(e)ソフトウェアのバージョン変更のスケジュールの決定、(f)データストリームの使用パターンの変化の検出(g)データストリームの再分割の価格の影響の決定、または(h)データストリームに関連する性能ターゲットの決定
    のうち、1つ以上を含む、請求項1記載のシステム。
  5. 1つ以上の計算装置は、さらに
    前記データストリームに使用される1つ以上のパーティション基準を示すクライアントの要求を受信し、前記クライアントの要求に少なくとも部分的に基づいて、前記初期のマッピングを生成する
    ように構成される、請求項1記載のシステム。
  6. データレコードの1つ以上の属性値に少なくとも部分的に基づいて、複数のパーティションへのデータストリームの前記データレコードの初期のマッピングを決定すること、
    前記初期のマッピングを使用して、特定の属性値に少なくとも部分的に基づいて、前記データストリームの特定のデータレコードがメンバを指定される第1のパーティションを識別すること、
    前記初期のマッピングに少なくとも部分的に基づいて選択された記憶位置で前記特定のデータレコードを格納すること、
    トリガ条件が合致したという決定に対応して、
    パーティションに対する修正されたデータレコードのマッピングを生成し、
    前記特定の属性値を有し、前記修正されたマッピングの使用の開始に続いて受信される別のデータレコードのために、異なる記憶位置を選択すること
    をストリーム管理サービスの1つ以上の計算装置によって実行すること
    を含む方法。
  7. 前記トリガ条件が合致したという決定の前に、前記特定のデータレコード上で、前記初期のマッピングに少なくとも部分的に基づいて、選択されたワーカノードで処理操作を実行し、
    前記トリガ条件が合致したという決定の後に、前記特定の属性値を有する異なるデータレコード上で、前記修正されたマッピングに少なくとも部分的に基づいて選択された、異なるワーカノードで、前記処理操作を実行すること
    をさらに含む、請求項6記載の方法。
  8. 前記特定のデータレコードに対応して、前記ストリーム管理サービスの取り込みノードで、レコード取得シーケンス内の前記特定のデータレコードの位置を示すシーケンス番号を生成すること実行することを含み、
    前記取り込みノードは、前記初期のマッピングに少なくとも部分的に基づいて選択され、
    シーケンス番号に対応して、前記第1のパーティションのデータレコードを順番に格納することを実行すること
    をさらに含む、請求項6記載の方法。
  9. 前記シーケンス番号は、(a)前記特定のデータレコードの取り込みに関連するタイムスタンプ、及び(b)追加のサブシーケンス値の表示を含む、
    請求項8記載の方法。
  10. 前記タイムスタンプが、前記特定のデータレコードが取り込まれた時刻を示し、
    特定のレコードの取り込み時間範囲に少なくとも部分的に基づいて、1つ以上のデータレコードが検索されることを要求する検索要求に対応して、前記1つ以上のデータレコードを検索するために、インデックスキーとして前記1つ以上のデータレコードに関連するシーケンス番号を使用することを実行すること
    をさらに含む、請求項9記載の方法。
  11. 前記修正されたマッピングを使用してマップされたデータレコードのシーケンス番号に使用される初期のタイムスタンプ値を選択し、
    特定のシーケンス番号を示すデータレコードの検索要求の受信に対応して、
    前記特定のシーケンス番号によって示された特定のタイムスタンプの値が、前記初期のタイムスタンプ値よりも低いという決定に対応して、1つ以上のデータレコードを検索するために前記初期のマッピングを利用し、
    前記特定のタイムスタンプの値が、前記初期のタイムスタンプ値よりも低くないという決定に対応して、1つ以上のデータレコードを検索するために前記修正されたマッピングを利用することを実行すること
    をさらに含む、請求項9記載の方法。
  12. 前記修正されたマッピングは、少なくとも1つの追加の属性値を使用してデータレコードの前記パーティションを決定する、請求項6記載の方法。
  13. 前記1つ以上の属性値は、
    (a)データレコードのソースによって提供されたパーティションキー、(b)データレコードのソースの識別、(c)データレコードのコンテンツの少なくとも一部、または(d)データレコードのソースのネットワークアドレスのうち、
    少なくとも1つを含む、請求項6記載の方法。
  14. 1つ以上のプロセッサ上で実行されるプログラム命令を格納するコンピュータアクセス可能な記憶媒体であって、
    前記プログラム命令は、
    データストリームのデータレコードをストリーム管理サービスの複数のノードに、分散するために適用されるパーティションポリシを決定し、
    前記パーティションポリシは、複数のパーティションへのデータレコードの初期のマッピングを含み、
    前記初期のマッピングに従って、ストリームのデータレコードを受信するために、前記ストリーム管理サービスの取り込みノードの第1セットと、データレコードを格納するために、前記ストリーム管理サービスのデータ格納ノードの第1セットを構成し、
    前記データストリームを動的に再分割するためのトリガ条件が合致したという決定に対応して、
    異なる複数のパーティションに対するデータレコードの修正されたマッピングを生成し、
    前記修正されたマッピングの生成に続いて受信されたデータレコードのために、取り込みノードの異なるセット及びデータストレージノードの異なるセットを構成し、
    到着するデータレコードが、前記修正されたマッピングに従って格納される、少なくとも特定の期間に、前記初期のマッピングに従ってデータ格納ノードの前記第1セットに格納されたデータレコードを保持する、
    コンピュータアクセス可能な記憶媒体。
  15. 前記トリガ条件は、(a)オーバーロードの状態の検出、(b)ワークロードの不均衡の検出、(c)再分割のクライアントの要求、(d)データストリームにおけるデータの耐久性要件の変更の決定、(e)ソフトウェアのバージョン変更のスケジュールの決定、(f)データストリームの使用パターンの変化の検出(g)データストリームの再分割の価格の影響の決定、または(h)データストリームに関連する性能ターゲットの決定のうち、1つ以上を含む、請求項14記載のコンピュータアクセス可能な記憶媒体。
JP2018084896A 2013-11-11 2018-04-26 データストリーム取り込み及び永続性ポリシ Active JP6510112B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/077,162 2013-11-11
US14/077,162 US9858322B2 (en) 2013-11-11 2013-11-11 Data stream ingestion and persistence techniques
US14/077,171 US9720989B2 (en) 2013-11-11 2013-11-11 Dynamic partitioning techniques for data streams
US14/077,171 2013-11-11

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016553274A Division JP6357243B2 (ja) 2013-11-11 2014-11-11 データストリーム取り込み及び永続性ポリシ

Publications (2)

Publication Number Publication Date
JP2018133105A true JP2018133105A (ja) 2018-08-23
JP6510112B2 JP6510112B2 (ja) 2019-05-08

Family

ID=53042245

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016553274A Active JP6357243B2 (ja) 2013-11-11 2014-11-11 データストリーム取り込み及び永続性ポリシ
JP2018084896A Active JP6510112B2 (ja) 2013-11-11 2018-04-26 データストリーム取り込み及び永続性ポリシ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016553274A Active JP6357243B2 (ja) 2013-11-11 2014-11-11 データストリーム取り込み及び永続性ポリシ

Country Status (5)

Country Link
EP (1) EP3069275A4 (ja)
JP (2) JP6357243B2 (ja)
CN (1) CN105765575B (ja)
CA (1) CA2930026C (ja)
WO (1) WO2015070232A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4068096A1 (en) 2021-03-29 2022-10-05 Fujitsu Limited Data processing program, information processing system, and data processing method

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880769B2 (en) 2015-06-05 2018-01-30 Microsoft Technology Licensing, Llc. Streaming joins in constrained memory environments
US9942272B2 (en) 2015-06-05 2018-04-10 Microsoft Technology Licensing, Llc. Handling out of order events
US10868741B2 (en) 2015-06-05 2020-12-15 Microsoft Technology Licensing, Llc Anchor shortening across streaming nodes
US10148719B2 (en) 2015-06-05 2018-12-04 Microsoft Technology Licensing, Llc. Using anchors for reliable stream processing
US9602455B2 (en) * 2015-08-07 2017-03-21 Machine Zone, Inc. Scalable, real-time messaging system
JP6698177B2 (ja) 2016-05-17 2020-05-27 アビニシオ テクノロジー エルエルシー 再構成可能な分散処理
CN107783834B (zh) * 2016-08-30 2021-05-07 伊姆西公司 用于处理数据的方法和系统
US10594760B2 (en) * 2017-01-25 2020-03-17 Futurewei Technologies, Inc. Intelligent event streaming
US11314648B2 (en) * 2017-02-08 2022-04-26 Arm Limited Data processing
US10719495B2 (en) * 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
CN107612687B (zh) * 2017-09-25 2021-04-27 西安建筑科技大学 一种基于ElGamal加密的动态多副本数据持有性验证方法
US11120052B1 (en) 2018-06-28 2021-09-14 Amazon Technologies, Inc. Dynamic distributed data clustering using multi-level hash trees
US10884644B2 (en) * 2018-06-28 2021-01-05 Amazon Technologies, Inc. Dynamic distributed data clustering
US11163737B2 (en) 2018-11-21 2021-11-02 Google Llc Storage and structured search of historical security data
WO2020106487A1 (en) * 2018-11-23 2020-05-28 Amazon Technologies, Inc. Scalable architecture for a distributed time-series database
US11989186B2 (en) * 2018-11-23 2024-05-21 Amazon Technologies, Inc. Scalable architecture for a distributed time-series database
US11934409B2 (en) 2018-11-23 2024-03-19 Amazon Technologies, Inc. Continuous functions in a time-series database
US11853317B1 (en) 2019-03-18 2023-12-26 Amazon Technologies, Inc. Creating replicas using queries to a time series database
CN110147354B (zh) * 2019-04-19 2023-06-02 平安科技(深圳)有限公司 批量数据编辑方法、装置、计算机设备及存储介质
US11599516B1 (en) 2020-06-24 2023-03-07 Amazon Technologies, Inc. Scalable metadata index for a time-series database
US11941014B1 (en) 2021-06-16 2024-03-26 Amazon Technologies, Inc. Versioned metadata management for a time-series database
US11461347B1 (en) 2021-06-16 2022-10-04 Amazon Technologies, Inc. Adaptive querying of time-series data over tiered storage
CN114116732B (zh) * 2022-01-24 2022-04-05 北京奥星贝斯科技有限公司 处理事务的方法、装置、存储装置以及服务器
US11941029B2 (en) 2022-02-03 2024-03-26 Bank Of America Corporation Automatic extension of database partitions
CN114676117B (zh) * 2022-05-27 2022-08-16 成都明途科技有限公司 一种岗位数据存储方法、装置及岗位机器人
US11960774B2 (en) 2022-07-20 2024-04-16 The Toronto-Dominion Bank System, method, and device for uploading data from premises to remote computing environments
CN117666928A (zh) * 2022-08-30 2024-03-08 华为云计算技术有限公司 一种数据访问方法和系统
CN115480914B (zh) * 2022-09-02 2023-07-21 江苏安超云软件有限公司 一种多租户服务的实现方法及系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692177A (en) * 1994-10-26 1997-11-25 Microsoft Corporation Method and system for data set storage by iteratively searching for perfect hashing functions
US5813009A (en) * 1995-07-28 1998-09-22 Univirtual Corp. Computer based records management system method
US6272598B1 (en) * 1999-03-22 2001-08-07 Hewlett-Packard Company Web cache performance by applying different replacement policies to the web cache
JP2010517125A (ja) * 2007-01-22 2010-05-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層型ストレージ・システムへのトランスペアレントなバックアップの方法、システム、及びプログラム
US20100257140A1 (en) * 2009-03-31 2010-10-07 Philip John Davis Data archiving and retrieval system
JP2012524947A (ja) * 2009-04-24 2012-10-18 マイクロソフト コーポレーション 複製データの動的配置
JP2013025497A (ja) * 2011-07-19 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散処理システム、分散処理方法、負荷分散装置、負荷分散方法、及び、負荷分散プログラム
WO2013069073A1 (ja) * 2011-11-07 2013-05-16 株式会社日立製作所 時系列データ管理システム、装置および方法
US20130151683A1 (en) * 2011-12-13 2013-06-13 Microsoft Corporation Load balancing in cluster storage systems
US8533478B2 (en) * 2008-10-24 2013-09-10 Hewlett-Packard Development Company, L. P. System for and method of writing and reading redundant data
JP2015501976A (ja) * 2011-11-10 2015-01-19 トレジャー データ, インク.Treasure Data, Inc. 大量データプラットフォームを操作するシステム及び方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4057074B2 (ja) * 1996-04-25 2008-03-05 富士通株式会社 ストリームデータのストライピング方法およびストリームサーバ
US6505216B1 (en) * 1999-10-01 2003-01-07 Emc Corporation Methods and apparatus for backing-up and restoring files using multiple trails
US7346751B2 (en) * 2004-04-30 2008-03-18 Commvault Systems, Inc. Systems and methods for generating a storage-related metric
US7814056B2 (en) * 2004-05-21 2010-10-12 Computer Associates Think, Inc. Method and apparatus for data backup using data blocks
US7606844B2 (en) * 2005-12-19 2009-10-20 Commvault Systems, Inc. System and method for performing replication copy storage operations
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
US8190960B1 (en) * 2007-12-13 2012-05-29 Force10 Networks, Inc. Guaranteed inter-process communication
JP5396848B2 (ja) * 2008-12-16 2014-01-22 富士通株式会社 データ処理プログラム、サーバ装置およびデータ処理方法
US20100306232A1 (en) * 2009-05-28 2010-12-02 Harris Corporation Multimedia system providing database of shared text comment data indexed to video source data and related methods
EP2414926A1 (en) * 2009-09-18 2012-02-08 Hitachi, Ltd. Storage system for eliminating duplicated data
US10630570B2 (en) * 2010-09-17 2020-04-21 Oracle International Corporation System and method for supporting well defined subnet topology in a middleware machine environment
US9137304B2 (en) * 2011-05-25 2015-09-15 Alcatel Lucent Method and apparatus for achieving data security in a distributed cloud computing environment
JP2013058101A (ja) * 2011-09-08 2013-03-28 Interlink:Kk クラウドコンピューティングシステム
US20130085995A1 (en) * 2011-09-29 2013-04-04 International Business Machines Corporation Managing back up operations for data
US9098344B2 (en) * 2011-12-27 2015-08-04 Microsoft Technology Licensing, Llc Cloud-edge topologies

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692177A (en) * 1994-10-26 1997-11-25 Microsoft Corporation Method and system for data set storage by iteratively searching for perfect hashing functions
US5813009A (en) * 1995-07-28 1998-09-22 Univirtual Corp. Computer based records management system method
US6272598B1 (en) * 1999-03-22 2001-08-07 Hewlett-Packard Company Web cache performance by applying different replacement policies to the web cache
JP2010517125A (ja) * 2007-01-22 2010-05-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層型ストレージ・システムへのトランスペアレントなバックアップの方法、システム、及びプログラム
US8533478B2 (en) * 2008-10-24 2013-09-10 Hewlett-Packard Development Company, L. P. System for and method of writing and reading redundant data
US20100257140A1 (en) * 2009-03-31 2010-10-07 Philip John Davis Data archiving and retrieval system
JP2012524947A (ja) * 2009-04-24 2012-10-18 マイクロソフト コーポレーション 複製データの動的配置
JP2013025497A (ja) * 2011-07-19 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散処理システム、分散処理方法、負荷分散装置、負荷分散方法、及び、負荷分散プログラム
WO2013069073A1 (ja) * 2011-11-07 2013-05-16 株式会社日立製作所 時系列データ管理システム、装置および方法
JP2015501976A (ja) * 2011-11-10 2015-01-19 トレジャー データ, インク.Treasure Data, Inc. 大量データプラットフォームを操作するシステム及び方法
US20130151683A1 (en) * 2011-12-13 2013-06-13 Microsoft Corporation Load balancing in cluster storage systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4068096A1 (en) 2021-03-29 2022-10-05 Fujitsu Limited Data processing program, information processing system, and data processing method

Also Published As

Publication number Publication date
CA2930026A1 (en) 2015-05-14
CA2930026C (en) 2020-06-16
EP3069275A1 (en) 2016-09-21
JP6357243B2 (ja) 2018-07-11
JP6510112B2 (ja) 2019-05-08
WO2015070232A1 (en) 2015-05-14
JP2017501515A (ja) 2017-01-12
CN105765575B (zh) 2019-11-05
CN105765575A (zh) 2016-07-13
EP3069275A4 (en) 2017-04-26

Similar Documents

Publication Publication Date Title
JP6510112B2 (ja) データストリーム取り込み及び永続性ポリシ
US10795905B2 (en) Data stream ingestion and persistence techniques
US10691716B2 (en) Dynamic partitioning techniques for data streams
AU2014346369B2 (en) Managed service for acquisition, storage and consumption of large-scale data streams
AU2014346366B2 (en) Partition-based data stream processing framework
EP3069495B1 (en) Client-configurable security options for data streams

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190222

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190403

R150 Certificate of patent or registration of utility model

Ref document number: 6510112

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250