JP2018530068A - 分散型ストリームベースのデータベーストリガ - Google Patents

分散型ストリームベースのデータベーストリガ Download PDF

Info

Publication number
JP2018530068A
JP2018530068A JP2018515775A JP2018515775A JP2018530068A JP 2018530068 A JP2018530068 A JP 2018530068A JP 2018515775 A JP2018515775 A JP 2018515775A JP 2018515775 A JP2018515775 A JP 2018515775A JP 2018530068 A JP2018530068 A JP 2018530068A
Authority
JP
Japan
Prior art keywords
computing
computing node
instruction set
node
items
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
JP2018515775A
Other languages
English (en)
Other versions
JP6618614B2 (ja
Inventor
パリクシット シバジラオ ポル
パリクシット シバジラオ ポル
スブラマニアン サンカラ スブラマニアン
スブラマニアン サンカラ スブラマニアン
ラジャプラブ ティルチ ロガナサン
ラジャプラブ ティルチ ロガナサン
ラマ クリシュナ サンディープ ポックヌリ
ラマ クリシュナ サンディープ ポックヌリ
ゴピナス デュディ
ゴピナス デュディ
アクシャト ビグ
アクシャト ビグ
サフィール モヒウディン
サフィール モヒウディン
スダルシャン ナラシマン
スダルシャン ナラシマン
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
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2018530068A publication Critical patent/JP2018530068A/ja
Application granted granted Critical
Publication of JP6618614B2 publication Critical patent/JP6618614B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/822Collecting or measuring resource availability data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • H04L43/065Generation of reports related to network devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

データベースによって維持されるアイテムの集合に対する変更を記述する情報は、ログファイルに格納され得る。ログファイル内の情報は、変更を記述しているレコードのストリームに変換され得る。レコードは、ハッシュ関数をレコードの一部に適用し、ハッシュ関数によって出力された値に関連付けられたハッシュ空間を識別し、ハッシュ空間から選択されたコンピューティングノードにマッピングさせることに基づいて、変更に応答してトリガ機能を実行するために選択されたコンピューティングノードに方向づけられ得る。
【選択図】図6

Description

関連出願の相互参照
本出願は、2015年9月28日に出願された米国特許出願第14/868,236号の利益を主張するものであり、この出願の開示は、参照によりその全体が本明細書に組み込まれる。
データベーストリガは、通常、データベース上で生じたイベントに応答して実行される命令を備える。データベーストリガは、例えば、データベース管理システムによって維持されるテーブルに関連付けられ、挿入、更新または削除コマンドがテーブル上で行われるたびに実行され得る。トリガは、データの検証、関係完全性の維持及び他の機能などの様々な目的のために用いられ得る。データベーストリガを実装する従来の手法は、トリガの定義を格納し適用可能なイベントが生じるとトリガを実行するデータベース管理システムを含み得る。
以下の詳細な説明は、添付の図面とあわせて閲読されることにより、より良好に理解され得る。例示する目的のために、本開示の態様の様々な例が図面に図示されるが、本発明は、開示される特定の方法及び手段に限定されない。
分散型ストリームベースのトリガシステムを描写した図である。 ストリームベースのトリガ機能を処理するシステムを描写した図である。 データベースログファイルの複製及びストリーミングを描写した図である。 ログファイルイベントのストリームの送信器として構成されたコンピューティングノードを描写した図である。 トリガ機能の実行器として構成されたコンピューティングノードを描写した図である。 イベントストリームに基づいてトリガ機能を実行することを描写した流れ図である。 イベントストリームに基づいてトリガ機能を実行するプロセスを描写した流れ図である。 1つまたは複数のコンピューティングノードのグループでトリガ機能を実行することを描写した流れ図である。 本開示の態様を実施し得るコンピューティング環境の実施形態を描写したブロック図である。 本開示の態様を実施し得るコンピューティングシステムの実施形態を描写したブロック図である。
本明細書で開示するのは、ホスト型データベースシステムに対するスケーラブルなトリガサービスを提供するシステム、方法及びコンピュータプログラム製品である。トリガまたはトリガ機能は、データベース管理システム上で生じるイベントに応答して実行される命令セットであってもよい。例えば、データベース管理システムは、アイテムの集合、1つの例としては、様々なアイテムすなわちロウを含むデータベーステーブルを維持し得る。アイテムがテーブルに挿入されるとまたは既存のアイテムが修正されると、トリガ機能が起動して、様々な関連動作を行い得る。例えば、アイテムが挿入または修正されると、トリガ機能が起動して、アイテムの検証、異常なアクセスパターンの検出及び他のタスクを行い得る。アイテムの検証は、レンジチェックなどの機能を含み得る。異常なアクセスパターンの検出は、更新と更新の間の関係の検査、更新頻度に関するメトリクスの計算などを含み得る。
ホスト型データベースシステムでは、ホスティングサービスのカスタマがトリガ機能の使用を希望する場合がある。しかしながら、ホスト型データベースサービスはマルチテナントの場合があり、これは、1つより多いカスタマが所与のデータベース管理システムによって対応され得ることを意味する。結果的に、トリガ機能がデータベース管理システムによって実行されるもの等のトリガに対する従来のいくつかの手法は、マルチテナントシステムには不適切であり得る。1つのテナントのためにトリガ機能を実行することは、例えば、別のテナントによって必要とされるリソースを消費し得る。
ホスト型データベースシステムも、スケーラブルであってもよい。より大きな作業負荷またはデータセットを収容するために、シャードと称されることもある追加のコンピューティングノードがシステムに追加され得る。本明細書中に開示されるように、トリガ機能を実行するシステムもスケーラブルにされ得る。スケーリング機構は、さらに、データベースのストレージ及び作業負荷能力をスケーリングするのに用いられるノードから独立してもよい。言い換えると、コンピューティング能力は、データベース管理システムの能力から独立して、必要とされるときにトリガ機能を実行することを対象とし得る。
ある例では、分散型データベース管理システムは、アイテムの集合を維持し得る。データベース管理システムが、集合にアイテムを格納するリクエストを処理する際、そのリクエストを記述しているログファイルをログファイルにまず書き込むことによってそれを行う。そうすることによって、データベース管理システムは、リクエストされた変更が永続的になるようにし得る。システム障害の場合、ログファイルはアクセスされ得、障害が発生したときに中断されたリクエストを処理するためにその情報が用いられる。ログファイルは、データの集合に関するイベントを記述している情報のストリームのデータソースとしても用いられ得る。ログファイル内のデータは、特定のハッシュ空間に対応し得る。これは、パーティション作業−ログファイルを生成するデータベースは、テーブルのハッシュベースのパーティションに対応し得る−の結果として起こり得る。
トリガ機能を処理するために、コンピューティングノードの第1のグループが構成され得る。この構成には、機能の定義を第1のグループのコンピューティングノードにアップロードすることが含まれ得る。定義は、例えば、サービスのカスタマのクライアントデバイスからアップロードされたスクリプトファイルとして与えられ得る。スクリプトのアップロードをリクエストするとき、カスタマは、スクリプトが適用されるのはどのアイテムかの指示もクライアントデバイスに提供し得る。例えば、カスタマは、第1のテーブルに対してトリガ機能の定義の1つのセットを、第2のテーブルに対してトリガ機能の第2のセットをアップロードすることを希望してもよい。場合によっては、スクリプトは、特定のハッシュ空間またはパーティションに関連付けられ得る。いくつかの例では、ハッシュ空間はパーティションに対応し得る。
第2のコンピューティングノードは、コンピューティングノードの第1のグループのうちの1つであってもよくまたはその外部にあってもよく、データベースログファイルから読み出されるレコードを受信し得る。レコードの1つは、例えば、アイテムの集合にアイテムを格納するリクエストに対応し得る。レコードには、アイテムの主キー及び2つの値のセットといった情報が含まれ得る。値のセットのうち1つは、リクエストより前のアイテムに対する値であり得、セットの他方は、リクエストがデータベース管理システムによって処理された後のアイテムに対する値であり得る。
第2のコンピューティングノードは、コンピューティングノードの第1のグループのリソース使用率をモニタリングし得る。使用率に基づいて、トリガ機能を処理するために、コンピューティングノードが第1のグループから選択され得る。第2のコンピューティングノードは、トリガ機能を実行するべきであることを示す命令を、選択されたコンピューティングノードに送信し得る。命令には、アイテムの主キー及び古い値と新しい値のセットといった情報も含まれ得る。次いで、第1のコンピューティングノードは、与えられた情報をパラメータとして用いて、トリガ機能を実行し得る。
図1は、分散型ストリームベースのトリガシステム150を描写した図である。ストリームベースのトリガシステム150は、コンピューティングノードを、コンピューティングノードクラスタ126の1つまたは複数のコンピューティングノード120〜124に追加することによって、様々な作業負荷に対してスケーラブルであり得る。本明細書中に記載するように、コンピューティングノードは、プロセッサ及びメモリを備えるコンピューティングデバイスを含み、複数のコンピューティングノードにコンピューティングデバイスを共有することを許可する仮想化構成要素も備え得る。コンピューティングノードクラスタ126には、いくつかの例では、コンピューティングノードクラスタ126内のコンピューティングノード120〜124のアソシエーションが備えられ得る。場合によっては、コンピューティングノードクラスタ126は、コンピューティングノードクラスタ126内のコンピューティングノード120〜124間の通信を容易にするために、専用通信インフラ及びストレージエリアネットワークなどのハードウェア構成要素も備え得る。
データベース100は、アイテムの集合を維持する分散型データベースであり得る。本明細書中で用いるアイテムは、データベーステーブルのロウ、値のセット等などの情報の関連セットを指し得る。通常、アイテムは、固有識別の値または値のセットに関連付けられ、これは主キーと称されることもある。
アイテムの集合は、パーティション101a及び101bに維持され得る。パーティションは、ある範囲のデータに対応するアイテムのサブセットを含み得る。例えば、データのより大きな集合におけるアイテムが、それらの主キーの値に基づいて水平方向に区切られ得る。これは、ハッシュ関数を主キーの値に適用することによってなされ得る。ハッシュ関数の適用によって出力されるハッシュ値は、ハッシュ空間にマッピングされ得、そしてこれらハッシュ空間は、パーティション101a、101bにマッピングされ得る。
データベース100は、アイテムの集合にアイテムを格納するリクエストを処理し得る。本明細書中で用いられるように、データの格納とは、データベース100によって維持されるメモリ及びストレージ構造に対する修正を指し得る。本明細書中で用いられるように、アイテムの格納とは、アイテムの挿入、更新または修正に関連し得る。
データベース100は、描写したトランザクションログ102a、102bの1つといったトランザクションログにアイテムの更新リクエストを示す情報を格納し得る。トランザクションログ102a、102bは、ストレージデバイスで維持される1つまたは複数のファイルを含み得る。パーティション101a、101bはそれぞれ、データをトランザクションログ102a、102bに書き込み得る。リクエストを示す情報は、いくつかの例では、データベース100がそのメモリ及びストレージ構造を更新してアイテムの更新リクエストによって指示される変更を反映するのに先立って書き込まれ得る。この手法により、データベース100がアイテムの更新リクエストが完全に処理されるよりも前に実行を中止した場合、リクエストをトランザクションログ102a、102bから回復させることができるので、システム障害の場合において変更が永続的なものであることが確保され得る。トランザクションログのエントリはまた、データを他のデータベースインスタンスに複製するのにも用いられ得る。さらに、本明細書中に記載するように、トランザクションログ102a、102bは、ストリームベースのトリガシステム150によってデータのソースとして用いられ得る。トランザクションログ102a、102bのエントリは、データベース100のアイテムの集合になされる更新を示すデータのストリームとして提供され得る。そのストリームのデータは、トリガ条件として機能し得、これに応答して、コンピューティングノードクラスタ126のコンピューティングノード120〜124によって様々な動作が行われ得る。
ログストリーミングモジュール104は、情報をトランザクションログ102a、102bから読み出し、その情報を、処理するために入力/出力ストリームに書き込み得る。ログストリーミングモジュール104は、場合によっては、情報をトランザクションログ102a、102bから直接取得し得る。他の場合には、ログストリーミングモジュール104は、情報を、トランザクションログ102a、102bの複製されたコピーまたはサブセットから取得し得る。ログストリーミングモジュール104は、いくつかの例では、入力/出力ストリームに書き込まれるであろう、トランザクションログ102a、102bからのエントリのサブセットをフィルタリングし得る。
ログストリーミングモジュール104は、トランザクションログ102a、102bの1つまたは複数から読み出しをし得る。場合によっては、ログストリーミングモジュール104は、年代順に順序付けられたデータのストリームを作成するために、複数のログファイル102a、102bからデータを抽出し再順序付けし得る。場合によっては、パーティションは、親パーティションが1つまたは複数の子パーティションに関連付けられた系列に関連付けられ得る。ログストリーミングモジュール104は、イベントのレコードが異なるログファイルに格納されているとしても、イベントのストリームをそれらが生じた順に再構成するために、パーティションの系列の知識を取得し利用し得る。
通常、所与のトランザクションログ102a、102bは、特定のハッシュ空間に対応し得る。これは、各パーティション101a及び101bが特定のハッシュ空間に関連付けられている結果であり得る。したがって、ログストリーミングモジュール104への入力は、特定のハッシュ空間内にあるアイテムに対する更新を示す情報のストリームから構成され得る。
ストリームのレコードは、パーティション101a、101bの1つによって維持されるアイテムの集合でアイテムを更新するリクエストを示し得る。レコードには、アイテムの主キー、アイテムの以前の値及びアイテムの新しい値などのデータが含まれ得る。
マッピングモジュール118は、ログストリーミングモジュール104からの情報のストリームを処理し得る。マッピングモジュール118は、アイテムの集合にデータを格納するリクエストの各レコードを検査しどのようにレコードを扱うべきかを決定することによって、情報のストリームを処理し得る。マッピングモジュール118は、コンピューティングノードクラスタ126の能力を用いて、アイテムの集合にデータを格納するリクエストがトリガ機能によって処理されるべきであることを判定し得る。
マッピングモジュール118は、コンピューティングノードクラスタ126のコンピューティングノード120のリソース使用率をモニタリングし得る。モニタリングは、入力/出力使用率、中央処理装置(「CPU」)使用率などの追跡から構成され得る。マッピングモジュール118は、コンピューティングノードクラスタ126のコンピューティングノード120で動作する性能追跡構成要素から使用率の情報を受信し得る。
マッピングモジュール118は、コンピューティングノードクラスタ126のコンピューティングノード120〜124の特定のノードが、ストリームから受信した情報に基づいてトリガ機能を実行するべきであることを判定し得る。判定は、選択されたコンピューティングノード−例えば、コンピューティングノードクラスタ126の他のコンピューティングノード122〜124の少なくとも1つよりも使用率が低い、描写されたコンピューティングノード120に基づき得る。場合によっては、マッピングモジュール118は、コンピューティングノードクラスタ126のコンピューティングノード120〜124によって行われた以前の処理も検討し得る。例えば、マッピングモジュール118は、所与のアイテムに対して、当該アイテムに対応する全ての更新が同一のコンピューティングノード120上で処理されることを確保し得る。これは、場合によっては、特定のハッシュ空間にマッピングされるアイテムの全てが同一のコンピューティングノード120に送られるように、追加のハッシュ関数とハッシュ空間のマッピングを適用することによってなされ得る。
図2は、ストリームベースのトリガ機能を処理するシステムを描写した図である。クライアントデバイス200は、ネットワーク204を介して、スクリプト202などの命令セットをスクリプト配置モジュール206に提供し得る。命令セットは、トリガ機能と呼ばれ得る。トリガ機能は、更新イベントに対応するために、コンピューティングノードクラスタ222のコンピューティングノード210〜214の1つで起動し得る。トリガ機能の命令セットを受信すると、スクリプト配置モジュール206は、図1に描写したデータベース100のトランザクションログ102などのデータベーストランザクションログからのイベントを処理するのに用いられ得る1つまたは複数のコンピューティングノード210及び212を識別し得る。
スクリプト202は、スクリプト配置モジュール206からコンピューティングノードクラスタ222のコンピューティングノード210〜214の1つまたは複数に送信され得る。次いで、スクリプトは、トリガ機能を実行するために選択されたコンピューティングノード(例えば、コンピューティングノード210及び212)に格納され得る。トリガ機能を実行するために選択されるコンピューティングノードの数は、作業負荷及びコンピューティングノード210〜214の容量使用率といった係数に基づき得る。
各コンピューティングノード210〜214のストリーム処理モジュール216〜220は、各スクリプトへのアクセスを維持し得、スクリプトが定義するトリガ機能の起動を提供し得る。例えば、ストリーム処理モジュール216は、アイテムの特定の集合に関するイベントのカテゴリといったイベントのカテゴリとスクリプト202及び/またはスクリプト202が定義するトリガ機能の間の関連性を維持し得る。ストリーム処理モジュール216は、その関連付けられたストリームサブセット224から着信イベントを読み出し、スクリプト202によって定義されるトリガ機能を評価し得る。ストリーム処理モジュール216は、スクリプト202に含まれトリガ機能を構成する命令セットを実行し得る。ストリーム処理モジュール216は、トリガ機能にパラメータを提供し得る。例えば、ストリーム処理モジュール216は、ストリームサブセット224の更新イベントに対応する主キー、古い値及び新しい値を取得し得、イベントに適用可能であるトリガ機能(または複数のトリガ機能)に、主キー、古い値及び新しい値をパラメータとして与え得る。いくつかの例では、ストリームサブセット224などのストリームから読み出されるイベントは、複数のトリガ機能に対応し得る。ストリーム処理モジュール216は、イベントをストリームサブセット224から受信すると、イベントに関連付けられた、複数のトリガ機能のそれぞれを起動し得る。
ストリーム処理モジュール216〜220はそれぞれ、イベントの対応するストリームサブセット224〜228を受信し得る。ストリーム処理モジュール210〜214のそれぞれが受信することのできるイベントセットは、場合によっては、データベース上で生じるイベントのサブセットに限定され得る。サブセットは、図1で描写したように、ログストリーミングモジュール104により、かつ、マッピングモジュール118の動作により、フィルタリング基準の適用に基づいて決定され得、このことにより、イベントは、マッピングモジュール118によって取得されるハッシュ値及びハッシュ空間のマッピング118に基づいてストリーム処理モジュール216〜220に送信され得る。図1を参照すると、ハッシュ空間108〜116とコンピューティングノード120〜124の間の接続線は、入力をストリーム処理モジュール216〜220に与えるストリームに対応し得る。
図3は、データベースログファイルの複製及びストリーミングを描写した図である。データベース300は、情報を、ストレージデバイス308のトランザクションログファイル314に格納し得る。トランザクションログファイル314の情報は、アイテムの集合で様々なアイテムを更新するリクエストを示す情報を備え得る。コンピューティングノード320の構成要素であるログストリーミングモジュール326は、トランザクションログファイル314の情報にアクセスし得、アイテムの集合でアイテムを更新するリクエストに対応するイベントのストリーム332を形成し得る。
様々な例では、オリジナルのトランザクションログファイル314が他のストレージデバイス306及び310に複製され得、ログファイルの複製312及び316を形成する。データベース300は、場合によっては、データベース300のコンテンツを複製し次いで各自それぞれのログファイルを生成する他のデータベースに対するマスタに指定され得る。他の場合には、トランザクションログファイル314は、全体的にまたは部分的にコピーされて、ログファイルの複製312及び316を形成し得る。コンピューティングノード318及び322の構成要素であるストリーミングモジュール324及び328は、それぞれログファイルの複製312及び316を読み出して、対応するストリーム330及び334を形成し得る。ログファイルの複製312及び316は、複製されたデータベースでトリガ機能を処理するのに用いられ得、または、トリガ機能のさらなるスケーリング処理の手段として用いられ得る。
複製処理302及び304は、トランザクションログファイル314のコンテンツのサブセットをログファイルの複製312及び316に転送するように構成され得る。これは、転送されるデータ量の減少、ストリーミングモジュール324及び328の効率の向上を含む様々な理由のために行われ得る。
図4は、ログファイルイベントのストリームの送信器として構成されたコンピューティングノードを描写した図である。コンピューティングノード400は、ログストリーミングモジュール404及びマッピングモジュール414を備え得る。ログリーダモジュール404は、データをログファイル402から読み出し、イベントレコード408をコンピューティングノード400のメモリ406内に配置する。ログファイル402は、パーティション424に関連付けられたストレージデバイスから読み出され得る。マッピングモジュール414は、トリガ機能を実行する予定のコンピューティングノードに更新をストリームするのにストリームサブセット420〜422のどれが用いられるべきかを判定し得る。マッピングモジュール414は、その判定を、選択するコンピューティングノードの使用率レベルなどの係数に基づいて行い得る。使用率レベルは、場合によっては、トリガ機能を実行するために構成されたノードのクラスタ内の他のコンピューティングノードの使用率レベルと比較され得る。
ログストリーミングモジュール404は、イベントレコード408を、メモリ406に維持されたキュー426内に配置し得る。いくつかの例では、キュー426は、図4に描写されたストレージデバイス416などの永続的なストレージ機構によってサポートされ得る。キュー426は、先入れ先出(「FIFO」)キューとして、またはそれと同様に操作され得る。通常、アイテムの集合に更新を適用する順序は保存される。
ストリームサブセット420〜422も、キュー構造を備え得る。いくつかの例では、これらの構造は、コンピューティングノード400のメモリ406に含まれ得る。他の例では、キュー構造は別のコンピューティングノード上に維持され得る。図1に戻って参照すると、コンピューティングノード120〜124はそれぞれ、特定のストリームサブセットに対応するイベントを保持するためのキュー構造(図示せず)を含み得る。例えば、再度図1を参照すると、ハッシュ空間108及び110は、コンピューティングノード120に向けられているストリームサブセットに対応し得る。キュー構造は、この場合、コンピューティングノード120のメモリ及び/または永続的なストレージデバイスに維持され得る。
ストリームサブセットのキュー(図示せず)の順序付けもFIFOであってもよい。しかしながら、ストリームサブセット420〜422はそれぞれ、ログストリーミングモジュール404によってメモリ406内のキュー426内に配置されたレコードのストリームの非重複のサブセットに対応し得ることに留意されたい。マッピングモジュール414は、集合の所与のアイテムに対して、当該アイテムに関するすべての更新が同一のストリームサブセット420または422に向けられるように動作する。したがって、ストリームサブセット420〜422のそれぞれで、個々のアイテムに対するイベントの順序付けは保存される。
図5は、トリガ機能の実行器として構成されたコンピューティングノードを描写した図である。キュー512は、コンピューティングノード500のメモリに維持され得る。キュー512は、図4に描写されたストリームサブセット420または422の1つに対応するイベントのレコードを含み得る。例示の目的のために、イベントは、図5に描写したように、ストリームサブセット422からのものであると仮定し得る。
ストリーム処理モジュール506は、レコードをキュー512から読み出し、スクリプト処理モジュール508のメソッドを起動し得、これに、更新されたアイテムの主キー、アイテムの以前の値及びアイテムの新しい値などの、イベントに関する情報が与えられる。スクリプト処理モジュール508は、どのスクリプトまたはスクリプト(複数)がイベントに応答して実行されるべきかを判定し得る。スクリプトは、いくつかの例では、コンピューティングノード500のストレージ502に維持され得る。スクリプトは、コンピューティングノード500がスクリプトに関連付けられるべき、例えば、関連イベントに遭遇すると関連付けられたトリガ機能を実行するというタスクが割り当てられるべきであるという判定に応答してストレージ502に配置され得る。コンピューティングノードのクラスタにおいて、特定のコンピューティングノードが、アイテムの特定の集合、アイテムの集合のパーティション等に対してトリガ機能を実行するために選択され得る。
スクリプト処理モジュール508は、通常ストレージ502に、イベントの特性をスクリプト504に関係させる情報を維持し得る。いくつかの例では、情報は、テーブルまたはパーティションの識別子などのスキーマアイテムとスクリプトのマッピングを備え得る。この情報を用いて、スクリプト処理モジュール508は、スクリプトによって定義されたトリガ機能が行われ得るようにスクリプトをメモリ510内にロードし実行させることによって、ストリーム処理モジュール506によってキュー512から読み取られたイベントに応答し得る。図5に描写したように、実行スクリプト514は、スクリプトモニタリングモジュール518によってモニタリングされ得る。モニタリングは、スクリプトは実行にどれくらいかかるか、スクリプトはメモリ及び中央処理装置(「CPU」)サイクルをどれくらい消費するかなどを追跡することを備え得る。いくつかの例では、この情報は、トリガ機能のパフォーマンスがホスト型サービスとして与えられる場合に適切なビリングを確保することができるプロビジョニングモデル(図示せず)に与えられ得る。
スクリプト終了モジュール516も、実行スクリプト514のパフォーマンスを追跡し得る(スクリプトモニタリングモジュール518の援助を用いる場合もある)。スクリプト終了モジュール516は、実行スクリプト514が特定のパラメータを超えた場合、スクリプトの実行を終了し得る。例えば、実行スクリプト514は、その実行時間後、または入力/出力の使用率が閾値を超えた後、終了され得る。閾値は、他のカスタマによって、サービスの質のレベルによって等知覚されるパフォーマンスに影響を与え得るリソース消費レベルといった様々な係数に基づき得る。
図6は、イベントストリームに基づいてトリガ機能を実行するプロセスを描写した流れ図である。ブロックシーケンスとして描写したが、当業者は、描写された順序は本開示の範囲を限定するものとして構成されておらず、描写されたブロックで示された動作の少なくともいくつかは変更、省略、再順序付け、追加の動作で補完、または並列動作され得ることを理解されよう。描写されたプロセスの実施形態は、本明細書中で記載するコンピューティングシステムなどのコンピューティングシステムによって実行されるコンピュータ実行可能命令の様々な組み合わせを用いて実装され得る。
ブロック600は、アイテムの集合をデータベース管理システムで維持することを描写する。各アイテムは、主キー及び1つまたは複数の追加の値を備え得る。アイテムはロウと称され得、集合はテーブルと称され得る。集合(またはテーブル)は、通常、名前または他の識別子に関連付けられ得る。識別子は、いくつかの例では、スクリプト及びそれが定義するトリガ機能を、テーブルに対応するイベントに関連付けるために用いられ得る。
ブロック602は、第1のコンピューティングノードを含む複数のコンピューティングノードに、データベース管理システムが集合にアイテムを格納するリクエストを処理することに応答して実行される命令セットを格納することを描写する。アイテムの格納とは、新しいアイテムの挿入または既存のアイテムの更新を指し得る。命令セットは、トリガ機能としてスクリプトファイルに定義され得る。命令セットは、例えば図5に描写したように、アイテムの格納リクエストなどの様々なイベントに応答してトリガ機能を実行する予定のコンピューティングノードのメモリに格納され得る。
ブロック604によって描写されるように、データベース管理システムは、集合にアイテムを格納するリクエストを、リクエストを示す情報をログファイルに少なくとも書き込むことによって処理し得る。次いで、この情報は、ブロック606によって描写されるように、ログファイルから読み出され、第2のコンピューティングノードに送信され得る。第2のコンピューティングノードは、例えば、図4に描写したコンピューティングノード400を含み得る。ブロック608は、1つまたは複数のコンピューティングノードの第2のグループが、リクエストを示す情報を受信し得ることを描写する。
第2のコンピューティングノードは、いくつかの例では、アイテムの主キーがある値の範囲内に存在するという判定に応答して、リクエストを示す情報を受信し得る。例えば、第2のコンピューティングノードは、グループ内の各コンピューティングノードがデータベースログファイルに記録されたイベントの一部にアクセスするようなコンピューティングノードのグループに関連付けられ得る。各コンピューティングノードによってアクセスされる部分は、イベントが対応するアイテムの主キーに基づき得る。
ブロック610によって描写されるように、第2のコンピューティングノードは、複数のコンピューティングノードの使用率をモニタリングし得る。使用率は、経時的にモニタリングされ得、またはスポットチェックされ得る。入力/出力使用率、CPU使用率などの様々な使用率の係数がモニタリングされ得る。使用率が低いコンピューティングノードは、トリガ機能を処理する候補として好ましい場合がある。コンピューティングノードの使用率が閾値レベルより高くなると、追加のコンピューティングノードがシステムに追加され得る。使用率が他の何らかの閾値レベルを下回ると、コンピューティングノードは削除され得る。これらの技術によって、トリガを処理するための容量はスケーリング可能になる。
ブロック612は、命令セットを実行するために、複数のコンピューティングノードから第1のコンピューティングノードを選択することを描写する。選択は、第1のコンピューティングノードの使用率レベルに少なくとも部分的に基づき得る。いくつかの例では、第1のコンピューティングノードは、使用率が閾値レベルを下回ったときに選択され得る。場合によっては、第1のコンピューティングノードは、複数のコンピューティングノードの他のコンピューティングノードに対するその使用率に基づいて選択され得る。
ブロック614は、第1の命令セットの実行を示すデータを、第1のコンピューティングノードに送信することを描写する。送信は、ブロック612によって描写されたように、命令セットを実行するために第1のコンピューティングノードを選択したことに応答してなされる。
図7は、イベントストリームに基づいてトリガ機能を実行するプロセスの追加の実施形態を描写した流れ図である。ブロックシーケンスとして描写したが、当業者は、描写された順序は本開示の範囲を限定するものとして構成されておらず、描写されたブロックで示された動作の少なくともいくつかは変更、省略、再順序付け、追加の動作で補完、または並列動作され得ることを理解されよう。描写されたプロセスの実施形態は、本明細書中で記載するコンピューティングシステムなどのコンピューティングシステムによって実行されるコンピュータ実行可能命令の様々な組み合わせを用いて実装され得る。
ブロック700は、第1のコンピューティングノードを含む複数のコンピューティングノードを、データベース管理システムによって維持されるアイテムの集合にアイテムを格納するリクエストに応答して実行される第1の命令セットに関連付けることを描写する。
ブロック702は、データベース管理システムによって処理される、アイテムの集合にアイテムを格納する第1のリクエストを示す情報を受信することを描写する。情報は、データベース管理システムのログファイルから直接的にまたは間接的に受信され得る。情報は、例えば、ログファイルの複製から読み出され得る。
ブロック704は、第1のコンピューティングノードの使用率を含む複数のコンピューティングノードの使用率をモニタリングすることを描写する。様々な例では、コンピューティングノードの使用率レベルを用いて、トリガ機能のパフォーマンスを扱うために一番使用されていないコンピューティングノードを選択し得る。使用率レベルは、追加のコンピューティングノードを複数のコンピューティングノードにいつ追加するべきかを判定するのにも用いられ得る。これにより、トリガ機能を実行する能力のスケーリングが可能になり得る。
ブロック706は、第1のリクエストを示す情報の受信に少なくとも部分的に基づいて、かつ、命令セットに関連付けられ得る他のコンピューティングノードと比較した第1のコンピューティングノードの相対的使用率に少なくとも部分的に基づいて、第1の命令セットを第1のコンピューティングノードで実行させることを描写する。第1のコンピューティングノードで第1の命令セットを実行させることは、第1の命令セットを実行するコマンドを示すデータを送信することを含み得る。データには、影響を受けるアイテムの主キー、アイテムの以前の値及びアイテムの現在の値などの更新に関する情報も含まれ得る。
図8は、1つまたは複数のコンピューティングノードのグループでトリガ機能を実行することを描写した流れ図である。ブロックシーケンスとして描写したが、当業者は、描写された順序は本開示の範囲を限定するものとして構成されておらず、描写されたブロックで示された動作の少なくともいくつかは変更、省略、再順序付け、追加の動作で補完、または並列動作され得ることを理解されよう。描写されたプロセスの実施形態は、本明細書中で記載するコンピューティングシステムなどのコンピューティングシステムによって実行されるコンピュータ実行可能命令の様々な組み合わせを用いて実装され得る。
ブロック800は、1つまたは複数のコンピューティングノードのグループから選択されたコンピューティングノードでスクリプトの実行を開始することを描写する。コンピューティングノードのグループは、スクリプトによって定義されるようなトリガ機能を実行するのに利用可能になされ得る。これは、スクリプトをコンピューティングノードに格納することを含み得、スクリプトを実行可能な形式にコンパイルするといったさらなるステップも含み得る。
コンピューティングノードのグループがトリガ機能を実行するのに利用可能になされ得るが、システムは、特定のアイテムに関するすべてのトリガ機能を実行するためにグループから特定のコンピューティングノードを選択し得ることに留意されたい。例えば、第1の一連の更新は、テーブルTのアイテムXになされ得、第2の一連の更新はテーブルTのアイテムXになされ得る。同一のトリガ機能がいずれのケースでも適用され得る。ハッシュ関数とハッシュ空間のマッピングを用いて、システムは、起動がXに関するとき、トリガ機能の起動のすべてを第1のコンピューティングノードで実行させ得、Xに関するトリガ機能の起動のすべてを第2のコンピューティングノードで実行させ得る。
スクリプトを実行するために選択されるコンピューティングノードは、それが、スクリプトを実行するべきであると指示するメッセージを受信し得る。例えば、図5に描写したように、ストリーム処理モジュール506はメッセージを受信し、それをスクリプト処理モジュール508に転送し得る。スクリプト処理モジュール508は、次いで、スクリプトの実行を開始し得る。
ブロック802は、スクリプトの実行をモニタリングすることを描写する。スクリプトを実行している間、それが消費するコンピューティングリソース及びそれが実行するのにかかる時間の長さがモニタリングされ得る。図5は、例えば、スクリプトに関する様々なパフォーマンスのメトリクス、例えばそれが実行するのにかかる時間、それが消費するメモリ及びCPUサイクルなどを追跡するスクリプトモニタリングモジュール518を描写する。
ブロック804によって描写されるように、スクリプトは、そのリソース使用率が閾値を超えた場合に終了され得る。閾値は、特にサービスの他のテナントに対して実行している他のトリガのサービスの質のレベルと干渉するであろうリソース使用率の量といった様々な係数に基づいて設定され得る。
ブロック806は、全体のリソース使用率が第1の閾値を超えたときに追加のコンピューティングノードをグループに追加することを描写する。コンピューティングノードのリソース可用性はモニタリングされ得、リソース使用率が閾値の量を超えた場合、追加のコンピューティングノードがグループに追加され得る。これは、ハッシュ空間の定義をさらなるサブグループに分割すること、及びサブグループの1つを新しいコンピューティングノードに割り当てることを含み得る。システムは、分割を行う前に、特定のアイテムに関する保留イベントが全て処理されることを確保してもよい。
図9は、本発明の態様を実施し得る分散型コンピューティング環境の例を描写した図である。様々なユーザ900aは、任意の種類のコンピューティングデバイス902aで動作している様々なクライアントアプリケーションとインタラクトして、通信ネットワーク904を介して、データセンタ920内の様々なコンピューティングノード910a及び910bで実行している処理と通信し得る。代替として、クライアントアプリケーション902bは、ユーザの介入なしに通信し得る。通信ネットワーク904は、インターネット、有線及び無線ローカルエリアネットワーク、光ファイバーネットワーク、衛星通信などを含む通信技術の任意の組み合わせを含み得る。任意の数のネットワークプロトコルが使用され得る。
コンピューティングノード910a及び910bで実行している処理との通信は、ゲートウェイ906及びルータ908を介して提供され得る。多数の他のネットワーク構成も使用され得る。図9に明示的に描写されていないが、様々な認証機構、ウェブサービス層、ビジネスオブジェクトまたは他の中間層が、コンピューティングノード901a及び910bで実行している処理との通信を仲介するために提供され得る。これらの中間層のいくつかは、それら自体が、コンピューティングノードの1つまたは複数で実行される処理を備え得る。コンピューティングノード910a及び910bならびにそこで実行している処理はまた、ルータ908を介して互いに通信し得る。代替として、別個の通信経路が使用され得る。一部の実施形態では、データセンタ920は、追加のデータセンタと通信するように構成され得、コンピューティングノード及びそこで実行している処理が他のデータセンタ内のコンピューティングノード及び動作している処理と通信し得るようになる。
コンピューティングノード910aは、1つまたは複数のプロセッサ916a、1つまたは複数のメモリ918a及び1つまたは複数のストレージデバイス914aを備える物理的なハードウェアに存在するものとして描写される。コンピューティングノード910aの処理は、オペレーティングシステムと連動して実行し得、または、プロセッサ916a、メモリ918aまたはストレージデバイス914aなどの物理的なリソースと直接インタラクトするベアメタルプロセスとして実行し得る。
コンピューティングノード910bは、仮想化構成要素912を備え得、これは、物理的なプロセッサ、メモリ及びストレージデバイスなどの様々な物理的なリソースに対する共有アクセスを提供する仮想マシンホスト及び仮想マシンインスタンスを含み得る。これらのリソースには、描写されたプロセッサ916b、メモリ918b及びストレージデバイス914bが含まれ得る。任意の数の仮想化機構は、物理的なリソースに対する共有アクセスを提供するために使用され得る。
図9に描写した様々なコンピューティングノードは、ウェブサービス、データベース管理システム、ビジネスオブジェクト、モニタリング及び診断設備などをホストするように構成され得る。コンピューティングノードは、パーソナルコンピュータ、サーバ、クラスタ化コンピューティングデバイス等といった様々な種類のコンピューティングリソースを指し得る。コンピューティングノードは、例えば、セルフォン、スマートフォン、タブレット、組み込み型デバイス等といった様々なコンピューティングデバイスを指し得る。仮想化を使用することなく実装されると、コンピューティングノードは、コンピュータ可読命令を格納するように構成された1つまたは複数のメモリ及び命令を読み出し実行するように構成された1つまたは複数のプロセッサを含み得る。コンピューティングノードは、1つまたは複数のストレージデバイス、ネットワークインタフェース、通信バス、ユーザインタフェースデバイスなども備え得る。コンピューティングノードは、ハイパーバイザとともにまたはハイパーバイザなしで実装される仮想マシン、仮想化ベアメタル環境等といった仮想化されたコンピューティングリソースも利用し得る。仮想化ベースのコンピューティングノードは、したがって、仮想化リソース及び、仮想化リソースを実行するのに必要な物理的なハードウェアの両方を包含する。コンピューティングノードは、オペレーティングシステム及びアプリケーションプログラムを実行するように構成され得る。一部の実施形態では、コンピューティングノードは、ベアメタルアプリケーションプログラムも備え得る。
少なくとも一部の実施形態では、本明細書中に記載する技術の1つまたは複数の一部またはすべてを実装するサーバは、1つまたは複数のコンピュータアクセス可能な媒体を含むまたは1つまたは複数のコンピュータアクセス可能な媒体にアクセスするように構成された汎用コンピュータシステムを含み得る。図10は、1つまたは複数のコンピュータアクセス可能な媒体を含むまたは1つまたは複数のコンピュータアクセス可能な媒体にアクセスするように構成された汎用コンピュータシステムを描写する。例示された実施形態では、コンピューティングデバイス1000は、入力/出力(「I/O」)インタフェース1030を介して、システムメモリ1020に連結される、1つまたは複数のプロセッサ1010a、1010b及び/または1010n(本明細書中では、プロセッサ1010として単数でまたはプロセッサ(複数)1010として複数で呼ばれ得る)を含む。コンピューティングデバイス1000は、I/Oインタフェース1030に連結されるネットワークインタフェース1040をさらに含む。
様々な実施形態では、コンピューティングデバイス1000は、1つのプロセッサ1010を含むユニプロセッサシステム、またはいくつかのプロセッサ1010(例えば、2つ、4つ、8つ、または別の好適な数)を含むマルチプロセッサシステムであってもよい。プロセッサ1010は、命令を実行することが可能な任意の好適なプロセッサであってもよい。例えば、様々な実施形態では、プロセッサ1010は、x86、PowerPC、SPARCもしくはMIPS ISA、または任意の他の好適なISAなどの様々な命令セットアーキテクチャ(「ISA」)のうちのいずれかを実装する、汎用または組込み型プロセッサであってもよい。マルチプロセッサシステムでは、プロセッサ1010はそれぞれ、同じISAを一般に実装し得るが、必ずしもそうでなくてもよい。
一部の実施形態では、グラフィックスプロセッシングユニット(「GPU」)1012は、グラフィックスレンダリングのかつ/またはフィジックスプロセッシングの能力を提供するのに関与し得る。GPUは、例えば、グラフィック計算に特殊化した高並列化プロセッサアーキテクチャを備え得る。一部の実施形態では、プロセッサ1010及びGPU1012は、同一種類のデバイスの1つまたは複数として実装され得る。いくつかの例では、GPU1012は、計算を行い、プロセッサ1010と協働してまたはプロセッサ1010の代わりに命令を実行し得る。したがって、本明細書中で用いるように、プロセッサという用語は、GPUを包含し得る。同様に、一次プロセッサ1010の動作を補完または置換する他の高並列化プロセッサアーキテクチャも、プロセッサという用語に包含される。
システムメモリ1020は、プロセッサ(複数可)1010によってアクセス可能な命令及びデータを格納するように構成され得る。様々な実施形態では、システムメモリ1020は、静的ランダムアクセスメモリ(「SRAM」)、同時性動的RAM(「SDRAM」)、非揮発性/フラッシュ(登録商標)タイプのメモリまたは任意の他のタイプのメモリなどの任意の好適なメモリ技術を使用して実装されてもよい。例示された実施形態では、上述の方法、技術及びデータなどの1つまたは複数の所望の機能を実装するプログラム命令及びデータは、システムメモリ1020内にコード1025及びデータ1026として格納されていることが示される。
一実施形態では、I/Oインタフェース1030は、プロセッサ1010、システムメモリ1020、及びネットワークインタフェース1040または他の周辺インタフェースを含む、デバイス内の任意の周辺デバイス間のI/Oトラフィックを調整するように構成され得る。一部の実施形態では、I/Oインタフェース1030は、1つの構成要素(例えば、システムメモリ1020)からのデータ信号を、別の構成要素(例えば、プロセッサ1010)による使用に好適な形式に変換するように、任意の必要なプロトコル、タイミング、または他のデータ変換を行なってもよい。一部の実施形態では、I/Oインタフェース1030は、例えば、ペリフェラルコンポネントインターコネクト(「PCI」)バス規格またはユニバーサルシリアルバス(「USB」)規格の異形などの様々な種類の周辺バスを通じて取設されるデバイスに対するサポートを含み得る。一部の実施形態では、I/Oインタフェース1030の機能は、例えば、ノースブリッジ及びサウスブリッジなどの2つ以上の別個の構成要素に分割されてもよい。また、一部の実施形態では、システムメモリ1020へのインタフェースなどのI/Oインタフェース1030の機能性の一部または全ては、プロセッサ1010内へ直接組み込まれてもよい。
ネットワークインタフェース1040は、データが、コンピューティングデバイス1000と、例えば他のコンピュータシステムなどまたはデバイスなどの、ネットワークまたはネットワーク(複数)1050に取設される他のデバイスまたはデバイス(複数)1060の間で交換されることを可能にするように構成され得る。様々な実施形態では、ネットワークインタフェース1040は、例えばイーサネットネットワークのタイプなどの任意の好適な有線または無線一般データネットワークを介した通信をサポートし得る。さらに、ネットワークインタフェース1040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等の電気通信/テレフォニネットワークを介した、ファイバチャネルSAN(ストレージエリアネットワーク)などのストレージエリアネットワークを介した、または任意の他の好適なタイプのネットワーク及び/もしくはプロトコルを介した通信をサポートしてもよい。
一部の実施形態では、システムメモリ1020は、対応する方法及び装置の実施形態を実装するための上述されるようなプログラム命令及びデータを格納するように構成されたコンピュータアクセス可能な媒体の一実施形態であってもよい。しかしながら、他の実施形態では、プログラム命令及び/またはデータは、異なるタイプのコンピュータアクセス可能な媒体において、受信、送信、または記憶されてもよい。一般的に述べると、コンピュータアクセス可能な媒体は、I/Oインタフェース1030を介してコンピューティングデバイス1000に連結される、磁気もしくは光媒体、例えば、ディスクもしくはDVD/CDなどの非一時的記憶媒体またはメモリ媒体を含んでもよい。非一時的コンピュータアクセス可能記憶媒体はまた、システムメモリ1020または別のタイプのメモリとして、コンピューティングデバイス1000の一部の実施形態に含まれてもよい、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなど等の任意の揮発性または非揮発性媒体も含んでもよい。さらに、コンピュータアクセス可能媒体は、ネットワークインタフェース1040を介して実装されてもよい、ネットワーク及び/もしくは無線リンク等の通信媒体を介して伝送される電気、電磁気、もしくはデジタル信号などの送信媒体または信号を含んでもよい。図10に例示したものなどの複数のコンピューティングデバイスの一部または全部は、様々な実施形態において、記載される機能性を実装するために使用されてもよく、例えば、様々な異なるデバイス及びサーバ上で実行するソフトウェア構成要素が、機能性を提供するために協働してもよい。一部の実施形態では、記載される機能性の一部分は、汎用コンピュータシステムを使用して実装されることに加えて、またはその代わりに、ストレージデバイス、ネットワークデバイスまたは特殊目的コンピュータシステムを使用して実装されてもよい。本明細書中で用いるように「コンピューティングデバイス」という用語は、少なくとも全てのこれらのタイプのデバイスを指し、これらのタイプのデバイスに限定されない。
コンピューティングデバイス1000は、モジュール(図示せず)を含むソフトウェア命令によって構成され得る。モジュールは、他のモジュールとともに入力及び出力を含む関連機能のセットを実行するために、全体的にまたは部分的にシステムメモリ1020にロードされる命令セットを含む、コンピューティングデバイス1000の構成要素である。システムメモリ1020のコード1025及びデータ1026は、命令をロードすることによって変更される。プロセッサ1010、またはマルチプロセッサシステムにおいては1010a〜1010n及び/またはGPU1012とシステムメモリ1020の間のI/Oインタフェース1030を介しての相互変化に影響を受ける。モジュールは、システムメモリ1020を介してコンピューティングデバイス1000の他のモジュールと、かつネットワークインタフェース1040及びネットワーク1050を介して他のデバイス1060とインタラクトし得る。
コンピューティングノードとも称され得るコンピュートノードは、タブレットコンピュータ、パーソナルコンピュータ、スマートフォン、ゲーム機、コモディティハードウェアコンピュータ、ウェブサービス、コンピューティングクラスタ及びコンピューティング機器などの様々なコンピューティング環境で実装され得る。これらのコンピューティングデバイスまたは環境のうちいずれかは、便宜のために、コンピュートノードとしてまたはコンピューティングノードとして記載され得る。
インターネット及び/または他のネットワークを介して、分散しているクライアントのセットにアクセス可能な1つまたは複数のウェブサービス(様々な種類のクラウドベースのコンピューティングまたはストレージなど)を提供するために、企業または公共部門の団体等のエンティティによって設定されたネットワークは、プロバイダネットワークと称され得る。そうしたプロバイダネットワークには、プロバイダネットワークによって提供されるインフラ及びウェブサービスを実装し分散するために必要とされる、多数のデータセンタがホストする様々なリソースプール、例えば、物理的及び/または仮想化コンピュータサーバ、ストレージデバイス、ネットワーク機器等の集合が含まれ得る。リソースは、一部の実施形態では、インスタンスとして、関連サービスセットとして等、ストレージのためのストレージキャパシティの量、処理のための処理能力などのウェブサービスに関する様々なユニットでクライアントに提供され得る。仮想コンピューティングインスタンスには、例えば、指定された計算能力(CPUの種類及び数、メインメモリサイズなどを指示することによって指定され得る)及び指定されたソフトウェアスタック(例えば、ハイパーバイザ上で実行され得ることになるオペレーティングシステムの特定のバージョン)を有する1つまたは複数のサーバが含まれ得る。
いくつかの異なるタイプのコンピューティングデバイスは、汎用目的または特殊目的のコンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含む、様々な実施形態においてプロバイダネットワークのリソースを実装するために、単独でまたは組み合わせて用いられ得る。一部の実施形態では、クライアントまたはユーザには、例えばユーザにアドミニストレータログイン及びパスワードを与えることによって、リソースインスタンスへの直接アクセスが提供され得る。他の実施形態では、プロバイダネットワークオペレータは、例えばクライアントが、インスタンスまたは実行プラットフォームに直接アクセスする必要なしに、クライアントの代わりに、アプリケーションに好適な実行プラットフォーム(アプリケーションサーバインスタンス、Java(商標)仮想マシン(「JVM」)、汎用目的または特殊目的のオペレーティングシステム、Ruby、Perl、Python、C、C++などの様々なインタープリタ型またはコンパイル型プログラミング言語をサポートするプラットフォームまたは高性能コンピューティングプラットフォームなど)上で、指定されたクライアントアプリケーションの実行要件及びアプリケーションの計画実行をクライアントが指定することを可能にし得る。所与の実行プラットフォームは、一部の実施態様では、1つまたは複数のリソースインスタンスを利用し得、他の実施態様では、複数の実行プラットフォームが、単一のリソースインスタンスにマッピングされ得る。
多くの環境では、様々なタイプの仮想化コンピューティング、ストレージ及び/または他のネットワークアクセス可能機能性を実装するプロバイダネットワークのオペレータは、カスタマが、様々なリソース取得モードでリソースに対するアクセスを予約または購入することを可能にし得る。コンピューティングリソースプロバイダは、カスタマが所望のコンピューティングリソースを選択かつ起動し、コンピューティングリソースにアプリケーション構成要素を配置し、環境で実行しているアプリケーションを維持するための設備を提供し得る。さらに、コンピューティングリソースプロバイダは、カスタマが、アプリケーションに割り当てられたリソースの数及び種類を、アプリケーションの変更の要求またはそのキャパシティ要件として、手動または自動スケーリングのいずれかで、迅速かつ容易にスケールアップまたはスケールダウンするための設備をさらに提供し得る。コンピューティングリソースプロバイダにより提供されるコンピューティングリソースは、インスタンスと呼ばれ得る個別のユニットにおいて利用可能とされ得る。インスタンスは、物理的なサーバハードウェアプラットフォーム、サーバで実行する仮想マシンインスタンスまたはその2つの何らかの組み合わせを表し得る。様々な種類及び構成のインスタンスが、様々なオペレーティングシステム(「OS」)及び/またはハイパーバイザを実行する様々なサイズのリソースを含んで、様々なインストールされたソフトウェアアプリケーション、ランタイムなどとともに利用可能とされ得る。インスタンスは、さらに、例えば論理領域、フォールトトレラント領域、データセンタまたは基礎をなしているコンピューティングハードウェアの他の地理的位置を表す特定の可用性ゾーンで利用可能とされ得る。インスタンスは、インスタンスの冗長性を高めるために、可用性ゾーン内でまたは可用性ゾーン全体でコピーされ得、インスタンスは、特定の可用性ゾーン内でまたは可用性ゾーンにわたって、移動され得る。一例として、可用性ゾーンにおける特定のサーバとのクライアントの通信のレイテンシは、異なるサーバとのクライアントの通信のレイテンシよりも少なくなり得る。このように、インスタンスは、全体的なクライアントの経験を高めるために、高いレイテンシのサーバから低いレイテンシのサーバに移動され得る。
一部の実施形態では、プロバイダネットワークは、複数の地理的領域に編成されてもよく、各領域は、1つまたは複数の可用性ゾーンを含んでもよい。次いで、可用性ゾーン(可用性コンテナとも呼ばれ得る)は、所与の可用性ゾーン内のリソースが他の可用性ゾーン内の不具合から隔離または防護され得るように構成された1つまたは複数の異なる場所またはデータセンタを備えてもよい。つまり、1つの可用性ゾーン内の不具合が、任意の他の可用性ゾーン内に不具合をもたらすことは予期されない場合がある。したがって、リソースインスタンスの可用性プロファイルは、異なる可用性ゾーン内のリソースインスタンスの可用性プロファイルから独立していることが意図される。クライアントは、それぞれの可用性ゾーンにおいて複数のアプリケーションインスタンスを起動させることで、彼らのアプリケーションを単一の場所での不具合から保護することが可能になり得る。同時に、一部の実施態様では、安価かつ低レイテンシのネットワーク接続が、同一の地理的領域内に存在するリソースインスタンス間に提供され得る(かつ、同一の可用性ゾーンのリソース間のネットワーク送信は早くさえなり得る)。
先行セクションに記載されるプロセス、方法及びアルゴリズムのそれぞれは、1つまたは複数のコンピュータまたはコンピュータプロセッサによって実行される命令によって、完全にまたは部分的に自動化されて実施され得る。命令は、ハードドライブ、ソリッドステートメモリ、光ディスクなどの任意のタイプの非一時的なコンピュータ可読媒体またはコンピュータストレージデバイスに格納され得る。プロセス及びアルゴリズムは、アプリケーション特定回路に部分的にまたは全体的に実装され得る。開示されたプロセス及びプロセスのステップの結果は、例えば揮発性のまたは非揮発性のストレージなどの任意の種類の非一時的なコンピュータストレージで永続的にまたはそうではなく格納され得る。
前述の様々な特徴及びプロセスは、互いから独立して用いられ得、または様々なやり方で組み合わせて用いられ得る。全ての可能な組み合わせ及びサブ組み合わせは、本開示の範囲内にあることが意図される。加えて、一定の方法またはプロセスブロックは、一部の実施態様では省略され得る。本明細書中で記載される方法及びプロセスも、いずれかの特定の順序に限定されるものではなく、それに関連するブロックまたは状態は、適切である他の順序で実行することができる。例えば、記載されるブロックまたは状態は、具体的に開示されたもの以外の順序で実行され得、または、複数のブロックまたは状態は、単一のブロックまたは状態として組み合わされ得る。例示的なブロックまたは状態は、直列に、並列に、または何らかの他の態様で実行され得る。ブロックまたは状態は、開示された例示的な実施形態に追加または削除され得る。本明細書中に記載された例示的なシステム及び構成要素は、記載されたものとは異なって構成され得る。例えば、要素は、開示された例示的な実施形態と比較して、追加、削除または再配置され得る。
様々なアイテムがメモリまたはストレージに格納されて用いられているものとして示され、これらのアイテムまたはその一部はメモリ管理及びデータの完全性の目的でメモリと他のストレージデバイスの間で転送され得ることも理解されるであろう。代替として、他の実施形態では、ソフトウェア命令及び/またはシステムの一部または全部は、別のデバイスのメモリで実行され、コンピュータ間通信を介して例示されたコンピューティングシステムと通信し得る。さらに、一部の実施形態では、システム及び/またはモジュールの一部または全部は、他のやり方で、例えば、以下に限定されるものではないが、1つまたは複数の特定用途向け集積回路(「ASIC」)、標準集積化回路、コントローラ(例えば、適切な命令を実行することによるものであり、マイクロコントローラ及び/または組み込み型コントローラを含む)、フィールドプログラマブルゲートアレイ(「FPGA」)、結合プログラマブル論理回路(「CPLD」)などを含む、ファームウェア及び/またはハードウェアで少なくとも部分的に実装または提供され得る。命令、システム及びデータ構造の一部または全部も、ハードディスク、メモリ、ネットワーク、または適切なデバイスによってもしくは適切な接続を介して読み出されるポータブルメディア品などのコンピュータ可読媒体に格納され得る(例えばソフトウェア命令または構造化データとして)。命令及びデータ構造も、無線ベース媒体及び有線/ケーブルベース媒体を含む様々なコンピュータ可読伝送媒体で生成データ信号として伝送され得(例えば、搬送波または他のアナログもしくはデジタル伝播信号の一部として)、様々な形式をとり得る(例えば、単一もしくは多重アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして)。そうしたコンピュータプログラム製品は、他の実施形態では、他の形式も取り得る。したがって、本発明は、他のコンピュータシステム構成で実施され得る。
前述の事項は、以下の条項を鑑みてより良く理解でき得る。
1.システムであって、
ハッシュ空間に対応するアイテムの集合を維持するデータベース管理システムであって、前記アイテムの集合にアイテムを格納する第1のリクエストを、前記第1のリクエストを示す情報をログファイルに少なくとも書き込むことによって処理する前記データベース管理システムと、
前記データベース管理システムが前記第1のリクエストを処理することに応答して実行される第1の命令セットにアクセスできる、第1のコンピューティングノードを含む複数のコンピューティングノードと、
第2のコンピューティングノードであって、少なくとも
前記第1のリクエストを示す前記情報を受信し、
前記複数のコンピューティングノードにおけるコンピューティングノードのリソース使用率をモニタリングし、
前記第1のコンピューティングノードのリソース使用率が前記複数のコンピューティングノードの追加のコンピューティングノードよりも低いことに少なくとも部分的に基づいて、前記第1の命令セットを実行するための前記第1の1つのコンピューティングノードを選択し、
前記第1の1つまたは複数のコンピューティングノードに前記第1の命令セットを実行させるデータを、前記第1のコンピューティングノードに送信する、前記第2のコンピューティングノードとを備える、前記システム。
2.前記第2のコンピューティングノードが、少なくとも
前記第1のコンピューティングノードのリソース使用率をモニタリングし、
前記リソース使用率に少なくとも部分的に基づいて、前記第1の命令セットを実行するために、前記複数のコンピューティングノードのうちあるコンピューティングノードを選択する、条項1に記載のシステム。
3.前記第2のコンピューティングノードが、少なくとも
前記第1の命令セットのパフォーマンスに関連付けられる、前記第1のコンピューティングノードのリソース使用率をモニタリングし、
前記リソース使用率に基づいて、前記第1の命令セットのパフォーマンスを停止することを決定する、条項1に記載のシステム。
4.前記第1の命令セットが、前記アイテムの主キー、前記アイテムの以前の値または前記アイテムの新しい値の少なくとも1つを含むパラメータの関数に対応する、条項1に記載のシステム。
5.前記複数のコンピューティングノードの容量が、前記データベース管理システムから独立してスケーリングされ得る、条項1に記載のシステム。
6.データベーストリガ機能を処理する方法であって、
第1のコンピューティングノードを含む複数のコンピューティングノードを、データベース管理システムによって維持されるアイテムの集合に複数のアイテムを格納するリクエストに応答して実行される第1の命令セットに関連付けることであって、前記複数のアイテムは第1のハッシュ空間に対応するものであることと、
ログデータのリポジトリに、前記複数のアイテムを格納する、前記データベース管理システムによって処理される複数のリクエストを示す情報を格納することと、
ログデータの前記リポジトリから、前記アイテムの集合にアイテムを格納する、前記複数のリクエストの第1のリクエストを示す情報を受信することと、
前記第1のコンピューティングノードのリソース使用率が前記複数のコンピューティングノードの第2のコンピューティングノードよりも低いという判定に少なくとも部分的に基づいて、前記第1の命令セットを前記第1のコンピューティングノードで実行させることとを備える、前記方法。
7.前記第1の命令セットを前記第1のコンピューティングノードで実行することによって使用されるリソースに少なくとも部分的に基づいて、前記第1の命令セットを、前記複数のコンピューティングノードの追加のコンピューティングノードで実行させることをさらに含む、条項6に記載の方法。
8.前記第1の命令セットを実行することによって使用されるリソースが閾値の量を超えたとき、前記第1の命令セットのパフォーマンスを停止することをさらに含む、条項6に記載の方法。
9.前記第1の命令セットが、前記アイテムの主キーまたは前記アイテムに対する変更を示す情報の少なくとも1つを備える1つまたは複数のパラメータの関数に対応する、条項6に記載の方法。
10.ログデータの前記リポジトリが、前記データベース管理システムのログファイルのサブセットを備える、条項6に記載の方法。
11.前記第1のハッシュ空間と複数の命令セットの関連性を示す情報を格納することであって、前記複数の命令は前記第1の命令セットを含む、前記格納することと、
前記第1のハッシュ空間に関連付けられた前記複数の命令セットそれぞれを、前記第1のリクエストを示す前記情報を受信したことに応答して実行させることとをさらに含む、条項6に記載の方法。
12.前記第1の命令セットを含む複数の命令セットを、前記第1のリクエストを示す前記情報を受信したことに応答して実行させることをさらに含む、条項6に記載の方法。
13.1つまたは複数のコンピューティングデバイスによって実行されると、前記1つまたは複数のコンピューティングデバイスに少なくとも、
第1のコンピューティングノードを含む複数のコンピューティングノードを、データベース管理システムによって維持されるアイテムの集合に複数のアイテムを格納するリクエストに応答して実行される第1の命令セットに関連付けさせ、
前記アイテムの集合にアイテムを格納する、複数のリクエストの第1のリクエストを示す情報を受信させ、
前記第1のコンピューティングノードのリソース使用率が前記複数のコンピューティングノードの第2のコンピューティングノードよりも低いという判定に少なくとも部分的に基づいて、前記第1の命令セットを前記第1のコンピューティングノードで実行させる命令を格納する、非一時的なコンピュータ可読ストレージ媒体。
14.前記1つまたは複数のコンピューティングデバイスによって実行されると、前記1つまたは複数のコンピューティングデバイスに少なくとも、
前記第1のコンピューティングノードで前記第1の命令セットを実行することによって使用されるリソースに少なくとも部分的に基づいて、前記第1の命令セットを前記複数のコンピューティングノードの追加のコンピューティングノードで実行することを示す情報を送信させる命令をさらに含む、条項13に記載の非一時的なコンピュータ可読ストレージ媒体。
15.前記1つまたは複数のコンピューティングデバイスによって実行されると、前記1つまたは複数のコンピューティングデバイスに少なくとも、
前記第1の命令セットを実行することによって使用されるリソースに少なくとも部分的に基づいて、前記第1の命令セットのパフォーマンスを停止することを判定させる命令をさらに備える、条項13に記載の非一時的なコンピュータ可読ストレージ媒体。
16.前記第1の命令セットは、前記アイテムの主キーまたは前記アイテムに対する変更を示す情報の少なくとも1つを備える1つまたは複数のパラメータの関数に対応する、条項13に記載の非一時的なコンピュータ可読ストレージ媒体。
17.前記複数のアイテムにおけるアイテムが第1のハッシュ空間に対応する、条項13に記載の非一時的なコンピュータ可読ストレージ媒体。
18.前記1つまたは複数のコンピューティングデバイスによって実行されると、前記1つまたは複数のコンピューティングデバイスに少なくとも、
第1のハッシュ空間と複数の命令セットの関連性を示す情報を格納させ、前記複数の命令は前記第1の命令セットを含み、
前記第1のハッシュ空間に関連付けられた前記複数の命令セットのそれぞれを、前記第1のリクエストを示す前記情報を受信したことに応答して実行させる命令をさらに備える、条項13に記載の非一時的なコンピュータ可読ストレージ媒体。
19.前記第1のハッシュ空間がパーティションに対応する、条項18に記載の非一時的なコンピュータ可読ストレージ媒体。
20.前記第1の命令セットが、クロスリージョンレプリケーション、データ検証またはアクセスパターン検出の少なくとも1つを実行するためのスクリプトを備える、条項13に記載の非一時的なコンピュータ可読ストレージ媒体。
別途具体的に記述されない限りまたは用いられている文脈内でそれ以外に理解されない限り、とりわけ、「can(することができる)」、「could(できるであろう)」、「might(かもしれない)」、「may(してもよい)」、「e.g.(例えば)」などの本明細書中で用いられる条件的言語は、特定の特徴、要素、及び/またはステップを特定の実施形態が含み、一方で他の実施形態が含まないことを伝えるために一般に使用される。したがって、そのような条件的言語は、一般に、特徴、要素、及び/またはステップが、1つまたは複数の実施形態にいずれの形であれ必要とされるか、あるいは1つまたは複数の実施形態が、オーサ入力またはプロンプティングを用いて、または用いずに、これらの特徴、要素、及び/またはステップが含まれるか、または任意の特定の実施形態で行われるべきであるかを決定するための論理を必ず含むことを含意することは意図していない。用語「comprising(備える)」、「including(含む)」、「having(有する)」などは同義であり、オープンエンドに包含的に用いられ、追加の要素、特徴、行為、動作などを排除しない。また、用語「or(または)」は、その包含的な趣旨で(排除的な趣旨ではなく)用いられ、例えば要素のリストをつなぐのに用いられた際に、用語「or(または)」はリストの要素の1つ、いくつかまたは全てを意味する。
特定の例示的な実施形態を記載してきたが、これらの実施形態は例としてのみ提示したものであり、本明細書中に開示する発明の範囲を限定する意図はない。したがって、前述の説明のいずれも、任意の特定の特徴、特性、ステップ、モジュールまたはブロックが必要であるまたは必須であることを意味する意図はない。実際のところ、本明細書中に記載される新規の方法及びシステムは、様々な他の形式で実施され得、さらに、本明細書中に記載される方法及びシステムの形式の様々な省略、置換及び変更は、本明細書中に開示する発明の精神から逸脱せずになされ得る。添付の特許請求の範囲及びそれらの均等物は、本明細書中に開示される発明の特定の範囲及び精神に収まるような形式または修正を包含するように意図されている。

Claims (15)

  1. システムであって、
    ハッシュ空間に対応するアイテムの集合を維持するデータベース管理システムであって、前記アイテムの集合にアイテムを格納する第1のリクエストを、前記第1のリクエストを示す情報をログファイルに少なくとも書き込むことによって処理する前記データベース管理システムと、
    前記データベース管理システムが前記第1のリクエストを処理することに応答して実行される第1の命令セットにアクセスできる、第1のコンピューティングノードを含む複数のコンピューティングノードと、
    第2のコンピューティングノードであって、少なくとも、
    前記第1のリクエストを示す前記情報を受信し、
    前記複数のコンピューティングノードにおけるコンピューティングノードのリソース使用率をモニタリングし、
    前記第1のコンピューティングノードのリソース使用率が前記複数のコンピューティングノードの追加のコンピューティングノードよりも低いことに少なくとも部分的に基づいて、前記第1の命令セットを実行するための前記第1の1つのコンピューティングノードを選択し、
    前記第1の1つまたは複数のコンピューティングノードに前記第1の命令セットを実行させるデータを、前記第1のコンピューティングノードに送信する、前記第2のコンピューティングノードと、を備える、前記システム。
  2. 前記第2のコンピューティングノードが、少なくとも、
    前記第1のコンピューティングノードのリソース使用率をモニタリングし、
    前記リソース使用率に少なくとも部分的に基づいて、前記第1の命令セットを実行するために、前記複数のコンピューティングノードのうちのあるコンピューティングノードを選択する、請求項1に記載のシステム。
  3. 前記第2のコンピューティングノードが、少なくとも、
    前記第1の命令セットのパフォーマンスに関連付けられる、前記第1のコンピューティングノードのリソース使用率をモニタリングし、
    前記リソース使用率に基づいて、前記第1の命令セットのパフォーマンスを停止することを決定する、請求項1に記載のシステム。
  4. 前記第1の命令セットが、前記アイテムの主キー、前記アイテムの以前の値または前記アイテムの新しい値の少なくとも1つを備えるパラメータの関数に対応する、請求項1に記載のシステム。
  5. 前記複数のコンピューティングノードの容量が、前記データベース管理システムから独立してスケーリングされ得る、請求項1に記載のシステム。
  6. データベーストリガ機能を処理する方法であって、
    第1のコンピューティングノードを含む複数のコンピューティングノードを、データベース管理システムによって維持されるアイテムの集合に複数のアイテムを格納するリクエストに応答して実行される第1の命令セットに関連付けることであって、前記複数のアイテムは第1のハッシュ空間に対応するものであることと、
    ログデータのリポジトリに、前記複数のアイテムを格納する、前記データベース管理システムによって処理される複数のリクエストを示す情報を格納することと、
    ログデータの前記リポジトリから、前記アイテムの集合にアイテムを格納する、前記複数のリクエストの第1のリクエストを示す情報を受信することと、
    前記第1のコンピューティングノードのリソース使用率が前記複数のコンピューティングノードの第2のコンピューティングノードよりも低いという判定に少なくとも部分的に基づいて、前記第1の命令セットを前記第1のコンピューティングノードで実行させることとを備える、前記方法。
  7. 前記第1のコンピューティングノードで前記第1の命令セットを実行することによって使用されるリソースに少なくとも部分的に基づいて、前記第1の命令セットを、前記複数のコンピューティングノードの追加のコンピューティングノードで実行させることをさらに含む、請求項6に記載の方法。
  8. 前記第1の命令セットを実行することによって使用されるリソースが閾値の量を超えたとき、前記第1の命令セットのパフォーマンスを停止することをさらに含む、請求項6に記載の方法。
  9. 前記第1の命令セットが、前記アイテムの主キーまたは前記アイテムに対する変更を示す情報の少なくとも1つを備える1つまたは複数のパラメータの関数に対応する、請求項6に記載の方法。
  10. ログデータの前記リポジトリが、前記データベース管理システムのログファイルのサブセットを備える、請求項6に記載の方法。
  11. 前記第1のハッシュ空間と複数の命令セットの関連性を示す情報を格納することであって、前記複数の命令は前記第1の命令セットを含む、前記格納することと、
    前記第1のハッシュ空間に関連付けられた前記複数の命令セットをそれぞれ、前記第1のリクエストを示す前記情報を受信したことに応答して実行させることと、をさらに含む、請求項6に記載の方法。
  12. 前記第1の命令セットを含む複数の命令セットを、前記第1のリクエストを示す前記情報を受信したことに応答して実行させることをさらに含む、請求項6に記載の方法。
  13. システムであって、
    1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のコンピューティングデバイスに少なくとも、
    第1のコンピューティングノードを含む複数のコンピューティングノードを、データベース管理システムによって維持されるアイテムの集合に複数のアイテムを格納するリクエストに応答して実行される第1の命令セットに関連付けさせ、
    前記アイテムの集合にアイテムを格納する、複数のリクエストの第1のリクエストを示す情報を受信させ、
    前記第1のコンピューティングノードのリソース使用率が前記複数のコンピューティングノードの第2のコンピューティングノードよりも低いという判定に少なくとも部分的に基づいて、前記第1の命令セットを前記第1のコンピューティングノードで実行させる命令を格納する、1つまたは複数の非一時的なコンピュータ可読ストレージ媒体とを備える、前記システム。
  14. 前記1つまたは複数のコンピューティングデバイスによって実行されると、前記1つまたは複数のコンピューティングデバイスに少なくとも、
    前記第1のコンピューティングノードで前記第1の命令セットを実行することによって使用されるリソースに少なくとも部分的に基づいて、前記第1の命令セットを、前記複数のコンピューティングノードの追加のコンピューティングノードで実行することを示す情報を送信させる命令をさらに含む、請求項13に記載の非一時的なコンピュータ可読ストレージ媒体。
  15. 前記1つまたは複数のコンピューティングデバイスによって実行されると、前記1つまたは複数のコンピューティングデバイスに少なくとも、
    第1のハッシュ空間と複数の命令セットの関連性を示す情報を格納させ、前記複数の命令は前記第1の命令セットを含み、
    前記第1のハッシュ空間に関連付けられた前記複数の命令セットをそれぞれ、前記第1のリクエストを示す前記情報を受信したことに応答して実行させる命令をさらに備える、請求項13に記載の非一時的なコンピュータ可読ストレージ媒体。
JP2018515775A 2015-09-28 2016-09-26 分散型ストリームベースのデータベーストリガ Active JP6618614B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/868,236 2015-09-28
US14/868,236 US10666574B2 (en) 2015-09-28 2015-09-28 Distributed stream-based database triggers
PCT/US2016/053822 WO2017058734A1 (en) 2015-09-28 2016-09-26 Distributed stream-based database triggers

Publications (2)

Publication Number Publication Date
JP2018530068A true JP2018530068A (ja) 2018-10-11
JP6618614B2 JP6618614B2 (ja) 2019-12-11

Family

ID=57113775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018515775A Active JP6618614B2 (ja) 2015-09-28 2016-09-26 分散型ストリームベースのデータベーストリガ

Country Status (7)

Country Link
US (3) US10666574B2 (ja)
EP (1) EP3356937B1 (ja)
JP (1) JP6618614B2 (ja)
CN (1) CN108351806B (ja)
AU (1) AU2016332576B2 (ja)
CA (1) CA3000161C (ja)
WO (1) WO2017058734A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021166060A (ja) * 2020-06-29 2021-10-14 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド リクエストの処理方法、装置、設備、コンピュータ記憶媒体、及びプログラム
KR20220008718A (ko) * 2020-07-14 2022-01-21 쿠팡 주식회사 극히 높은 서버 가용성을 위해 네트워크 부하를 밸런싱하는 시스템 및 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10038745B2 (en) * 2016-02-05 2018-07-31 Vmware, Inc. Method for monitoring elements of a distributed computing system
JP6873772B2 (ja) * 2017-03-24 2021-05-19 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びアプリケーション管理方法
US20180316547A1 (en) * 2017-04-27 2018-11-01 Microsoft Technology Licensing, Llc Single management interface to route metrics and diagnostic logs for cloud resources to cloud storage, streaming and log analytics services
US10547672B2 (en) 2017-04-27 2020-01-28 Microsoft Technology Licensing, Llc Anti-flapping system for autoscaling resources in cloud networks
US20180316726A1 (en) * 2017-04-28 2018-11-01 Honeywell International Inc. Replication of identity-derived primary keys without range restrictions
US10645138B2 (en) * 2017-05-02 2020-05-05 Salesforce.Com, Inc Event stream processing system using a coordinating spout instance
US11182372B1 (en) * 2017-11-08 2021-11-23 Amazon Technologies, Inc. Tracking database partition change log dependencies
US11169898B2 (en) * 2018-03-26 2021-11-09 Oracle International Corporation System and method for database replication benchmark testing using a pipeline-based microservices model
US11321139B2 (en) * 2018-05-31 2022-05-03 Salesforce.Com, Inc. Streaming traffic pattern for public cloud auto scaling
US11853321B1 (en) * 2018-06-14 2023-12-26 Amazon Technologies, Inc. Data replication without in-place tombstones
US11126505B1 (en) * 2018-08-10 2021-09-21 Amazon Technologies, Inc. Past-state backup generator and interface for database systems
US11106658B2 (en) 2018-11-28 2021-08-31 Snowflake Inc. Task scheduling in database systems
US11086840B2 (en) * 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
CN112948206B (zh) * 2021-02-22 2024-05-31 上海宽带技术及应用工程研究中心 基于云计算的时序日志管理系统及包含该系统的电子设备
US11989204B2 (en) 2021-06-22 2024-05-21 International Business Machines Corporation Datastore aware streams computing
US11977538B2 (en) * 2022-02-24 2024-05-07 Singlestore, Inc. Durable functions in database systems
US20230325400A1 (en) * 2022-04-11 2023-10-12 United Parcel Services Of America, Inc. Asychronous document charts

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008015888A (ja) * 2006-07-07 2008-01-24 Hitachi Ltd 負荷分散制御システム及び負荷分散制御方法
JP2010026744A (ja) * 2008-07-18 2010-02-04 Internatl Business Mach Corp <Ibm> 情報管理サーバ、情報処理システム、通信方法およびプログラム

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192365B1 (en) * 1995-07-20 2001-02-20 Novell, Inc. Transaction log management in a disconnectable computer and network
US5761507A (en) * 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US6594656B1 (en) * 1999-01-22 2003-07-15 Avaya Technology Corp. Active database trigger processing using a trigger gateway
US6374236B1 (en) * 1999-12-04 2002-04-16 Ncr Corporation Parallel optimized triggers in parallel processing database systems
US7895247B2 (en) * 2003-10-29 2011-02-22 Oracle International Corporation Tracking space usage in a database
CA2578666C (en) * 2006-02-13 2016-01-26 Xkoto Inc. Method and system for load balancing a distributed database
US7512631B2 (en) * 2006-03-23 2009-03-31 International Business Machines Corporation Method for identifying database triggers
US7634505B2 (en) * 2006-12-19 2009-12-15 Salesforce.Com, Inc. Methods and procedures to provide complete test copy environment of hosted applications
US20100318827A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Energy use profiling for workload transfer
US8719415B1 (en) * 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
US8898124B2 (en) * 2010-12-16 2014-11-25 International Business Machines Corporation Controlling database trigger execution with trigger return data
US10311105B2 (en) * 2010-12-28 2019-06-04 Microsoft Technology Licensing, Llc Filtering queried data on data stores
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
EP2551773B1 (en) * 2011-07-29 2024-03-06 Tata Consultancy Services Ltd. Data audit module for application software
US8898120B1 (en) * 2011-10-09 2014-11-25 Symantec Corporation Systems and methods for distributed data deduplication
US9634958B2 (en) * 2013-04-02 2017-04-25 Amazon Technologies, Inc. Burst capacity for user-defined pools
US10069903B2 (en) * 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US9953054B2 (en) * 2013-04-22 2018-04-24 Salesforce.Com, Inc. Systems and methods for implementing and maintaining sampled tables in a database system
US11841844B2 (en) * 2013-05-20 2023-12-12 Amazon Technologies, Inc. Index update pipeline
WO2014200440A1 (en) 2013-06-14 2014-12-18 T-Data Systems (S) Pte Ltd System and method for uploading, showcasing and selling news footage
US9792325B2 (en) * 2013-08-25 2017-10-17 Microsoft Technology Licensing, Llc Continuous cloud-scale query optimization and processing
US9858322B2 (en) * 2013-11-11 2018-01-02 Amazon Technologies, Inc. Data stream ingestion and persistence techniques
US9774652B2 (en) * 2013-12-13 2017-09-26 Sap Se Systems to provide database updates
US9727664B2 (en) * 2014-05-06 2017-08-08 International Business Machines Corporation Grouping records in buckets distributed across nodes of a distributed database system to perform comparison of the grouped records
US10339110B2 (en) * 2015-08-31 2019-07-02 Vmware, Inc. Policy-based selection and configuration of target site resources for data replication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008015888A (ja) * 2006-07-07 2008-01-24 Hitachi Ltd 負荷分散制御システム及び負荷分散制御方法
JP2010026744A (ja) * 2008-07-18 2010-02-04 Internatl Business Mach Corp <Ibm> 情報管理サーバ、情報処理システム、通信方法およびプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021166060A (ja) * 2020-06-29 2021-10-14 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド リクエストの処理方法、装置、設備、コンピュータ記憶媒体、及びプログラム
US11689630B2 (en) 2020-06-29 2023-06-27 Beijing Baidu Netcom Science And Technology Co., Ltd. Request processing method and apparatus, electronic device, and computer storage medium
KR20220008718A (ko) * 2020-07-14 2022-01-21 쿠팡 주식회사 극히 높은 서버 가용성을 위해 네트워크 부하를 밸런싱하는 시스템 및 방법
KR102422709B1 (ko) * 2020-07-14 2022-07-20 쿠팡 주식회사 극히 높은 서버 가용성을 위해 네트워크 부하를 밸런싱하는 시스템 및 방법
US11627181B2 (en) 2020-07-14 2023-04-11 Coupang Corp. Systems and methods of balancing network load for ultra high server availability

Also Published As

Publication number Publication date
AU2016332576A1 (en) 2018-05-10
US11588755B2 (en) 2023-02-21
WO2017058734A4 (en) 2017-06-08
US20200287841A1 (en) 2020-09-10
US20220158953A1 (en) 2022-05-19
AU2016332576B2 (en) 2019-10-31
CN108351806B (zh) 2022-06-07
US10666574B2 (en) 2020-05-26
JP6618614B2 (ja) 2019-12-11
CN108351806A (zh) 2018-07-31
CA3000161C (en) 2021-06-22
WO2017058734A1 (en) 2017-04-06
US20170093755A1 (en) 2017-03-30
EP3356937B1 (en) 2019-09-18
EP3356937A1 (en) 2018-08-08
US11258725B2 (en) 2022-02-22
CA3000161A1 (en) 2017-04-06

Similar Documents

Publication Publication Date Title
JP6618614B2 (ja) 分散型ストリームベースのデータベーストリガ
US10691716B2 (en) Dynamic partitioning techniques for data streams
US10157214B1 (en) Process for data migration between document stores
US10635644B2 (en) Partition-based data stream processing framework
US9858322B2 (en) Data stream ingestion and persistence techniques
US9794135B2 (en) Managed service for acquisition, storage and consumption of large-scale data streams
US9276959B2 (en) Client-configurable security options for data streams
US9639589B1 (en) Chained replication techniques for large-scale data streams
US11157457B2 (en) File management in thin provisioning storage environments
He et al. Hog: Distributed hadoop mapreduce on the grid
US11113155B1 (en) Archiving and restoration of distributed database log records
US20210303327A1 (en) Gpu-remoting latency aware virtual machine migration
US11321283B2 (en) Table and index communications channels
US20180004430A1 (en) Chunk Monitoring
US11222036B1 (en) Data warehouse access reporting
US10102228B1 (en) Table and index communications channels
US9996573B1 (en) Distributed system capacity dial-up
US20220382601A1 (en) Configuration map based sharding for containers in a machine learning serving infrastructure
US10511656B1 (en) Log information transmission integrity
US20190121792A1 (en) Ejournal transcoding
US11256669B1 (en) Transaction pipeline materialization schemas
ZHANG Bridging the Gaps between Many-task Computing and Supercomputers

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180411

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180411

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190509

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: 20191015

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191112

R150 Certificate of patent or registration of utility model

Ref document number: 6618614

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