(57)【要約】【課題】  分散データベースシステムにおける問題に対処する。【解決手段】  データベースシステムが、データベースがイベントの識別子を生成するのに利用不可能であること又はイベントがデータベースに書き込まれない可能性があることを判断することができる。結果として、データベースシステムは、イベントを低レイテンシの補足ファイルシステムに書き込むことができる。データベースシステムは、後の時間にデータベースが利用可能であると判断し、補足ファイルシステムからイベントを読み出し、イベントをメモリコンポーネントに記憶し、それから、イベントを補足ファイルシステムから削除することができる。データベースシステムは、それから、データベースにアクセスしてイベントのための識別子を生成し、イベントをデータベースに書き込み、それから、イベントをメモリコンポーネントから削除することができる。【選択図】  図１
2017188117.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムのアプリケーションサーバにより、前記アプリケーションサーバからリモートであるクライアント装置から第１のデータを受信することであって、前記第１のデータは、前記クライアント装置における第１のアクションに関連付けられる、ことと、
前記データベースシステムにより、前記第１のデータに基づいて第１のイベントを生成することであって、前記第１のイベントは、前記データベースシステムの分散データストア上の第１のファイルシステムに書き込まれるべきである、ことと、
前記データベースシステムにより、前記第１のイベントについて識別子が生成されていないと決定することと、
前記第１のイベントについて前記識別子が生成されていないとの前記決定に応答して、前記データベースシステムにより、前記第１のイベントを、前記第１のファイルシステムとは区別可能である前記データベースシステムの第２のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを読み出すことと、
前記データベースシステムにより、前記アプリケーションサーバのメモリコンポーネントに前記第１のイベントを書き込むことと、
前記アプリケーションサーバの前記メモリコンポーネントに対する前記第１のイベントの前記書き込みに応答して、前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを削除することと、
前記データベースシステムにより識別子生成コンポーネントを介して、前記第１のイベントのための第１の識別子を生成することと、
前記データベースシステムにより、前記第１の識別子を前記第１のイベントに割り当てることと、
を含む方法。
【請求項２】
前記データベースシステムにより、前記第１のイベントが前記第１のファイルシステムに書き込まれていないと決定することと、
前記第１のイベントが前記第１のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第１のイベントを前記第２のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを読み出すことと、
前記データベースシステムにより、前記第１のイベントを前記第１のファイルシステムに書き込むことと、
をさらに含む請求項１に記載の方法。
【請求項３】
前記データベースシステムにより、前記第１のイベントが前記第１のファイルシステムに書き込まれていないと決定することと、
前記第１のイベントが前記第１のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第１のイベントを前記第２のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを読み出すことと、
前記データベースシステムにより、前記第１のイベントを、前記分散データストア上の前記第１のファイルシステムに統合された非リレーショナルデータベースに書き込むことと、
をさらに含む請求項１に記載の方法。
【請求項４】
前記データベースシステムにより、前記第１の識別子を有する前記第１のイベントが前記第１のファイルシステムに書き込まれていないと決定することと、
前記第１の識別子を有する前記第１のイベントが前記第１のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第１の識別子を有する前記第１のイベントを前記第２のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムから、前記第１の識別子を有する前記第１のイベントを読み出すことと、
前記データベースシステムにより、前記第１の識別子を有する前記第１のイベントを前記第１のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムに記憶された一組の関連付けられたイベントの各々が前記第１のファイルシステムに書き込まれたと決定することであって、前記一組は前記第１のイベントを含む、ことと、
前記一組の関連付けられたイベントの各々が前記第１のファイルシステムに書き込まれたとの前記決定に応答して、前記データベースシステムにより、前記第２のファイルシステムから前記一組の関連付けられたイベントを削除することと、
をさらに含む請求項１に記載の方法。
【請求項５】
前記第１のイベントの前記第２のファイルシステムへの前記書き込みは、前記データベースシステムにより、前記第１のイベントを、割り当てられた識別子を有さないイベント以外のイベントを記憶しないように構成された前記第２のファイルシステムの第１のコンポーネントに書き込むことを含む、請求項１に記載の方法。
【請求項６】
前記第１のイベントの前記第２のファイルシステムへの前記書き込みは、前記データベースシステムにより、前記第１のイベントを、割り当てられた識別子を有さないイベント以外のイベントを記憶しないように構成された前記第２のファイルシステムの第１のコンポーネントに書き込むことを含み、当該方法は、
前記データベースシステムにより、前記第１の識別子を有する前記第１のイベントが前記第１のファイルシステムに書き込まれていないと決定することと、
前記第１の識別子を有する前記第１のイベントが前記第１のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第１の識別子を有する前記第１のイベントを、割り当てられた識別子を有するイベント以外のイベントを記憶しないように構成された前記第２のファイルシステムの第２のコンポーネントに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムから、前記第１の識別子を有する前記第１のイベントを読み出すことと、
前記データベースシステムにより、前記第１の識別子を有する前記第１のイベントを前記第１のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムに記憶された一組の関連付けられたイベントの各々が前記第１のファイルシステムに書き込まれたと決定することであって、前記一組は前記第１のイベントを含む、ことと、
前記一組の関連付けられたイベントの各々が前記第１のファイルシステムに書き込まれたとの前記決定に応答して、前記データベースシステムにより、前記第２のファイルシステムから前記一組の関連付けられたイベントを削除することと、
をさらに含む請求項１に記載の方法。
【請求項７】
前記データベースシステムにより、係属値を生成すること
をさらに含み、前記第１の識別子が前記第１のイベントについて生成されていないとの前記決定は、
前記データベースシステムにより、前記第１のファイルシステムが前記係属値に等しい時間期間について利用不可能であったと決定すること
を含む、請求項１に記載の方法。
【請求項８】
前記データベースシステムにより、係属値を、
イベントの数、
第１の閾値時間期間、及び
第２の閾値時間期間
に基づいて生成すること、をさらに含み、
前記第１の識別子が前記第１のイベントについて生成されていないとの前記決定は、前記データベースシステムにより、前記第１のファイルシステムが前記係属値に等しい時間期間について利用不可能であったと決定することを含む、
請求項１に記載の方法。
【請求項９】
前記識別子が前記第１のイベントについて生成されていないとの前記決定は、前記データベースシステムにより、前記識別子を生成することにおける試行の数が閾値を超えたと決定することを含む、請求項１に記載の方法。
【請求項１０】
前記データベースシステムにより、係属値を生成することであって、前記第１の識別子が前記第１のイベントについて生成されていないとの前記決定は、前記データベースシステムにより、前記第１のファイルシステムが前記係属値に等しい時間期間について利用不可能であったと決定することを含む、ことと、
前記アプリケーションサーバにより、前記クライアント装置から第２のデータを受信することであって、前記第２のデータは、前記クライアント装置における第２のアクションに関連付けられる、ことと、
前記データベースシステムにより、前記第２のデータに基づいて第２のイベントを生成することであって、前記第２のイベントは、前記データベースシステムの前記分散データストア上の前記第１のファイルシステムに書き込まれるべきである、ことと、
前記データベースシステムにより前記識別子生成コンポーネントを介して、前記係属値に等しく前記第２のイベントの生成の後の時間期間内に、前記第２のイベントのための第２の識別子を生成することと、
前記データベースシステムにより、前記第２の識別子を前記第２のイベントに割り当てることと、
をさらに含む請求項１に記載の方法。
【請求項１１】
前記第１の識別子は、前記第１のファイルシステムに記憶されたイベントに割り当てられたすべての識別子の間で一意である、請求項１に記載の方法。
【請求項１２】
前記第２のファイルシステムは、前記第１のファイルシステムに対する後の書き込みのためにイベントを一時的に記憶するように構成される、請求項１に記載の方法。
【請求項１３】
前記第１のイベントは、第１のテナントに関連付けられ、
前記第１のテナントに関連付けられたデータベースが、前記分散データストア上の前記第１のファイルシステムに統合される、
請求項１に記載の方法。
【請求項１４】
前記第１のイベントは、第１のテナントに関連付けられ、
複数のテナントに関連付けられた複数のイベントが、前記複数のテナントに関連付けられた複数のデータベースに記憶され、
前記複数のテナントは前記第１のテナントを含み、
前記複数のデータベースの各々は、前記分散データストア上の前記第１のファイルシステムに統合される、
請求項１に記載の方法。
【請求項１５】
前記データベースシステムにより、特定のイベントを前記第１のファイルシステムに書き込むことのレイテンシは、前記データベースシステムにより前記特定のイベントを前記第２のファイルシステムに書き込むことのレイテンシより大きい、請求項１に記載の方法。
【請求項１６】
前記第２のファイルシステムは、前記分散データストアから区別可能である別個のデータストア上にある、請求項１に記載の方法。
【請求項１７】
前記第２のファイルシステムは、前記分散データストアから区別可能であり前記アプリケーションサーバから区別可能である別個のデータストア上にある、請求項１に記載の方法。
【請求項１８】
前記第２のファイルシステムはデータをブロブストア値として記憶する、請求項１に記載の方法。
【請求項１９】
命令を記憶した非一時的コンピュータ読取可能媒体であって、前記命令はプロセッサにより実行されるときに前記プロセッサに、
データベースシステムのアプリケーションサーバにより、前記アプリケーションサーバからリモートであるクライアント装置から第１のデータを受信することであって、前記第１のデータは、前記クライアント装置における第１のアクションに関連付けられる、ことと、
前記データベースシステムにより、前記第１のデータに基づいて第１のイベントを生成することであって、前記第１のイベントは、前記データベースシステムの分散データストア上の第１のファイルシステムに書き込まれるべきである、ことと、
前記データベースシステムにより、前記第１のイベントについて識別子が生成されていないと決定することと、
前記第１のイベントについて前記識別子が生成されていないとの前記決定に応答して、前記データベースシステムにより、前記第１のイベントを、前記第１のファイルシステムとは区別可能である前記データベースシステムの第２のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを読み出すことと、
前記データベースシステムにより、前記アプリケーションサーバのメモリコンポーネントに前記第１のイベントを書き込むことと、
前記アプリケーションサーバの前記メモリコンポーネントに対する前記第１のイベントの前記書き込みに応答して、前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを削除することと、
前記データベースシステムにより識別子生成コンポーネントを介して、前記第１のイベントのための第１の識別子を生成することと、
前記データベースシステムにより、前記第１の識別子を前記第１のイベントに割り当てることと、
を含む動作を実行させる、非一時的コンピュータ読取可能媒体。
【請求項２０】
データベースシステムであって、
第１のファイルシステムと通信するアプリケーションサーバであって、前記第１のファイルシステムは分散データストア上にある、アプリケーションサーバと、
前記第１のファイルシステムから区別可能である第２のファイルシステムと、
前記アプリケーションサーバ、前記第１のファイルシステム、及び前記第２のファイルシステムと通信するプロセッサと、
前記プロセッサと通信し命令を記憶した非一時的コンピュータ読取可能媒体であって、前記命令は前記プロセッサにより実行されるときに前記プロセッサに、
前記アプリケーションサーバにより、前記アプリケーションサーバからリモートであるクライアント装置から第１のデータを受信することであって、前記第１のデータは、前記クライアント装置における第１のアクションに関連付けられる、ことと、
前記データベースシステムにより、前記第１のデータに基づいて第１のイベントを生成することであって、前記第１のイベントは、前記データベースシステムの分散データストア上の第１のファイルシステムに書き込まれるべきである、ことと、
前記データベースシステムにより、前記第１のイベントについて識別子が生成されていないと決定することと、
前記第１のイベントについて前記識別子が生成されていないとの前記決定に応答して、前記データベースシステムにより、前記第１のイベントを、前記データベースシステムの前記第２のファイルシステムに書き込むことと、
前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを読み出すことと、
前記データベースシステムにより、前記アプリケーションサーバのメモリコンポーネントに前記第１のイベントを書き込むことと、
前記アプリケーションサーバの前記メモリコンポーネントに対する前記第１のイベントの前記書き込みに応答して、前記データベースシステムにより、前記第２のファイルシステムから前記第１のイベントを削除することと、
前記データベースシステムにより識別子生成コンポーネントを介して、前記第１のイベントのための第１の識別子を生成することと、
前記データベースシステムにより、前記第１の識別子を前記第１のイベントに割り当てることと、
を含む動作を実行させる、非一時的コンピュータ読取可能媒体と、
を含むデータベースシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
特定のデータベース、例えば、分散ファイルシステムの上位で稼働する非リレーショナルデータベースなどは、データ分割、マージ、若しくはコンパクションなどの処理のため、又はネットワークアクティビティ若しくはデータベースコンポーネントを乱す緊急イベントのために時に利用不可能にされることがある。こうしたデータベースは、一意識別子に依存して、記憶されたイベントを識別することがある。上記データベースが利用不可能であるとき、データベースに書き込まれるべき受信したイベントのための識別子を生成する能力がなくなるおそれがある。識別子を待っているイベントは、メモリに記憶されることがある。しかしながら、メモリ容量を超える大量の書き込みアクティビティが存在する可能性がある。結果として、イベントのための識別子が生成可能になる前に、イベントがメモリから失われるおそれがある。
【図面の簡単な説明】
【０００２】
添付図面は、本開示のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、本開示の実装を例示し、詳細な説明と共に本開示の実装の原理を説明する働きをする。本開示とそれが実施され得る様々な方法との基本理解のために必要であり得るよりもさらに詳細に構造詳細を示す試みは、行われない。
【図１】本開示の一実装に従う、コンポーネント環境の一例示的なシステム図を示す。
【図２】本開示の一実装に従う、識別子生成の一例示的なシーケンス図を示す。
【図３】本開示の一実装に従う、識別子生成の一例示的な手順を示す。
【図４】本開示の一実装に従う、イベント又は一組の関連イベントを削除する一例示的な手順を示す。
【図５】本開示の一実装に従う、イベントをデータベースに書き込む一例示的なシーケンス図を示す。
【図６】本開示の一実装に従う、イベントをデータベースに書き込む一例示的な手順を示す。
【図７】本開示の一実装に従う、一例示的なコンピューティング装置を示す。
【図８】本開示の一実装に従う、一例示的なネットワーク配置を示す。
【発明を実施するための形態】
【０００３】
分散データベースシステムにおける問題、例えば、識別子が生成され得る前のイベント消失などに対処するために、低レイテンシの補足的なデータストアに一時的に記憶されるイベントについて識別子を確実に生成する手法を提供することができる。例えば、本開示の一実装において、データベースシステムが、アプリケーションをホストするサーバを含むことでき、上記アプリケーションは、該アプリケーションとの間で相互作用するクライアント装置からアプリケーションデータを受信することができる。例えば、緊急応答組織が、大規模な都市地域で在住者及び企業にアプリケーションを提供するアプリケーションサーバを維持することがある。在住者及び企業は、モバイル装置及び他のコンピュータシステムを介してアプリケーションと相互作用して、データを送信して緊急状況を報告することができる。アプリケーションサーバは、受信したデータに基づいて、データベースに書き込まれるべきイベントを生成することができる。例えば、大規模な地震がこの地域を襲う可能性がある。受信したデータに基づいて、オフィス複合施設の火災を表すイベントを生成することができる。受信されるデータには、アプリケーションを稼働させるモバイル装置を介して緊急応答者を呼び出す３人の異なる従業員からのデータと、アプリケーションを稼働させるオフィスコンピュータシステムにセンサ測定値を示すデータを提供する煙探知器及びスプリンクラーシステムセンサからのデータとを含むことができる。イベントは、データが受信された時間、データを提供した装置の場所、又は他の関連する緊急情報をさらに含んでもよい。こうしたイベントをデータベースに記憶することは有益である可能性があり、なぜならば、データベースからのデータに対して分析手順が実行されて、火災応答リソースを最適化することができるからである。緊急イベント、例えば、人口密度の高い市街における地震などの間、火災応答リソースは、緊急応答者の高い需要に起因して特に乏しい可能性がある。
【０００４】
データベースシステムのコンポーネント、例えば、識別子生成コンポーネントなどが、アプリケーションサーバ上で実行され、イベント記憶データベースにアクセスして火災イベントを一意に識別する識別子を生成するよう試みることができる。この識別子はそれから、イベントに割り当てることができ、イベントは、データベースが実装された分散データストアに書き込むことができる。しかしながら、地震のため、データストアに対するネットワーク接続が大幅に低減する可能性がある。さらに、地域の高人口に起因して、アプリケーションサーバには大量の緊急データが殺到し、ゆえに、データベースに書き込まれるべき大量のイベントを生成する可能性がある。ゆえに、データベースは、特定の時間期間、例えば、少なくとも１６ミリ秒の間、無応答になる可能性がある。結果として、１６ミリ秒間無応答であった後、データベースは利用不可能とみなされる可能性がある。
【０００５】
補足データストアが、アプリケーションサーバと通信するデータストア上に低レイテンシの、高スループットの、補足的なファイルシステムを維持することができる。データベースが利用不可能であると決定することに応答して、火災イベントを含むイベントのバッチをイベントファイルとして補足ファイルシステムに書き込むことができる。間接識別子生成コンポーネントが、識別子を受信し及び／又はデータベースに書き込まれる次のイベント又はイベントファイルを周期的に決定することができる。例えば、間接識別子生成コンポーネントは、成功裏に識別子を受信しておらず又はデータベースに書き込まれていないイベントの順序付けられたログを維持するデータベースに記憶されたメタデータテーブルに周期的にアクセスすることができる。間接識別子生成コンポーネントは、属性メタデータテーブルから属性を取り出すことができ、属性メタデータテーブルは、識別子又は一組の識別子を受信すべき補足ファイルシステム内の次のイベント又はイベントファイルを決定するのに使用することができる。
【０００６】
間接識別子生成コンポーネントは、取り出された属性に基づいて、補足ファイルシステムから識別子を受信するように決定された次のイベントファイルを読み出し、このイベントファイルをアプリケーションサーバのメモリコンポーネントに書き込むことができる。次のイベントファイルには、火災イベントが含まれ得る。イベントファイルからのすべてのイベントがメモリコンポーネントに書き込まれると、イベントファイルは補足ファイルシステムから削除することができる。
【０００７】
イベントファイルを削除することは有益である可能性があり、なぜならば、このことは、間接識別子生成コンポーネントがイベントファイルの処理を完了した後で補足ファイルシステムからファイルを削除する前に、該コンポーネントが中断され又は停止される場合などにおいて、同じイベントのための複数の識別子を生成する可能性を防止することができるからである。間接識別子生成コンポーネントは、それから、データベースにアクセスし、一意識別子を生成し、火災イベントを含むイベントファイル内の各イベントに上記識別子を割り当てることができる。
【０００８】
いくつかの状況において、識別子を割り当てた後、データベースは、再度利用不可能になる可能性がある。例えば、いくつかの実装において、データベースシステムは、データベースが特定の時間期間について応答してしないと判断し、結果として、上述のようにデータベースが利用不可能であると判断することができる。結果として、火災イベントをその割り当てられた識別子と共に含むイベントのバッチが、新しいファイルとして補足ファイルシステムに書き込まれ得る。データベースシステムの間接イベント書き込みコンポーネントが、データベースにアクセスしてイベントを書き込むよう周期的に試みることができる。間接イベント書き込みコンポーネントは、補足ファイルシステムから火災イベントを読み出し、いったんデータベースが利用可能になると、イベントをデータベースに書き込む。新しいファイルの中のすべてのイベントがデータベースに書き込まれると、間接イベント書き込みコンポーネントは、アプリケーションサーバのメモリコンポーネント及び／又は補足ファイルシステムから新しいファイルを削除することができる。
【０００９】
コンポーネント環境
本開示の実装は、様々なコンポーネント環境において実行することができる。例えば、図１は、本開示の一実装に従うコンポーネント環境の一例示的なシステム図を示す。データベースシステムがアプリケーションサーバ１００、１０１を含み、アプリケーションサーバ１００、１０１は、データストア１１４上の第１のファイルシステム１１０で実装されたデータベース１１３、及び、データストア１２３上に実装された第２のファイルシステム１２０と通信することができる。いくつかの実装において、データベースシステムは、アプリケーションサーバ１００並びに該サーバ１００上で実行されるコンポーネント及び手順のみを含むことができ、他の実装において、データベースシステムは、追加の又は他のコンポーネント及び手順、例えば、データストア１１４及びデータストア１２３に関するコンポーネント及びプロシージャなどを含むことができる。アプリケーションサーバ１００は、クライアント装置１３０、１３１と通信することができる。いくつかの実施形態において、データストア１２３は、データストア１１４及びアプリケーションサーバ１００とは別個であり、区別可能であり得る。例えば、データストア１２３がコロラド州ボールダーに位置してもよく、データストア１１４がカリフォルニア州ロサンゼルスに位置してもよく、アプリケーションサーバ１００がカリフォルニア州サクラメントに位置してもよい。
【００１０】
アプリケーションサーバ１００、１０１、及びクライアント装置１３０、１３１は、一連の１つ以上のネットワークを通して接続することができ、上記ネットワークは、例えば、下記で図８に関して説明されるネットワーク８００、又は、こうしたネットワークの組み合わせなどである。他の実施形態において、アプリケーションサーバ１００、１０１、及びクライアント装置１３０、１３１は、ネットワーク内の他の装置の各々に対する直接接続を有してもよい。図示されるとおり、複数のアプリケーションサーバ１００、１０１が、複数のクライアント装置１３０、１３１に接続される。いくつかの実施形態において、複数のアプリケーションサーバ、例えば、アプリケーションサーバ１０１、１０１などが、例えばクラウドコンピューティングサービスにおいてなどで、１つ以上のネットワークを通じて一緒に接続され、リソース及びタスク割り振りを共有してもよい。他の実施形態において、任意数のサーバ又はクライアント装置が存在してもよく、図１のコンポーネント環境が追加の及び／又は異なるコンポーネントを含んでもよい。本明細書に開示される論理的関係及び手順の実装は、本開示の目的に適した任意の代替のコンポーネント構成において実現することができる。
【００１１】
いくつかの実施形態において、アプリケーションサーバ１００、１０１は、クライアント装置１３０、１３１などの１つ以上のクライアント装置上の複数の区別可能なユーザのセットに対してアプリケーションへのアクセスを提供するように設計された複数のテナントアプリケーションサーバであり得る。テナントは、組織、例えば緊急応答者又はプライベート企業など、又は、組織の一部、例えば消防士又は販売部門などであり得る。より一般に、テナントは、ソフトウェアインスタンスに対する固有の特権でのアクセスを共有する任意のユーザグループであってもよく、上記ソフトウェアインスタンスは、例えば、アプリケーションサーバ１００又はデータベースにより提供されるアプリケーションのソフトウェアインスタンスなどである。他の実施形態において、アプリケーションサーバ１００、１０１は、クライアント装置１３０、１３１などの１つ以上のクライアント装置上の単一のユーザセットにサービスするように設計されたシングルテナントアプリケーションサーバであり得る。アプリケーションサーバ１００、１０１は、クライアント装置１３０、１３１に対して連続的に又は必要に応じて利用可能にされるリソースを提供することができ、上記リソースは、例えば、データ処理、データ記憶、データ取り出し、アプリケーション固有機能性などである。
【００１２】
アプリケーションサーバ１００、１０１は、本開示の目的に適した任意のコンピューティング装置を含むことができ、上記コンピューティング装置は、例えば、下記で図７に関して説明されるコンピューティング装置７００などである。アプリケーションサーバ１００、１０１は、１つ以上のテナントにより共有できるハードウェア及びソフトウェアの様々な要素を含むことができる。例えば、アプリケーションサーバ１００は、データベースシステムのテナント又は非テナントのアプリケーション開発者によるアプリケーションの作成、管理、及び実行のためのハードウェア及び／又はソフトウェアインフラストラクチャを提供するアプリケーションプラットフォームを含むことができる。
【００１３】
クライアント装置１３０、１３１は、アプリケーションサーバ１００、１０１により提供されるアプリケーションと相互作用するのに適した任意のコンピューティング装置を含むことができ、上記コンピューティング装置は、例えば、下記で図７に関して説明されるコンピューティング装置７００などである。クライアント装置１３０、１３１は、アプリケーションサーバ１００、１０１と通信してリソースにアクセスすることができ、上記リソースは、例えば、アプリケーションサーバ１００上でホストされクライアント装置１３０、１３１に提供されるアプリケーションなどである。例えば、テナントが、ハイパーテキストトランスファープロトコルに従って通信しクライアント装置１３０上で実行されるウェブブラウザ又は他のアプリケーションをとおして、アプリケーションサーバ１００により提供されるアプリケーションにアクセスすることができる。
【００１４】
アプリケーションサーバ１００、１０１は、様々なコンポーネントを含むことができる。例えば、本開示の一実施形態に従い、アプリケーションサーバ１００は、イベント生成コンポーネント１０２と、メモリコンポーネント１０４及びイベント転送コンポーネント１０５を含み得るバッファコンポーネント１０３と、識別子生成コンポーネント１０７を含み得るイベント書き込みコンポーネント１０６と、間接識別子生成コンポーネント１０８と、間接イベント書き込みコンポーネント１０９とを含むことができる。しかしながら、これらコンポーネントのうちいくつか又はすべてが、部分的に又は全体として、データストア１１４又はデータストア１２３などのデータベースシステムの他のコンポーネントに含まれ、他のコンポーネント上で実行されてもよい。
【００１５】
イベント生成コンポーネント１０２は、アプリケーションサーバ１００上で実行される特定のアプリケーションに固有の手順であってもよく、あるいは、イベント生成コンポーネント１０２は、アプリケーションサーバ１００上で実行される複数のアプリケーションにわたり共有されるサービスであってもよい。一般に、イベント生成コンポーネント１０２は、クライアント装置１３０、１３１からデータを受信し、アプリケーションサーバ１００により提供されているアプリケーションによって指定される条件、ポリシー、又は他のデータ応答手順に従ってイベントを生成することができる。イベントは、それから、後のアクセス及び分析のために、データベース１１３などのデータベースに最終的に書き込むことができる。
【００１６】
イベントは、発生した何かを表す１つ以上の値又は要素のシーケンス、例えばタプルなどであり得る。イベントは、アプリケーションサーバ１００などのアプリケーションサーバ上で実行される複数のアプリケーションにわたり標準化されてもよく、あるいは、具体的なアプリケーションについてカスタマイズされてもよい。例えば、多数の異なるアプリケーションが、クライアント装置上のアプリケーションへのユーザのログインを表すイベントを有する可能性がある。しかしながら、販売分析アプリケーションは、火災の検出を表すイベントを有さない可能性がある。イベントは、不変とすることができ、イベントが生成されるときにタイムスタンプを付けられ、あるいはその他の方法でシーケンス指標を割り当てられてもよい。イベントは、クライアント装置１３０などのクライアント装置におけるアクションを特徴付けるデータを参照することができ、上記アクションは、アプリケーションサーバ１００などのアプリケーションサーバにより提供されているアプリケーションとの相互作用を引き起こす。イベントは、リアルタイム付近での、又は後の時間における分析のために監視し、ログをとり、記憶及び／又は取り出しについて記録することができる。
【００１７】
上記で説明されたような一実装において、アプリケーションサーバ１００は、緊急応答者に関するアプリケーションを、オフィス複合施設に関連付けられたクライアント装置に提供することができる。アプリケーションサーバ１００は、クライアント装置からのデータを受信することができ、上記データは、例えば、火災を示すオフィス複合施設の３人の従業員のスマートフォンからのデータ、４つの煙アラームが煙を探知していることと１５個の火災鎮圧装置が火災鎮圧化学薬品を放出していることとを示すオフィス複合施設のビルセーフティシステムからのデータ、及び、データ収集の場所及び時間を示すデータなどである。上記の受信されるアプリケーションデータに基づいて、アプリケーションサーバ１００のイベント生成コンポーネント１０２は、オフィス複合施設において火災が検知されたことを表すイベントを生成することができる。
【００１８】
別の例において、ユーザアクションに関連するイベントがログをとられ、後に分析されて、ユーザ挙動を特徴付けることができる。例として、ユーザアクション、例えば、アプリケーションを使用すること、ウィンドウが開かれること、システムコマンドが実行されること、チェックボックスがクリックされること、テキストが入力され及び／又は編集されること、ネットワークの場所が訪問されることなどが、後の分析のために捕捉されてもよい。
【００１９】
アプリケーションサーバ１００上で実行されるアプリケーションがイベントを生成するとき、このアプリケーションはイベントをメモリに記憶することができる。いくつかの実施形態において、イベントは、バッファコンポーネント１０３により受信することができる。バッファコンポーネント１０３は、様々なコンポーネント、例えば、メモリコンポーネント１０４及びイベント転送コンポーネント１０５などを含むことができる。図１に示されるとおり、バッファコンポーネント１０３は、アプリケーションサーバ１００上に実装することができる。しかしながら、バッファコンポーネント１０３のいくつか又はすべてのコンポーネントが、データストア１１４又はデータストア１２３などのデータベースシステムの他のコンポーネント上に実装されてもよい。
【００２０】
いくつかの実装において、バッファコンポーネント１０３は、イベントなどのオブジェクトを記憶し、取り出し、フォワードするバッファサービスを含むことができる。バッファサービスは、データストア１１４にイベントを書き込むための、かなり低レイテンシのアプリケーションプログラムインターフェース（ＡＰＩ）を提供するように設計することができる。例えば、バッファサービスは、０．０８マイクロ秒内にイベントをデータベース１１３に書き込むことができる。バッファサービスは、イベントの数が構成されたイベント数制限に到達するまで、及び／又は、構成された時間、例えば１０秒間について、イベントをメモリ内に保つことができる。
【００２１】
いくつかの実装において、バッファサービスは、イベント転送コンポーネント１０５を含むことができ、イベント転送コンポーネント１０５は、アプリケーションサーバ１００上で実行されるアプリケーションにより生成されるイベントを受信する捕捉サービスを含むことができる。バッファコンポーネント１０３はメモリコンポーネント１０４を含むことができ、メモリコンポーネント１０４は、捕捉されたイベントをインメモリ境界バッファ（in-memory  bounded  buffer）の中に記憶できるバッファサービスを含むことができる。イベント転送コンポーネント１０５は、インメモリ境界バッファからのイベントの転送を管理できるバッファフラッシュ調節器をさらに含むことができる。メモリコンポーネント１０４は、本開示の目的に適したハードウェア及びソフトウェアの任意の組み合わせを含むことができ、上記メモリコンポーネントは、例えば、下記で図７に関して説明されるメモリ７７０などである。
【００２２】
メモリコンポーネント１０４のインメモリ境界バッファは、同時書き込み可能ＡＰＩをサポートすることができ、同時書き込み可能ＡＰＩは、アプリケーションサーバ１００のメモリコンポーネント１０４にイベントを記憶する。インメモリ境界バッファは、複数のシングルスレッド化されたセグメントを含むことができ、イベント転送コンポーネント１０５の捕捉サービスは、並列に各セグメントにイベントを書き込み、あるいは各セグメントからイベントを読み出すことができる。インメモリ境界バッファに記憶されたイベントの数が所定の制限に到達するとき、インメモリ境界バッファは、イベント転送コンポーネント１０５のバッファフラッシュ調節器に通知を提供することができる。
【００２３】
いくつかの実装において、バッファフラッシュ調節器が通知を受信するとき、この調節器は、アプリケーションサーバ１００に、インメモリ境界バッファから一組の関連イベント、例えばイベントファイルなどを読み出させ、データベース１１３に書き込まれるべきイベントファイルをデータストア１１４のイベント書き込みコンポーネント１０６に対して提供させることができる。一組のアイテム、例えばイベント又はファイルなどは、単一のアイテム又は複数のアイテムを含んでもよく、あるいはアイテムを含まなくてもよい。イベント書き込みコンポーネント１０６は実行器サービス（executor  service）を含むことができ、上記実行器サービスは、動的にサイズ設定される実行スレッドのスレッドプールを採用して、境界バッファのセグメントを並列に読み出して、イベントがデータストアに直接書き込まれることを可能にする。イベントは、高いスループットを可能にする並列なやり方で消費することができる。
【００２４】
イベント書き込みコンポーネント１０６の実行器サービスは、ファイルを読み出し、ファイル内のイベントをデータベース１１３に直接書き込むことができ、すなわち、仲介メモリ又は他の記憶装置内にイベントを記憶することなくイベントをデータベースに書き込むことができる。いくつかの実装において、実行器サービスは、データベース１１３に書き込まれるべきインメモリ境界バッファからのファイルを要求することができる。図１は、アプリケーションサーバ１００上に実装されるイベント書き込みコンポーネント１０６を示しているが、本開示によって他の実装が企図され、例えば、イベント書き込みコンポーネント１０６及び識別子コンポーネント１０７がデータストア１１４上で実行される場合などである。
【００２５】
いくつかの実装において、イベントファイル内のイベントがデータベース１１３に書き込まれ得る前に、識別子が生成され、イベントに割り当てられることができる。例えば、イベントを書き込むことに追加で、イベント書き込みコンポーネント１０６の実行器サービスが識別子生成コンポーネント１０７をさらに含んでもよい。識別子生成コンポーネントは、アプリケーションサーバ１００又はデータベース１１３の他のコンポーネントにアクセスして識別子を生成しイベントに割り当てる実行スレッドを含むことができる。上記実行スレッドは、イベント書き込みコンポーネント１０６の動的スレッドプールに含まれてもよい。
【００２６】
識別子は、データベース１１３からのイベントの場所特定、ソート、及び取り出しを可能にすることができ、なぜならば、識別子は、データベース１１３内のイベントに割り当てられるすべての識別子の間で一意であり得るからである。キーがイベントのための識別子であってもよく、任意の適切な形式、例えば、英数字シーケンスなどで生成されてもよい。キーの部分が、イベントに関する情報を提供してもよい。例えば、キーの一部分がテナント識別子であってもよく、テナント識別子は、イベントが属するテナントを一意に識別することができる。キーの他の部分が、例えば、データベース１１３のテーブル番号、行、列、又はインデックス値を識別する値であってもよい。
【００２７】
いくつかの実装において、識別子がシーケンス指標をさらに含んでもよく、シーケンス指標は、アプリケーションサーバ１００上に実装された厳密に増加又は減少するカウンタから受信される、ある数の又は一組の順序付けられたシンボルであり得る。カウンタがシーケンス指標を生成するたび、カウンタの値がインクリメントすることができ、したがって、同一のシーケンス指標は生成されず、各シーケンス指標は、該指標が生成される順序に対応する。シーケンス指標は、該シーケンス指標を含む識別子が生成され及び／又はイベントに割り当てられるときの時間又は近似の時間であってもよい。例えば、シーケンス指標は、アプリケーションサーバ１００上に実装されたクロックから受信されるタイムスタンプであり得る。カウンタがインクリメントするレートはクロックに対応してもよく、あるいは、カウンタの値はクロックの値に周期的に同期されてもよい。いくつかの実装において、データベースシステムは、識別子を生成しイベントに割り当てるとき、アプリケーションサーバ１００又はデータストア１１４のクロック又はカウンタにアクセスすることができる。
【００２８】
いくつかの実装において、識別子の生成は、データベース１１３に対するアクセスを必要とする。例えば、生成されることになる識別子は、テナントのデータベース１１３に関連付けられたテーブルの特定の行、列、インデックス、又は他の値を指定することができる。ゆえに、データベース１１３の適用可能なテーブルが分析されて、いずれの特定の行、列、インデックス、他の値、又はこうした値の範囲がイベントを受信するのにテーブル内で利用可能であるかを決定する必要があり得る。結果として、データベースシステムがイベントのための識別子を生成するとき、識別子生成コンポーネント１０７はデータベース１１３に最初アクセスして、識別子のための必要とされる値を決定することができる。
【００２９】
データベース１１３が利用可能でない場合、例えば、周期的メンテナンスの間、又は緊急イベントに起因するネットワーク中断があるときなどに、識別子を生成することが法外に遅くなり、あるいは不可能になることがある。データベース１１３は、最大で１時間又はより長い間、利用不可能である可能性があり、しかし数分の利用不可でさえも、大量の書き込みアクティビティを有するデータベースシステムにおいては大幅なメモリオーバーフローリスクを作り出す可能性がある。すべての識別子生成器機能性がデータストア１１４上に存在するところの実装においては、クロック又はカウンタ値などのシーケンス指標を取得することができない可能性があり、なぜならば、こうしたデータストアリソースがアクセスできないことがあるからである。
【００３０】
識別子を生成することができないため又はデータベース１１３が利用可能でないためにデータベース１１３にイベントを書き込むことができない状況において、アプリケーションサーバ１００のメモリコンポーネント１０４はその記憶容量に到達する可能性がある。例えば、上記で説明された緊急地震イベントなどの状況において、アプリケーションサーバ１００上で実行される緊急応答アプリケーションによって生成される過剰な数のイベントが存在する可能性がある。イベント生成のレベルは、データベースシステムの通常の動作レベルを大きく超える可能性があり、したがって、追加の記憶容量が必要とされる。
【００３１】
上記の状況において、データベースシステムは、識別子がイベントに対して生成されていないと判断することができ、結果として、イベントを代わりに補足データストアに書き込むことができる。例えば、識別子生成コンポーネント１０７が、予め構成された時間期間について、識別子を生成するのに失敗することがある。例えば、上記で参照された火災イベントが、予め構成された時間期間の間に生成された識別子を有するのに失敗することがあり、なぜならば、データベース１１３が、地震により引き起こされるネットワーク中断に起因して利用不可能だからである。結果として、識別子生成コンポーネント１０７は、識別子を生成できないことを表す指標をイベント転送コンポーネント１０５に送信することができる。上記指標を受信することに応答して、イベント転送コンポーネント１０５は、データストア１２３内の第２のファイルシステム１２０の第１の記憶コンポーネント１２１に識別子なしでイベントを書き込むことができる。
【００３２】
一例示的な実装において、イベント転送コンポーネント１０５は、識別子生成コンポーネント１０７のスレッドの各々に対応する一組の実行スレッドを採用することができる。識別子生成コンポーネント１０７のスレッドは、識別子がイベントに対して生成されなかったことを示す指標を、イベント転送コンポーネント１０５の対応スレッドに送信することができる。イベントは、メモリコンポーネント１０４の境界バッファの特定セグメントから読み出されていてもよい。イベント転送コンポーネント１０５のスレッドは、セグメントから特定のイベントを読み出すことができる。上記特定のイベントを含むイベントのバッチが、イベント転送コンポーネント１０５によって読み出され、第２のファイルシステム１２０の第１の記憶コンポーネント１２１にイベントファイルとして書き込まれることができる。
【００３３】
補足ファイルシステム、例えば、データストア１２０上に実装された第２のファイルシステム１２０などが、アプリケーションサーバ１００のメモリオーバーフローを緩和するように機能することができる。補足ファイルシステムは、データストア１１３などの大規模なトランザクションデータストアによって裏打ちされなくてもよい。むしろ、ファイルシステム１２０は、構造化されていないデータをファイルとして記憶することができる別個のファイル記憶システムとして動作することができ、上記ファイルは、例えば、順序付け又は編成の構造がほとんど必要とされないか又は全く必要とされない任意の、及び可能性として無関係のデータを含むファイルなどである。例えば、第２のファイルシステム１２０は、バイナリラージオブジェクト（binary  large  object）（ＢＬＯＢ）値又はブロブストア（blobstore）値を記憶するブロブストアであり得る。結果として、データストア１１４上に実装されるデータベース１１３とは対照的に、第２のファイルシステム１２０は、かなりより高いスループットとかなりより低いレイテンシとを提供することができる。いくつかの実施形態において、第２のファイルシステム１２０に対する書き込みのレイテンシは、第１のファイルシステムに対する書き込みのレイテンシより小さくてもよく、第２のファイルシステム１２０からの読み出しのレイテンシは、メモリコンポーネント１０４からの読み出しのレイテンシより小さくてもよい。さらに、第２のファイルシステム１２０は、データベース１１３が読み出し専用モードであるか又はその他の形で利用不可能であるかにかかわらず、書き込みに利用可能であり得、このことは、データベースシステムの信頼性を増大させる。例えば、第２のファイルシステム１２０は読み出し専用モードを提供しなくてもよく、ゆえに、イベントはいつでも第２のファイルシステム１２０に書き込むことができる。
【００３４】
第２のファイルシステム１２０は、第１の記憶コンポーネント１２１及び第２の記憶コンポーネント１２２を含むことができ、いずれのコンポーネントも、データのディレクトリ又は他の編成を含むことができる。第１の記憶コンポーネント１２１は、識別子を有さないイベントをもっぱら記憶するディレクトリであり得る。例えば、上記で説明された火災イベントは第１の記憶コンポーネントに書き込むことができ、なぜならば、該火災イベントが識別子を割り当てられなかったからである。識別子を有するイベントは、第２のファイルシステム１２０に書き込むことができる。こうした実装において、識別子を有するイベントは、第２の記憶コンポーネント１２２にさらに書き込まれてもよい。第２の記憶コンポーネント１２２は、識別子を有するイベントをもっぱら記憶する第２のファイルシステム１２０のディレクトリであり得る。
【００３５】
データストア１２３の物理記憶装置には、本開示の目的に適した任意タイプの物理記憶装置を含むことができ、例えば、図７に関して説明されるようなメモリ７７０と固定記憶装置７４０との任意の適切な組み合わせなどである。例えば、データストア１２３の物理記憶装置には、アクセス制御サーバ又はカーソルサーバを含むことができる。データストア１２３は、アプリケーションサーバ１００、１０１のうち１つ以上とコロケートされてもよく、例えば、アプリケーションサーバ１００、１０１の同じクラスタ内などである。データストア１２３には、単一の物理マシン又は複数の物理マシンを含むことができ、複数の物理マシンには、１つのマシンが他のマシン上に記憶されたデータを複製できるところの複数の冗長物理マシンが含まれる。
【００３６】
本開示の実装において、第２のファイルシステム１２０は構成可能な量の時間についてイベント又はイベントファイルを記憶することができ、その後、データベースシステムがイベント又はイベントファイルを削除して、追加のイベント又はイベントファイルが記憶されることを可能にすることができる。いくつかの実装において、上記時間の量は、任意に構成することができる。他の実装において、時間の量は、例えば、データベース１１３の予期される利用不可のレートと、さらにアプリケーションサーバ１００の予期されるオーバフローのレートとに基づいて構成することができる。例えば、時間の量は、１時間、１２時間、１日、７日、２週間、又は、本開示の目的に適した任意の他の選択された量の時間であるように構成することができる。
【００３７】
第２のファイルシステム１２０に記憶されたイベントは、最終的に、生成され及び割り当てられた識別子を有し、データストア１１４上のデータベース１１３に書き込まれることができる。例えば、アプリケーションサーバ１００が、間接識別子生成コンポーネント１０８を含むことができる。間接識別子生成コンポーネント１０８は、データベース１１３に要求を周期的に送信してデータベース１１３が利用可能であるかどうかを決定するサービスを含むことができる。間接識別子生成コンポーネント１０８がデータベース１１３から指標を受信する場合、間接識別子生成コンポーネント１０８は、データベース１１３が利用可能であると判断することができる。間接識別子生成コンポーネント１０８は、イベントのための識別子を要求し、受信し、その識別子をイベントに割り当てることができる。いくつかの実装において、間接識別子生成コンポーネント１０８のイベント書き込み機能性は、それから、イベントをその付随する識別子と共にデータベース１１３に書き込むように試みることができる。他の実装において、データベースシステムの他のコンポーネント、例えば、間接イベント書き込みコンポーネント１０９などが、イベントを読み出し、データベース１１３にイベントを書き込むよう試みることができる。
【００３８】
いくつかの実装において、アプリケーションサーバ１００において生成されるイベントは、識別子生成コンポーネント１０７によって成功裏に生成された識別子を有していることがある。しかしながら、イベント書き込みコンポーネント１０６の実行器サービスは、該サービスがイベントをデータベース１１３に書き込むよう試みるとき、不成功に終わることがある。こうした状況において、イベント転送コンポーネント１０５は、イベントを第２のファイルシステム１２０の第２の記憶コンポーネント１２２に書き込むことができる。こうした実装において、間接イベント書き込みコンポーネント１０９は、第２の記憶コンポーネント１２２からイベントを読み出し、データベース１１３にイベントを書き込むよう試みることができる。
【００３９】
データベースシステムが第２のファイルシステム１２０に記憶されたイベントのための識別子を生成するのに失敗するか、あるいはデータベース１１３にイベントを書き込むのに失敗する場合、こうした機能性を実行するそれぞれのプロセス又はスレッドは、データベース１１３が利用可能になりプロセス又はスレッドが完了するまで、周期的に繰り返すことができる。例えば、間接識別子生成コンポーネント１０８は、第２のファイルシステム１２０の第１の記憶コンポーネント１２１を繰り返し読み出し、中に記憶されたイベントに対する識別子を生成し割り当てるよう試みるデーモンプロセスを含むことができる。同様に、間接イベント書き込みコンポーネント１０９は、第２のファイルシステム１２０の第２の記憶コンポーネント１２２を繰り返し読み出し、識別子を有するイベントをデータベース１１３に書き込むよう試みるデーモンプロセスを含むことができる。間接識別子生成コンポーネント１０８及び間接イベント書き込みコンポーネント１０９のさらなる議論は、本開示の後の部分に含まれる。
【００４０】
データベース１１３は、単一のデータストア、又は、複数のサーバ及び／又はサーバクラスタを有する分散されたデータストア、例えば、データストア１１４などに実装することができる。データストア１１４の物理記憶装置には、本開示の目的に適した任意タイプの物理記憶装置を含むことができ、例えば、図７に関して説明されるようなメモリ７７０と固定記憶装置７４０との任意の適切な組み合わせなどである。一実施形態において、データベース１１３は、メタデータ及びデータ内に存続するデータの構造化された配置であり得る。例えば、データベース１１３は、オープンソースの、マルチテナントの、非リレーショナルの、分散データベースであってもよく、例えば、Ａｐａｃｈｅ（登録商標）  ＨＢａｓｅＴＭ、Ｂｉｇｔａｂｌｅ（登録商標）ＴＭ、ＭｏｎｇｏＤＢ（登録商標）ＴＭ、又は同様のＮｏＳＱＬデータベースなどである。他の実施形態において、他のデータベースが実装されてもよく、例えば、Ｐｏｓｔｇｒｅｓ、Ｍｙｓｑｌ（登録商標）  Ｓｅｒｖｅｒ、又はＯｒａｃｌｅ（登録商標）  １２ｃデータベースなどである。第１のファイルシステム１１０は、分散ファイルシステムであってもよく、例えば、Ａｐａｃｈｅ  Ｈａｄｏｏｐ（登録商標）ＴＭ分散ファイルシステム、ＡｍａｚｏｎＴＭシンプルストレージシステム、又はＷｉｎｄｏｗｓ（登録商標）ＴＭ  Ａｚｕｒｅ  Ｓｔｏｒａｇｅ  Ｂｌｏｂファイルシステム、又は他のファイルシステム、例えば、ＯｒａｃｌｅＴＭクラスタファイルシステム、又はＲｅｄ  Ｈａｔ（登録商標）ＴＭグローバルファイルシステムなどである。データベース１１３は、第１のファイルシステム１１０に統合するように具体的に設計されたデータベースであってもよく、例えば、Ａｐａｃｈｅ  ＨＢａｓｅＴＭデータベースが、ＨａｄｏｏｐＴＭ分散ファイルシステムと共に実装される場合などである。
【００４１】
データベースシステムは、テナント、データベース、ファイルシステム、及びデータストアの様々な組み合わせに関連付けられたイベントを記憶することができる。例えば、一組のテナントに関連付けられた一組のイベントが、上記一組のテナントに関連付けられた一組のデータベース上に記憶されてもよい。上記一組のデータベースの各々が、データストア１１４上の単一のファイルシステム１１０に統合されてもよく、データストア１１４は分散されてもよい。他の実装において、一組のテナントに関連付けられた一組のイベントが、データストア１１４上の単一のファイルシステム１１０に統合された単一のデータベース上に記憶されてもよく、データストア１１４は分散されてもよい。他の実装において、データストア１１４は分散されなくてもよく、例えば、データストア１１４の記憶装置が共通のプロセッサに取り付けられる場合である。本開示の実施形態は、上記のうち任意のもの、並びに、本開示の目的に適したテナント、データベース、ファイルシステム、及びデータストアの任意の他の組み合わせを含んでよい。
【００４２】
確実な識別子生成
補足ファイルシステム、例えば第２のファイルシステム１２０などに記憶されるイベントの識別子を生成することは、データベースシステムのコンポーネント間における様々なメッセージの送信及び受信を必要とすることがある。例えば、図２は、本開示の一実装に従う、識別子生成のシーケンス図を示す。２００において、データベースシステムのコンポーネント、例えば、イベント書き込みコンポーネント１０６の識別子生成コンポーネント１０７などが、第１のファイルシステム１１０のデータベース１１３にアクセスして、識別子を取り出し、特定のイベントに割り当てるよう試みることがある。上記試みは失敗することがあり、例えば、データベース１１３が利用不可能であることがあり、要求がタイムアウトすることがある。２１０において、イベント転送コンポーネント１０５は、上記特定のイベントを含むイベントのバッチを、特定イベントファイルとして第２のファイルシステム１２０の第１の記憶コンポーネント１２１に書き込むことができる。
【００４３】
特定イベントファイルが第１の記憶コンポーネント１２１に記憶されているとき、データベースシステムは、この特定イベントファイルの取り出しを可能にする１つ以上の属性を生成することができる。例えば、属性には、様々なタイプのメタデータを含むことができ、例えば、アプリケーションサーバのクラスタとしてグループ化されたインスタンスの集合を一意に識別するクラスタ名、インスタンスとしてグループ化されたアプリケーションサーバの集合を一意に識別するインスタンス名、特定アプリケーションサーバのアプリケーションサーバ名、特定時間ウィンドウの間に生成されたファイルのグループを一意に識別するグループ名、特定ファイルのファイル名、特定ファイルがいつ作成されたかを指定するジョブ開始された日付、この特定イベントファイルのイベント数を指定するイベント数、特定ファイルが最後にいつ更新されたかを示す最後に更新された時間、データベースシステムが特定ファイルを何回処理しようと試みたかを指定するリトライ試行数、ファイルが通常の記憶動作又はバックアップ動作に関連付けられるかどうかを示すジョブタイプ、及び、実行中か完了したかを示すステータスなどである。属性には、他のフィールド、例えば、特定ファイルのファイルサイズに関するファイルサイズ情報、生存期間（time-to-live）値などをさらに含むことができる。
【００４４】
特定イベントファイルが第２のファイルシステム１２０に書き込まれた後、２２０において、データベースシステムのコンポーネント、例えば、イベント転送コンポーネント１０５などが、特定イベントファイル内の各イベントに関連付けられた属性をメタデータテーブルに書き込むことができ、上記メタデータテーブルは、データベース１１３に記憶することができる。データベース１１３における属性メタデータテーブルの記憶は、データベース１１３のデータ及びメタデータ存続要件と一貫性があり得る。データベース１１３が利用不可能であったとの判断が、第２のファイルシステム１２０内でのイベントファイルの記憶を結果としてもたらしている可能性があるが、後の時間に、データベース１１３は利用可能になる可能性があり、上記のものなどの属性はデータベース１１３の属性メタデータテーブルに書き込むことができる。こうした属性をデータベースシステムが使用して、第２のファイルシステム１２０からいずれのファイルを読み出すべきかを決定することができる。例えば、最も古いジョブ開始日付に関連付けられたファイル名が、関連アプリケーションサーバ名と共に使用されて、第２のファイルシステム１２０に問い合わせ、特定のファイルを取り出すことができる。
【００４５】
データベースシステムは、データベース１１３を周期的にチェックして、データベースシステムのコンポーネントの様々なプロセス及び実行スレッドから要求を受信し又はさもなければ該プロセス及び実行スレッドに対するアクセスを提供することが可能であるかを確かめることができる。例えば、２３０において、間接識別子生成コンポーネント１０８が、属性のメタデータテーブルを読み出すための要求をデータベース１１３に送信して、識別子が生成され割り当てられ得る次のイベント又はイベントファイルを決定することができる。メタデータテーブルがアクセスされることがあり、特定イベントファイルに関連付けられた属性を含む特定の属性が返されることがある。
【００４６】
さらに、要求は、特定テナントに関連付けられたテーブルの特定の行、列、インデックス、他の値、又はデータベース１１３のこうした値の範囲に関連付けられた値の配置にアクセスすることを含んでもよい。要求は、例えばデータストア１１４のクロック又はカウンタなどから、シーケンス指標をさらに取り出してもよい。要求の結果として返されるデータ又はデータの組み合わせには、特定イベントファイル内の各イベントについての生成された識別子又は一組の識別子を含むことができる。他の実装において、返されるデータをアプリケーションサーバ１００上で実行されるスレッド又はプロセスが使用して、識別子又は一組の識別子を生成してもよい。
【００４７】
２４０において、特定の属性及び生成された識別子は、データベースシステムのコンポーネント、例えば、間接識別子生成コンポーネント１０８に返すことができる。２５０において、間接識別子生成コンポーネント１０８は、特定の属性に関連付けられたイベントファイルについて第１の記憶コンポーネント１２１に問い合わせることができる。特定イベントファイルは、２６０において、問い合わせの結果として返ることができる。間接識別子生成コンポーネント１０８は、それから、特定の識別子を特定のイベントに割り当てることを含め、生成された識別子を特定イベントファイル内の各イベントに割り当てることができる。
【００４８】
他の実装において、データベースシステムは、取り出されたメタデータを最初使用して、第２のファイルシステム１２０から特定イベントファイルを選択し、特定イベントファイルをアプリケーションサーバのメモリコンポーネント１０４に書き込むことができる。特定イベントファイルがいったんメモリコンポーネントに書き込まれると、データベースシステムは、それから、データベースシステムが利用可能であるかを判断し、及び／又は、特定イベントファイルのための識別子を要求することができる。この手順は、本明細書に明記される他の手順、例えば、図３及び図６に関して論じられる手順などにさらに適用されてもよい。
【００４９】
本開示に明記される手順、例えば、図３、４、及び６に示される手順に従って実行される動作は、本明細書に説明される様々なコンポーネントによって実行することができる。例えば、間接識別子生成コンポーネント１０８又は間接イベント書き込みコンポーネント１０９などのコンポーネントが、１つ以上のプロセス、又は、スレッドプールなどの１つ以上の実行スレッドを含むサービスを含むことができる。スレッドプールのサイズは、需要応答又はロードバランシングなどの構成された最適化パラメータに従って動的に調整することができる。例えば、サービスが、４スレッドを採用する動作により提供されるデータに応答している場合、応答されている動作内のスレッドの数にマッチさせることを必要とする需要応答パラメータは、サービスに、そのスレッドプールを４スレッドにサイズ設定させることができる。
【００５０】
本開示の実装は、識別子を生成しているとき、様々な手順を実行することができる。図３は、本開示の一実装に従う、識別子生成の一例示的な手順を示す。上記で説明されたとおり、データベースシステムは、３００において、クライアント装置におけるアクションに関連付けられたデータをクライアント装置から受信することができる。クライアントは、データベースシステムのテナントであり得る。データは、例えば、クライアント装置１３０からアプリケーションサーバ１００において受信されることがある。クライアント装置は、アプリケーションサーバ１００からリモートであり得る。例えば、クライアント装置がカリフォルニア州ロサンゼルスに位置してもよく、アプリケーションサーバがアイオワ州エームズに位置してもよい。データは、クライアント装置におけるアクションに関連付けることができる。例えば、クライアント装置のユーザが、アプリケーションサーバ１００により提供されるアプリケーションに、ユーザが位置するオフィス複合施設において火災緊急事態が発生していることを示す情報を入力するアクションを実行することができる。上記アクションに関連付けられたデータは、ユーザにより入力された情報、又はユーザにより入力された情報の態様を表すデータ、例えば、緊急事態のタイプ、報告の時間、クライアント装置１３０の場所などであり得る。アクションに関連付けられたデータは、クライアント装置１３０によってアプリケーションサーバ１００に送信することができる。別の例において、クライアント装置１３０のユーザは販売員であることがあり、アクションは顧客との間の販売履歴についてクライアント装置１３０に入力される要求であり得る。アクションに関連付けられたデータは、販売員の要求、又は販売員の要求の態様を表すデータ、例えば、販売員のアイデンティティ、履歴の要求、及び顧客の指標などであり得る。
【００５１】
３１０において、データベースシステムは、クライアント装置から受信されたデータに基づいて特定のイベントを生成することができる。例えば、アプリケーションサーバ１００は、火災緊急事態を表すデータ、報告の時間を表すデータ、クライアント装置１３０の場所を表すデータを組み合わせて、オフィス複合施設における火災を表すイベント、例えば火災イベントなどにすることができる。別の例において、顧客の名前を表すデータ、販売員を識別するデータ、及び販売履歴の要求を表すデータが組み合わせられて、販売員の販売履歴調査を表すイベント、例えば販売調査イベントなどにされてもよい。テナントの装置からのデータから結果として生じるこうしたイベントは、テナントに関連付けられたイベントであり得る。
【００５２】
３２０において、データベースシステムは、識別子が特定のイベントについて生成されたかどうかを判断することができる。例えば、アプリケーションサーバが、データベース１１３が閾値の時間期間について利用不可能であったかを決定することができる。データベース１１３は、テナントに関連付けることができる。例えば、データベースは、テナントによって所有され又は制御され、テナントのデータを含むことができる。データベース１１３が利用可能である場合、３３０において、データベースシステムはデータベース１１３にアクセスして、特定の生成された識別子を受信し、この特定の識別子を特定のイベントに割り当てることができる。３４０において第１のファイルシステムが依然として利用可能である場合、３５０においてデータベースシステムは特定のイベントを第１のファイルシステム１１０に書き込むことができる。３４０において第１のファイルシステム１１０が利用可能でない場合、手順は下記に説明されるとおり続き得る。
【００５３】
３２０において、データベースシステムは、識別子が特定のイベントについて生成されていないと判断することができる。例えば、アプリケーションサーバ１００が、閾値の時間期間が経過しており、データベース１１３がイベントの識別子を生成するために成功裏にアクセスされていないことを決定することができる。例えば、データストア１１４上のデータベース１１３及びファイルシステム１１０が、ロサンゼルスにおける地震に起因したネットワーク中断又はデータストア破壊に起因して利用不可能であり得る。別の例において、データベース１１３が、動作手順、例えば、分割、マージ、又はコンパクションなどに起因して利用不可能であり得る。
【００５４】
いくつかの実装において、データベース１１３は、データベースシステムによる要求に対する応答が閾値の時間期間内に受信されなかったとき、利用不可能であるように判断されてもよい。例えば、データベースシステムは、特定の記録のための特定の識別子又は特定の識別子を表すデータを返すようにデータベース１１３に要求を送信することができる。特定の識別子又は特定の識別子を表すデータは、閾値の時間期間内にデータベース１１３から受信されないことがある。３６０において、閾値の時間期間の満了に応答して、データベースシステムは、特定のイベント、又は特定のイベントを含む特定のイベントファイルを、セカンダリファイルシステム、例えば第２のファイルシステム１２０に書き込むことができる。こうして、例えば、火災イベント又は販売調査イベントを第２のファイルシステム１２０に書き込むことができる。
【００５５】
特定のイベントは、識別子なしであることがあり、第２のファイルシステム１２０の固有の記憶コンポーネント、例えば第１の記憶コンポーネント１２１などに書き込むことができる。第１の記憶コンポーネント１２１は、例えば、第２のファイルシステム１２０の固有のディレクトリであり得る。第１の記憶コンポーネント１２１は、割り当てられた識別子を有さないイベント以外のイベントを記憶しないように構成することができる。ディレクトリは、識別子を割り当てられておらずデータベース１１３に書き込まれていないイベントを含むファイルのみをディレクトリが含むことを識別する固有の名付けパターンを有することができる。例えば、ディレクトリは、ＥｖｅｎｔｓＮｏＩＤ−ＭＭｄｄｙｙｙｙＨＨｍｍと名付けられてもよい。第２のファイルシステム１２０は、後の識別子の生成及び割り当てのためにイベント又はイベントファイルを一時的に記憶するように構成することができる。
【００５６】
第２のファイルシステム１２０などのセカンダリファイルシステムに関してデータベースによりとられるアクションは、データベースシステムのコンポーネント内でログをとられ、又はその他の方法で記録されることができる。例えば、図２に関して上記で説明されたメタデータテーブルなどのメタデータテーブルが、毎回イベントがデータベースシステムにより処理されているとき、あるいは第２のファイルシステム１２０に書き込まれ又は第２のファイルシステム１２０から読み出されているとき、更新されてもよい。ゆえに、例えば、火災イベント又は販売履歴調査イベントが第２のファイルシステム１２０に書き込まれた後、データストア１１４上に記憶されたメタデータテーブルがこうしたイベントの書き込みに関連して属性を更新されることがある。例えば、データベースシステムが最後にいつデータベース１１３から火災イベントのための識別子を生成しようと試みたか、データベースシステムが何回識別子を生成しようと試みたか、データベースシステムがいつ火災イベントを第２のファイルシステムに書き込んだか、及びそれはどのタイプのイベントであるか、例えば火災緊急イベントなどを含め、データをメタデータテーブル上に記録することができる。
【００５７】
データベースシステムのコンポーネントは、識別子を受信するか又はデータベース１１３に書き込まれることになる次のイベント又はイベントファイルの指標に対するアクセスを有することができる。この指標は、属性メタデータテーブルから導出することができる。例えば、間接識別子生成コンポーネント１０８が、属性メタデータテーブルからのこうした指標を周期的に要求することができる。こうしたデータは、データベースシステムにより対処されることになる順序のイベント又はイベントファイルの属性又は他の指標のシーケンスとしてさらに表現することができる。他の実装において、アクセスされる次のイベント又はイベントファイルを示すデータは、データベースシステムの他のコンポーネント、例えば、アプリケーションサーバ１００又はデータストア１１４などの中に記憶してもよい。いくつかの実装において、データベース１１３に書き込まれる次のイベント又はイベントファイルは、識別子又は一組の識別子を受信すべき次のイベント又はイベントファイルであり得る。
【００５８】
上記例を続けると、データベースシステムは、例えば間接識別子生成コンポーネント１０８を介してなどで、識別子を受信すべき次のイベント又はイベントファイルの指標にアクセスすることができる。指標は、特定のイベント又は特定のイベントファイルに関連付けられた属性であり得る。データベースシステムは、周期的に第２のファイルシステム１２０にアクセスし、属性メタデータテーブルから取り出された属性に基づいて次のイベント又は次のイベントファイルを読み出すことができる。例えば、火災イベント又は販売履歴イベントが第２のファイルシステム１２０に書き込まれた後のある時間に、データベースシステムは間接識別子生成コンポーネント１０８を介して属性メタデータテーブルにアクセスし、識別子を受信すべき次のイベントが火災イベント又は販売履歴調査イベントであると決定することができる。例えば、間接識別子生成コンポーネント１０８が、第２のファイルシステム１２０に記憶されている最長の継続時間を有するか又はイベントの識別子の生成若しくはデータベース１１３へのイベントの書き込みにおける最大の試行数を有する第２のファイルシステム１２０の第１のコンポーネント１２１内に記憶されたイベントを返すように、属性メタデータテーブルに問い合わせることができる。火災イベント又は販売履歴調査イベントの指標、例えばそのファイル名などが、上記の基準に基づいて返されてもよい。
【００５９】
３７０において、間接識別子生成コンポーネント１０８は、第２のファイルシステム１２０の第１の記憶コンポーネント１２１から特定のイベント又は特定のイベントファイルを読み出すことができる。例えば、間接識別子生成コンポーネント１０８は、第１の記憶コンポーネント１２１に、火災イベント又は販売履歴調査イベントのファイル名を有するイベントについて問い合わせることができ、そうしたイベントが返され得る。
【００６０】
３８０において、特定のイベント又はイベントファイルは、アプリケーションサーバ１００に、例えばメモリコンポーネント１０４に書き込むことができる。さらに、特定のイベント又はイベントファイルが第２のファイルシステム１２０から読み出され、処理されたことを示すように、属性メタデータテーブルが更新されてもよい。ゆえに、例えば、火災イベント又は販売履歴調査イベントをメモリコンポーネント１０４に書き込むことができ、このことに応じて属性メタデータテーブルを更新することができる。
【００６１】
データベースシステムのコンポーネント、例えば間接識別子生成コンポーネント１０８が、識別子を生成するため又はイベントの識別子を生成することの基礎としての役割を果たせるデータにアクセスするためにデータベースが利用可能であるかを確かめるように、周期的にチェックすることができる。ゆえに、間接識別子生成コンポーネント１０８が、特定のイベント又はイベントファイルのための識別子又は一組の識別子を提供するようにデータベース１１３に要求を送信することができる。他の実装において、データベースシステムは、データベース１１３が利用可能であることの確認を最初要求することなく、特定のイベント又はイベントファイルがメモリコンポーネント１０４に書き込まれていることに応答して特定のイベント又はイベントファイルのための識別子を生成するよう試みてもよい。
【００６２】
３９０においてデータベース１１３が利用可能である場合、識別子は、上記３３０などにおけるように生成することができる。ゆえに、例えば、識別子は、火災イベント又は販売履歴調査イベントに対して生成され、割り当てられることができる。３９０において、データベースシステムが、識別子が特定のイベントに対して生成されていないと決定する場合、３９５において、識別子を生成するための要求が、例えばスケジュールされたリトライポリシーに従って繰り返されることができる。ゆえに、例えば、識別子が生成されず、及び／又は火災イベント又は販売履歴調査イベントに割り当てられない場合、データベースシステムは、識別子を生成し上記イベントに割り当てるよう、繰り返し試みることができる。
【００６３】
識別子がイベントに対して生成されていない、イベントがデータベースに書き込まれてない、及び／又はデータベースが利用可能でないと判断するとき、本開示の全体をとおして説明されるように、様々な手法を採用することができる。例えば、閾値の時間期間が予め構成されてもよい。別の例において、係属値（pendency  value）が、ある時間期間に等しくてもよく、あるいは予め構成されてもよい。係属値又は閾値時間期間に等しい、ある時間期間が満了する場合、データベースシステムは、データベースが利用不可能であること、さもなければ識別子が生成されていないこと、及び／又はイベントがデータベースに書き込まれていないことを決定することができる。
【００６４】
他の実装において、係属値は、予め構成でき又は動的に生成できる１つ以上の他の閾値時間期間に基づいてもよい。例えば、データベースシステムは、イベントファイルのための一組の識別子を生成するよう試みることがある。係属値は、識別子が生成されているかどうかを決定するための基礎として依然として役割を果たすことができ、しかし、係属値は、他の値、例えば、イベントファイル内のイベントの数、イベントあたりの最大量の時間であり得る第１の閾値時間期間、及びイベントファイルあたりの最小量の時間であり得る第２の閾値時間期間などに基づいて決定してもよい。例えば、係属値は、イベントファイル内のイベントの数と第１の閾値時間期間との積と、第２の閾値時間期間との中から最大値を選択することによってデータベースシステムにより決定することができる。第１の閾値時間期間は、例えば１６ミリ秒であってもよく、イベントファイル内のイベントの数は、例えば１０００であってもよく、第２の閾値時間期間は、７０００ミリ秒であってもよい。上記の判断は、下記の式により表すことができる：
MAX(MaxWritePerRecordWaitTime*NumberOfEvents,MinWriteWaitTime)
上記の式において、MinWriteWaitTimeは第２の閾値時間期間であってもよく、NumberOfEventsはイベントファイル内のイベントの数であってもよく、MaxWritePerRecordWaitTimeは第１の閾値時間期間であってもよく、MAXは２つの値のうちの最大値を算出する関数であり得る。
【００６５】
他の実装において、識別子がイベントに対して生成されていないこと、イベントがデータベースに書き込まれていないこと、及び／又はデータベースが利用可能でないことの判断は、識別子又は一組の識別子を生成することにおける不成功の試行数、又は、イベント又はイベントファイルをデータベースに書き込むことにおける不成功の試行数に基づいてもよい。例えば、データベースシステムは、識別子又は一組の識別子を生成することにおける不成功の試行数を追跡し、この値を閾値と比較することができる。閾値が超えられる場合、データベースシステムは、識別子及び／又は一組の識別子が生成されていないこと、及び／又はデータベースが利用できないことを決定することができる。別の例において、データベースシステムは、イベント又はイベントファイルをデータベースに書き込むことにおける不成功の試行数を追跡し、この値を閾値と比較することができる。閾値が超えられる場合、データベースシステムは、イベント又はイベントファイルがデータベースに書き込まれていないこと、及び／又はデータベースが利用できないことを決定することができる。
【００６６】
上記で論じられたとおり、同じイベントに対して複数の識別子を生成する可能性を防止することは有益である可能性があり、例えば、間接識別子生成コンポーネント１０８が、該コンポーネント１０８がイベントファイルの処理を完了した後で第２のファイルシステム１２０からイベントファイルを削除する前に、中断され又は停止される場合などである。上記の状況において、間接識別子生成コンポーネント１０８は所与のイベントファイル内の各イベントについて識別子を成功裏に生成する可能性があり、中断された状態から間接イベント生成コンポーネント１０８が回復した後、該コンポーネント１０８は再度同じイベントファイルに対処し、同じイベントファイルのための第２の組の識別子を生成する可能性がある。
【００６７】
図４は、本開示の一実装に従う、イベント又は一組の関連付けられたイベントを削除する一例示的な手順を示す。４００において、データベースシステムは、イベントファイルなどの一組の関連付けられたイベントのうちすべてのイベントが、アプリケーションサーバ１００のメモリコンポーネント１０４などのメモリに書き込まれたかどうかを決定することができる。イベントファイル内のすべてのイベントがメモリコンポーネント１０４に書き込まれていない場合、イベントファイル内の次のイベントが、４３０において補足ファイルシステムから読み出される。例えば、イベントファイルは、次のイベントが常に決定されるようなイベントの順序付けられたセットを含むことができる。ゆえに、間接識別子生成コンポーネント１０８は、第２のファイルシステム１２０の第１の記憶コンポーネント１２１からイベントファイル内の次のイベントを取り出し、取り出されたイベントをメモリコンポーネント１０４内に記憶することができる。イベントファイル内のすべてのイベントがメモリコンポーネントに書き込まれている場合、ステップ４１０において、データベースシステムはイベントファイルを削除することができる。例えば、間接識別子生成コンポーネント１０８が、第１の記憶コンポーネント１２１からイベントファイルを削除することができる。４２０において、データベースシステムは、次のイベント又は一組の関連付けられたイベントを取り出すことができる。例えば、間接識別子生成コンポーネント１０８が、図２に関して上記で説明されたような属性メタデータテーブルを読み出して、識別子を生成するための次のイベントファイルの指標を決定することができる。データベースシステムは、それから、イベントファイル内の各イベントをメモリコンポーネント１０４に書き込むことを開始することができる。
【００６８】
確実なイベント書き込み
いくつかの状況において、特定のイベントが識別子を成功裏に割り当てられていることがあり、しかし、データベースシステムがデータベース１１３に特定のイベントを書き込むよう試みるときに、データベース１１３が利用不可能であると判断されることがある。例えば、識別子生成コンポーネント１０７がデータベース１１３に成功裏にアクセスして識別子を生成し、イベントに割り当てることがあり、しかし、イベント書き込みコンポーネント１０６がイベントをデータベース１１３に書き込みできる前に、データベース１１３が利用不可能になることがある。上記の状況において、本開示の実装は、識別子を有するイベントを補足ファイルシステム、例えば、データストア１２３上の第２のファイルシステム１２０の第２の記憶コンポーネント１２２に書き込むことができる。
【００６９】
第２のファイルシステム１２０などの補足ファイルからデータベース１１３などのデータベースにイベントを書き込むことは、データベースシステムのコンポーネント間における様々なメッセージの送信及び受信を必要とすることがある。例えば、図５は、本開示の一実装に従う、データベースにイベントを書き込むシーケンス図を示す。５００において、データベースシステムは、データストア１１４上の第１のファイルシステム１１０に実装されたデータベース１１３に特定のイベントを書き込むよう試みることができる。例えば、書き込まれたイベントの受信の確認が閾値の時間期間内に受信されないことがあるため、データベース１１３が利用不可能であると判断されることがある。結果として、５１０において、データベースシステムは、特定のイベントを第２のファイルシステム１２０に書き込むことができる。例えば、イベントは、第２のファイルシステム１２０の第２の記憶コンポーネント１２２にイベントファイルとして書き込むことができる。イベントファイルには、一組の関連付けられたイベント、例えば、識別子を有するがデータベース１１３に書き込まれていないイベントなどを含むことができる。第２の記憶コンポーネント１２２は、例えば、第２のファイルシステム１２０の固有のディレクトリであり得る。第２の記憶コンポーネント１２２は、割り当てられた識別子を有するイベント以外のイベントを記憶しないように構成された第２のファイルシステムのコンポーネントであり得る。ディレクトリは、識別子を割り当てられているがデータベース１１３に書き込まれていないイベントを含むファイルのみをディレクトリが含むことを識別する固有の名付けパターンを有することができる。例えば、ディレクトリは、ＥｖｅｎｔｓＷｉｔｈＩＤ−ＭＭｄｄｙｙｙｙＨＨｍｍと名付けられてもよい。
【００７０】
第２の記憶コンポーネント１２２及び／又は第１の記憶コンポーネント１２１のインスタンスは、データベースシステムによって周期的に生成することができる。例えば、第２の記憶コンポーネント１２２及び第１の記憶コンポーネント１２１は各々、第２のファイルシステム１２０のディレクトリであってもよく、各ディレクトリの新しいバージョンが、１０分毎に生成されてもよい。新しいディレクトリの繰り返しの生成は、データベース１１３が利用不可能であることから結果として生じるアプリケーションサーバ１００からのイベントを受信及び追跡することに対して第２のファイルシステム１２０内に適切な容量を維持するのに有益であり得る。
【００７１】
イベントファイルが第２のファイルシステム１２０に書き込まれた後、５２０において、データベースシステムのコンポーネント、例えばイベント転送コンポーネント１０５又は間接イベント書き込みコンポーネント１０９などが、特定イベントファイル内の各イベントに関連付けられた属性を属性メタデータテーブルに書き込むことができ、属性メタデータテーブルは、データストア１１４上のデータベース１１３に記憶することができる。データベース１１３における属性メタデータテーブルの記憶は、データベース１１３のデータ及びメタデータ存続要件と一貫性があり得る。データベース１１３が利用不可能であったとの判断が、第２のファイルシステム１２０内における特定イベントファイルの記憶を結果としてもたらしている可能性があるが、後の時間に、データベース１１３は利用可能になる可能性があり、上記などの属性は属性メタデータテーブルに書き込むことができる。こうした属性をデータベースシステムが使用して、第２のファイルシステム１２０からいずれのファイルを読み出すべきかを決定することができる。例えば、最も古いジョブ開始日付に関連付けられたファイル名が、関連アプリケーションサーバ名と共に使用されて、第２のファイルシステム１２０に問い合わせ、特定のイベントファイルを取り出すことができる。
【００７２】
データベースシステムは、データベース１１３を周期的にチェックして、データベースシステムのコンポーネントの様々なプロセス及び実行スレッドに対するアクセスを受信し又はさもなければ提供することが可能であるかを確かめることができる。例えば、５３０において、間接イベント書き込みコンポーネント１０８が、属性のメタデータテーブルを読み出すための要求をデータベース１１３に送信して、データベース１１３に書き込まれるべき次のイベント又はイベントファイルを決定することができる。メタデータテーブルがアクセスされることがあり、特定イベントファイルに関連付けられた属性を含む特定の属性が返されることがある。
【００７３】
５４０において、特定の属性及び生成された識別子は、データベースシステムのコンポーネント、例えば、間接イベント書き込みコンポーネント１０９などに返すことができる。５５０において、間接イベント書き込みコンポーネント１０９は、特定の属性に関連付けられたイベントファイルについて第２の記憶コンポーネント１２２に問い合わせることができる。５６０において、イベント、又は、特定のイベントを含むイベントファイルが返され、メモリに、例えばアプリケーションサーバ１００のメモリコンポーネント１０４などに書き込まれることができる。５７０において、データベースシステムは、特定のイベントをデータベース１１３に書き込むことができる。
【００７４】
図３に関して、３４０などにおいて上記で説明されたとおり、識別子は特定のイベントに対して生成することができ、しかし、データベースシステムは、特定のイベント又は特定のイベントを含む特定のイベントファイルがデータストア１１４上の第１のファイルシステム１１０に実装されたデータベース１１３に書き込まれていないと判断することがある。例えば、データベースシステムは、データベースシステム１１３が利用可能でないと決定することがある。本開示の実装は、イベントが識別子を割り当てられた後に該イベントをデータベースに書き込むとき、様々な手順を実行することができる。図６は、本開示の一実装に従う、イベントが識別子を割り当てられた後にイベントをデータベースに書き込む一例示的な手順を示す。６００において、特定のファイルが第１のファイルシステム１１０に書き込まれていないと決定することに応答して、特定のイベントをセカンダリファイルシステムに書き込むことができる。例えば、間接イベント書き込みコンポーネント１０９が、特定のイベント又は特定のイベントに接触するイベントファイルを、データストア１２３上の第２のファイルシステム１２０の第２の記憶コンポーネント１２２に書き込むことができる。第２のファイルシステム１２０は、データベース１１３に対する後続の書き込みのためにイベント又はイベントファイルを一時的に記憶するように構成することができる。
【００７５】
データベースシステムのコンポーネントは、第２のファイルシステム１２０のアクティビティの記録に対するアクセスを有することができ、こうした記録を更新することができる。例えば、間接イベント書き込みコンポーネント１０９が、属性メタデータテーブル、例えば図１に関して説明されたものなどを更新して、特定のイベント又はイベントファイルが第２の記憶コンポーネント１２２に書き込まれていると示すことができる。より後の時間に、データベースシステムは属性メタデータテーブルにアクセスして、データベース１１３に書き込むよう試みるべき次のイベント又はイベントファイルを決定することができる。例えば、間接イベント書き込みコンポーネント１０９が、周期的に属性メタデータテーブルに問い合わせ、データベース１１３に書き込むように試みるべき次のイベント又はイベントファイルの指標を返すことができる。データベース１１３に書き込むべき次のイベント又はイベントファイルの指標に関するこうしたアクセス、更新、問い合わせ、及び他の適切なアクションは、属性メタデータテーブルに関して他所に説明されるように又はさもなければ本開示の目的に適するように実行することができる。
【００７６】
間接イベント書き込みコンポーネント１０９は、書き込むべき次のイベント又はイベントファイルの指標にアクセスすることができる。指標は、特定のイベントファイルに関連付けられた属性であり得る。６１０において、間接イベント書き込みコンポーネント１０９が、第２のファイルシステム１２０の第２の記憶コンポーネント１２２から特定のイベントファイルを読み出すことができる。第２の記憶コンポーネントから特定のイベント又はイベントファイルを読み出した後、属性メタデータテーブルは、特定のイベント又は特定のイベントファイルが読み出され、データベースシステムにより処理されていることを示すように更新することができる。６２０において、特定のイベントファイルは、アプリケーションサーバ１００に、例えばメモリコンポーネント１０４に書き込むことができる。
【００７７】
６３０において、データベースシステムのコンポーネント、例えば間接イベント書き込みコンポーネント１０９などが、データベースが利用可能であるかを確かめるように周期的にチェックすることができる。ゆえに、間接イベント書き込みコンポーネント１０９が、データベース１１３が利用可能であることを確認するようにデータベース１１３に要求を送信することができる。データベース１１３は、該データベース１１３が利用可能であると示す応答を送信することができ、６４０において、間接イベント書き込みコンポーネント１０９が、データベース１１３に特定のイベントファイルを書き込むことができる。いくつかの実装において、データベースシステムは、データベース１１３が利用可能であるとの確認を最初要求することなく、特定のイベントファイルをデータベース１１３に周期的に書き込むよう試みることができる。
【００７８】
いくつかの状況において、データベースシステムは、可用性に対する確認又は特定のイベントが閾値の時間期間内に書き込まれたとの確認を受信しないことなどで、データベース１１３が利用可能でないと決定することができる。こうした状況において、間接イベント書き込みコンポーネント１０９は、６５０において、例えばスケジュールされたリトライポリシーに従って、特定のイベントファイルの書き込みをリトライすることができる。
【００７９】
いくつかの状況において、データベース１１３は、データベースシステムがイベントのための識別子を生成するよう試みた最初の時間に利用可能であった可能性があり、しかし、データベースシステムがデータベース１１３にイベントを書き込むよう試みるときに利用不可能になる可能性がある。本開示の実装は、識別子を受信する前に複数の試行を必要としたイベントと同じ識別子を有するイベント、例えば、第２のファイルシステム１２０に記憶されていたイベントなどを処理することができる。
【００８０】
本開示の実装の態様は、データベース利用不可の判断を行うことができ、リトライ処理を実行することができる。一般に、データベース利用不可についての何らかの具体的な判断を行うこと又は何らかの具体的なリトライ処理を実行することに関して説明される手法は、データベース利用不可についての任意の他の判断又は任意の他のリトライ処理の実行に関連して採用することができる。さらに、本明細書に説明される属性メタデータテーブルは、本明細書に明示的に表現されるとき及び条件に対して追加のとき及び条件下で更新されてもよい。例えば、毎回イベント又はイベントファイルが第２のファイルシステム１２０などのセカンダリファイルシステムから読み出され又はセカンダリファイルシステムに書き込まれているとき、属性メタデータテーブルは、例えば、イベント又はイベントファイルの現在の場所、イベント又はイベントファイルのステータスを示すように、又はイベント又はイベントファイルが処理されていることを示すように更新されてもよい。一般に、本開示に説明される具体的な実装内で実行されるいかなる手順又は処理も、本開示の他の実装においてさらに実行することができる。
【００８１】
データベースシステムは、イベントファイルなどの一組の関連付けられたイベントのうちすべてのイベントが、データベース１１３などのデータベースに書き込まれたかどうかを決定することができる。イベントファイル内のすべてのイベントがデータベースに書き込まれていない場合、イベントファイル内の次のイベントをメモリコンポーネントから読み出すことができる。例えば、イベントファイルは、一組の順序付けられたイベントを含むことができ、したがって、次のイベントが常に決定される。イベントファイル内のすべてのイベントがデータベース１１３に書き込まれている場合、データベースシステムはイベントファイルを削除することができる。例えば、間接イベント書き込みコンポーネント１０９が、メモリコンポーネント１０４から及び／又は第２の記憶コンポーネント１２２からイベントファイルを削除することができる。さらに、データベースシステムは、次のイベント又は一組の関連付けられたイベントを取り出すことができる。例えば、間接イベント書き込みコンポーネント１０９は、図２に関して上記で説明されたような属性メタデータテーブルを読み出して、データベース１１３に書き込むべき次のイベントファイルの指標を決定することができる。データベースシステムは、それから、データベース１１３に対して次のイベントファイル内の各イベントの書き込みを開始することができる。
【００８２】
他のコンポーネント
本開示の実装は、様々なコンポーネント及びネットワークアーキテクチャ内で、及びこれらを用いて実装することができる。図７は、本開示の実装に適した一例示的なコンピューティング装置７００である。コンピューティング装置、例えばコンピューティング装置７００などには、コンピュータ、サーバ、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ウェアラブル装置、及び他のコンピューティング装置を含むことができる。コンピューティング装置７００は、コンピューティング装置７００の主要なコンポーネントを相互接続するバス７１０を含み、上記コンポーネントは、例えば、中央プロセッサ７８０、メモリ７７０（典型的にＲＡＭであるが、ＲＯＭ、フラッシュＲＡＭなどをさらに含んでもよい）、入力／出力コントローラ７６０、ユーザディスプレイ７２０、例えばディスプレイアダプタを介したディスプレイスクリーンなど、ユーザ入力インターフェース７３０であって、１つ以上のコントローラとキーボード、マウスなどの関連付けられたユーザ入力装置とを含むことがあり、Ｉ／Ｏコントローラ７６０に密接に結合されることがあるユーザ入力インターフェース７３０、固定記憶装置７４０、例えばハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、ＳＡＮデバイス、ＳＣＳＩデバイスなど、及び、光ディスク、フラッシュドライブなどを制御し受容するように動作可能な取外し可能媒体コンポーネント７５０などを含む。
【００８３】
バス７１０は、中央プロセッサ７８０とメモリ７７０との間のデータ通信を可能にし、メモリ７７０には、前に述べられたように、読取専用メモリ（ＲＯＭ）又はフラッシュメモリ（いずれも図示されていない）、及びランダムアクセスメモリ（ＲＡＭ）（図示されていない）が含まれ得る。ＲＡＭは、一般に、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリである。ＲＯＭ又はフラッシュメモリは、他のコードの中でも、周辺コンポーネントとの相互作用などの基本ハードウェア動作を制御する基本入力出力システム（ＢＩＯＳ）を含むことができる。コンピューティング装置７００に存在するアプリケーションは、一般に、コンピュータ読取可能媒体上に記憶され、該媒体を介してアクセスされ、上記媒体は、例えば、ハードディスクドライブ（例えば、固定記憶装置７４０）、光学ドライブ、フロッピーディスク、又は他の記憶媒体などである。
【００８４】
固定記憶装置７４０は、コンピューティング装置７００と統合的であってもよく、あるいは別個であって他のインターフェースをとおしてアクセスされてもよい。ネットワークインターフェース７９０は、電話リンクを介してリモートサーバへの、又はインターネットサービスプロバイダ（ＩＳＰ）を介してインターネットへの直接接続を提供することができ、あるいはＰＯＰ（point  of  presence）又は他の手法を介したインターネットに対する直接ネットワークリンクを介してリモートサーバへの直接接続を提供することができる。ネットワークインターフェース７９０は、こうした接続を、デジタルセルラー電話接続、セルラーデジタルパケットデータ（ＣＤＰＤ）接続、デジタル衛星データ接続などを含むワイヤレス手法を用いて提供してもよい。例えば、ネットワークインターフェース７９０は、図８に示されるとおり、コンピューティング装置が１つ以上のローカルの、ワイドエリアの、又は他のネットワークを介して他のコンピューティング装置と通信することを可能にすることができる。
【００８５】
多くの他の装置又はコンポーネント（図示されていない）を同様の方法で接続することができる（例えば、文書スキャナ、デジタルカメラなど）。反対に、図７に示されるコンポーネントのすべてが本開示を実践するのに存在する必要はない。コンポーネントは、図示されるものとは異なる方法で相互接続することができる。図７に示されるものなどのコンピューティング装置の動作は、当分野において容易に知られるものであり、本出願において詳細には論じられない。本開示を実装するためのコード又は命令は、メモリ７７０、固定記憶装置７４０、取外し可能媒体７５０のうち１つ以上などのコンピュータ読取可能記憶媒体内に、又はリモートの記憶場所上に記憶することができる。
【００８６】
図８は、本開示の一実装に従う一例示的なネットワーク配置を示す。１つ以上のクライアント８１０、８２０、例えば、ローカルコンピューティング装置、スマートフォン、タブレットコンピューティング装置などが、１つ以上のネットワーク８００を介して他の装置に接続することができる。ネットワークは、ローカルネットワーク、ワイドエリアネットワーク、インターネット、又は任意の他の適切な１つ又は複数の通信ネットワークであってよく、有線及び／又は無線ネットワークを含む任意の適切なプラットフォーム上で実装することができる。クライアントは、１つ以上のサーバ８４０及び／又はデータベース８５０と通信することができる。装置はクライアント８１０、８２０により直接アクセス可能であってもよく、あるいは、１つ以上の他の装置が仲介アクセスを提供してもよく、例えば、サーバ８４０がデータベース８５０に記憶されたリソースに対するアクセスを提供する場合などである。データベース８５０はデータストア８６０上に実装することができ、一方、データストア８７０は非データベースフォーマットでデータを記憶することができる。データストアは、構造化された及び／又は構造化されていないデータを記憶するためのハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。クライアント８１０、８２０は、リモートプラットフォーム８３０又はリモートプラットフォーム８３０により提供されるサービス、例えばクラウドコンピューティング配置及びサービスなどにさらにアクセスすることができる。リモートプラットフォーム８３０は、１つ以上のサーバ及び／又はデータベースを含むことができる。
【００８７】
より一般に、本開示の様々な実装は、コンピュータにより実装される手順又は処理及びこうした処理を実践する装置を含み、あるいは上記手順又は処理及び装置の形で実装することができる。実装はさらに、命令を有するコンピューティング装置プログラム製品、又は非一時的及び／又は有形媒体に実装された命令を含むコンピュータプログラムコードの形式で実装することができ、上記媒体は、例えば、フロッピーディスケット、ＣＤ−ＲＯＭ、ハードドライブ、ＵＳＢ（ユニバーサルシリアルバス）ドライブ、又は任意の他のマシン読取可能記憶媒体などであり、コンピューティング装置プログラムコードがコンピューティング装置にロードされ、該装置により実行されるとき、このコンピューティング装置は本開示の実施を行う装置になる。
【００８８】
実装はさらに、例えば、記憶媒体に記憶されるか、コンピューティング装置にロードされ及び／又は該装置により実行されるか、何らかの伝送媒体を通じて、例えば電気ワイヤ若しくはケーブルを通じて、光ファイバをとおして、又は電磁放射を介してなどで伝送されるかなどで、コンピュータプログラムコードの形式で実装することができ、コンピュータプログラムコードがコンピューティング装置にロードされ、該装置により実行されるとき、このコンピューティング装置は本開示の実施を行う装置になる。汎用目的マイクロプロセッサ上に実装されるとき、コンピュータプログラムコードセグメントは、固有の論理回路を作成するようにマイクロプロセッサを構成する。いくつかの構成において、コンピュータ読取可能記憶媒体上に記憶されたコンピュータ読取可能命令のセットは、汎用目的プロセッサにより実装することができ、このことは、汎用目的プロセッサ又は汎用目的プロセッサを含む装置を、命令を実施し又は実行するように構成された特別目的装置に変換することができる。実装は、プロセッサを含み得るハードウェア、例えば、ハードウェア及び／又はファームウェアにおいて本開示の実装に従う手法のすべて又は一部を実施する汎用目的マイクロプロセッサ及び／又は特定用途向け集積回路（ＡＳＩＣ）などを用いて、実装することができる。プロセッサは、メモリ、例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ハードディスク、又は電子情報を記憶することができる任意の他の装置などに結合することができる。メモリは、本開示の実装に従う手法を実行するための、プロセッサにより実行されるように適合させた命令を記憶することができる。
【００８９】
前述の記載は、説明の目的で、具体的な実装を参照して説明されている。しかしながら、上記の例示的な議論は、網羅的であること又は開示されたそのとおりの形式に本開示の実装を限定することは意図しない。上記の教示を考慮して、多くの修正及びバリエーションが可能である。実施例は、本開示の実装の原理とその実践的な適用とを説明するために選択され、説明されており、これにより当業者は、こうした実装と様々な修正を備えた様々な実装とを、企図される特定の使用法に適し得るように利用することができる。
【図１】
2017188117.tif 000003
【図２】
2017188117.tif 000004
【図３】
2017188117.tif 000005
【図４】
2017188117.tif 000006
【図５】
2017188117.tif 000007
【図６】
2017188117.tif 000008
【図７】
2017188117.tif 000009
【図８】
2017188117.tif 000010
【外国語明細書】
2017188117000001.pdf