JP6917175B2 - 分散システムにおける一意キーの確実な生成 - Google Patents

分散システムにおける一意キーの確実な生成 Download PDF

Info

Publication number
JP6917175B2
JP6917175B2 JP2017076629A JP2017076629A JP6917175B2 JP 6917175 B2 JP6917175 B2 JP 6917175B2 JP 2017076629 A JP2017076629 A JP 2017076629A JP 2017076629 A JP2017076629 A JP 2017076629A JP 6917175 B2 JP6917175 B2 JP 6917175B2
Authority
JP
Japan
Prior art keywords
event
file system
database
identifier
database system
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.)
Active
Application number
JP2017076629A
Other languages
English (en)
Other versions
JP2017188117A (ja
Inventor
プラディープ アーカシュ
プラディープ アーカシュ
バンガロール スリーニヴァサ アビシェーク
バンガロール スリーニヴァサ アビシェーク
トーマン アダム
トーマン アダム
ワーシャフスキー アレックス
ワーシャフスキー アレックス
ダヤ ワイス アイヴァン
ダヤ ワイス アイヴァン
ジェイン サマールパン
ジェイン サマールパン
ササラッティ ソメシュ
ササラッティ ソメシュ
バンディオパディヤイ ソウメン
バンディオパディヤイ ソウメン
オラヴィヴァッタナクル チョアペット
オラヴィヴァッタナクル チョアペット
Original Assignee
セールスフォース ドット コム インコーポレイティッド
セールスフォース ドット コム インコーポレイティッド
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 セールスフォース ドット コム インコーポレイティッド, セールスフォース ドット コム インコーポレイティッド filed Critical セールスフォース ドット コム インコーポレイティッド
Publication of JP2017188117A publication Critical patent/JP2017188117A/ja
Application granted granted Critical
Publication of JP6917175B2 publication Critical patent/JP6917175B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • 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
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Description

特定のデータベース、例えば、分散ファイルシステムの上位で稼働する非リレーショナルデータベースなどは、データ分割、マージ、若しくはコンパクションなどの処理のため、又はネットワークアクティビティ若しくはデータベースコンポーネントを乱す緊急イベントのために時に利用不可能にされることがある。こうしたデータベースは、一意識別子に依存して、記憶されたイベントを識別することがある。上記データベースが利用不可能であるとき、データベースに書き込まれるべき受信したイベントのための識別子を生成する能力がなくなるおそれがある。識別子を待っているイベントは、メモリに記憶されることがある。しかしながら、メモリ容量を超える大量の書き込みアクティビティが存在する可能性がある。結果として、イベントのための識別子が生成可能になる前に、イベントがメモリから失われるおそれがある。
添付図面は、本開示のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、本開示の実装を例示し、詳細な説明と共に本開示の実装の原理を説明する働きをする。本開示とそれが実施され得る様々な方法との基本理解のために必要であり得るよりもさらに詳細に構造詳細を示す試みは、行われない。
本開示の一実装に従う、コンポーネント環境の一例示的なシステム図を示す。 本開示の一実装に従う、識別子生成の一例示的なシーケンス図を示す。 本開示の一実装に従う、識別子生成の一例示的な手順を示す。 本開示の一実装に従う、イベント又は一組の関連イベントを削除する一例示的な手順を示す。 本開示の一実装に従う、イベントをデータベースに書き込む一例示的なシーケンス図を示す。 本開示の一実装に従う、イベントをデータベースに書き込む一例示的な手順を示す。 本開示の一実装に従う、一例示的なコンピューティング装置を示す。 本開示の一実装に従う、一例示的なネットワーク配置を示す。
分散データベースシステムにおける問題、例えば、識別子が生成され得る前のイベント消失などに対処するために、低レイテンシの補足的なデータストアに一時的に記憶されるイベントについて識別子を確実に生成する手法を提供することができる。例えば、本開示の一実装において、データベースシステムが、アプリケーションをホストするサーバを含むことでき、上記アプリケーションは、該アプリケーションとの間で相互作用するクライアント装置からアプリケーションデータを受信することができる。例えば、緊急応答組織が、大規模な都市地域で在住者及び企業にアプリケーションを提供するアプリケーションサーバを維持することがある。在住者及び企業は、モバイル装置及び他のコンピュータシステムを介してアプリケーションと相互作用して、データを送信して緊急状況を報告することができる。アプリケーションサーバは、受信したデータに基づいて、データベースに書き込まれるべきイベントを生成することができる。例えば、大規模な地震がこの地域を襲う可能性がある。受信したデータに基づいて、オフィス複合施設の火災を表すイベントを生成することができる。受信されるデータには、アプリケーションを稼働させるモバイル装置を介して緊急応答者を呼び出す3人の異なる従業員からのデータと、アプリケーションを稼働させるオフィスコンピュータシステムにセンサ測定値を示すデータを提供する煙探知器及びスプリンクラーシステムセンサからのデータとを含むことができる。イベントは、データが受信された時間、データを提供した装置の場所、又は他の関連する緊急情報をさらに含んでもよい。こうしたイベントをデータベースに記憶することは有益である可能性があり、なぜならば、データベースからのデータに対して分析手順が実行されて、火災応答リソースを最適化することができるからである。緊急イベント、例えば、人口密度の高い市街における地震などの間、火災応答リソースは、緊急応答者の高い需要に起因して特に乏しい可能性がある。
データベースシステムのコンポーネント、例えば、識別子生成コンポーネントなどが、アプリケーションサーバ上で実行され、イベント記憶データベースにアクセスして火災イベントを一意に識別する識別子を生成するよう試みることができる。この識別子はそれから、イベントに割り当てることができ、イベントは、データベースが実装された分散データストアに書き込むことができる。しかしながら、地震のため、データストアに対するネットワーク接続が大幅に低減する可能性がある。さらに、地域の高人口に起因して、アプリケーションサーバには大量の緊急データが殺到し、ゆえに、データベースに書き込まれるべき大量のイベントを生成する可能性がある。ゆえに、データベースは、特定の時間期間、例えば、少なくとも16ミリ秒の間、無応答になる可能性がある。結果として、16ミリ秒間無応答であった後、データベースは利用不可能とみなされる可能性がある。
補足データストアが、アプリケーションサーバと通信するデータストア上に低レイテンシの、高スループットの、補足的なファイルシステムを維持することができる。データベースが利用不可能であると決定することに応答して、火災イベントを含むイベントのバッチをイベントファイルとして補足ファイルシステムに書き込むことができる。間接識別子生成コンポーネントが、識別子を受信し及び/又はデータベースに書き込まれる次のイベント又はイベントファイルを周期的に決定することができる。例えば、間接識別子生成コンポーネントは、成功裏に識別子を受信しておらず又はデータベースに書き込まれていないイベントの順序付けられたログを維持するデータベースに記憶されたメタデータテーブルに周期的にアクセスすることができる。間接識別子生成コンポーネントは、属性メタデータテーブルから属性を取り出すことができ、属性メタデータテーブルは、識別子又は一組の識別子を受信すべき補足ファイルシステム内の次のイベント又はイベントファイルを決定するのに使用することができる。
間接識別子生成コンポーネントは、取り出された属性に基づいて、補足ファイルシステムから識別子を受信するように決定された次のイベントファイルを読み出し、このイベントファイルをアプリケーションサーバのメモリコンポーネントに書き込むことができる。次のイベントファイルには、火災イベントが含まれ得る。イベントファイルからのすべてのイベントがメモリコンポーネントに書き込まれると、イベントファイルは補足ファイルシステムから削除することができる。
イベントファイルを削除することは有益である可能性があり、なぜならば、このことは、間接識別子生成コンポーネントがイベントファイルの処理を完了した後で補足ファイルシステムからファイルを削除する前に、該コンポーネントが中断され又は停止される場合などにおいて、同じイベントのための複数の識別子を生成する可能性を防止することができるからである。間接識別子生成コンポーネントは、それから、データベースにアクセスし、一意識別子を生成し、火災イベントを含むイベントファイル内の各イベントに上記識別子を割り当てることができる。
いくつかの状況において、識別子を割り当てた後、データベースは、再度利用不可能になる可能性がある。例えば、いくつかの実装において、データベースシステムは、データベースが特定の時間期間について応答してしないと判断し、結果として、上述のようにデータベースが利用不可能であると判断することができる。結果として、火災イベントをその割り当てられた識別子と共に含むイベントのバッチが、新しいファイルとして補足ファイルシステムに書き込まれ得る。データベースシステムの間接イベント書き込みコンポーネントが、データベースにアクセスしてイベントを書き込むよう周期的に試みることができる。間接イベント書き込みコンポーネントは、補足ファイルシステムから火災イベントを読み出し、いったんデータベースが利用可能になると、イベントをデータベースに書き込む。新しいファイルの中のすべてのイベントがデータベースに書き込まれると、間接イベント書き込みコンポーネントは、アプリケーションサーバのメモリコンポーネント及び/又は補足ファイルシステムから新しいファイルを削除することができる。
コンポーネント環境
本開示の実装は、様々なコンポーネント環境において実行することができる。例えば、図1は、本開示の一実装に従うコンポーネント環境の一例示的なシステム図を示す。データベースシステムがアプリケーションサーバ100、101を含み、アプリケーションサーバ100、101は、データストア114上の第1のファイルシステム110で実装されたデータベース113、及び、データストア123上に実装された第2のファイルシステム120と通信することができる。いくつかの実装において、データベースシステムは、アプリケーションサーバ100並びに該サーバ100上で実行されるコンポーネント及び手順のみを含むことができ、他の実装において、データベースシステムは、追加の又は他のコンポーネント及び手順、例えば、データストア114及びデータストア123に関するコンポーネント及びプロシージャなどを含むことができる。アプリケーションサーバ100は、クライアント装置130、131と通信することができる。いくつかの実施形態において、データストア123は、データストア114及びアプリケーションサーバ100とは別個であり、区別可能であり得る。例えば、データストア123がコロラド州ボールダーに位置してもよく、データストア114がカリフォルニア州ロサンゼルスに位置してもよく、アプリケーションサーバ100がカリフォルニア州サクラメントに位置してもよい。
アプリケーションサーバ100、101、及びクライアント装置130、131は、一連の1つ以上のネットワークを通して接続することができ、上記ネットワークは、例えば、下記で図8に関して説明されるネットワーク800、又は、こうしたネットワークの組み合わせなどである。他の実施形態において、アプリケーションサーバ100、101、及びクライアント装置130、131は、ネットワーク内の他の装置の各々に対する直接接続を有してもよい。図示されるとおり、複数のアプリケーションサーバ100、101が、複数のクライアント装置130、131に接続される。いくつかの実施形態において、複数のアプリケーションサーバ、例えば、アプリケーションサーバ101、101などが、例えばクラウドコンピューティングサービスにおいてなどで、1つ以上のネットワークを通じて一緒に接続され、リソース及びタスク割り振りを共有してもよい。他の実施形態において、任意数のサーバ又はクライアント装置が存在してもよく、図1のコンポーネント環境が追加の及び/又は異なるコンポーネントを含んでもよい。本明細書に開示される論理的関係及び手順の実装は、本開示の目的に適した任意の代替のコンポーネント構成において実現することができる。
いくつかの実施形態において、アプリケーションサーバ100、101は、クライアント装置130、131などの1つ以上のクライアント装置上の複数の区別可能なユーザのセットに対してアプリケーションへのアクセスを提供するように設計された複数のテナントアプリケーションサーバであり得る。テナントは、組織、例えば緊急応答者又はプライベート企業など、又は、組織の一部、例えば消防士又は販売部門などであり得る。より一般に、テナントは、ソフトウェアインスタンスに対する固有の特権でのアクセスを共有する任意のユーザグループであってもよく、上記ソフトウェアインスタンスは、例えば、アプリケーションサーバ100又はデータベースにより提供されるアプリケーションのソフトウェアインスタンスなどである。他の実施形態において、アプリケーションサーバ100、101は、クライアント装置130、131などの1つ以上のクライアント装置上の単一のユーザセットにサービスするように設計されたシングルテナントアプリケーションサーバであり得る。アプリケーションサーバ100、101は、クライアント装置130、131に対して連続的に又は必要に応じて利用可能にされるリソースを提供することができ、上記リソースは、例えば、データ処理、データ記憶、データ取り出し、アプリケーション固有機能性などである。
アプリケーションサーバ100、101は、本開示の目的に適した任意のコンピューティング装置を含むことができ、上記コンピューティング装置は、例えば、下記で図7に関して説明されるコンピューティング装置700などである。アプリケーションサーバ100、101は、1つ以上のテナントにより共有できるハードウェア及びソフトウェアの様々な要素を含むことができる。例えば、アプリケーションサーバ100は、データベースシステムのテナント又は非テナントのアプリケーション開発者によるアプリケーションの作成、管理、及び実行のためのハードウェア及び/又はソフトウェアインフラストラクチャを提供するアプリケーションプラットフォームを含むことができる。
クライアント装置130、131は、アプリケーションサーバ100、101により提供されるアプリケーションと相互作用するのに適した任意のコンピューティング装置を含むことができ、上記コンピューティング装置は、例えば、下記で図7に関して説明されるコンピューティング装置700などである。クライアント装置130、131は、アプリケーションサーバ100、101と通信してリソースにアクセスすることができ、上記リソースは、例えば、アプリケーションサーバ100上でホストされクライアント装置130、131に提供されるアプリケーションなどである。例えば、テナントが、ハイパーテキストトランスファープロトコルに従って通信しクライアント装置130上で実行されるウェブブラウザ又は他のアプリケーションをとおして、アプリケーションサーバ100により提供されるアプリケーションにアクセスすることができる。
アプリケーションサーバ100、101は、様々なコンポーネントを含むことができる。例えば、本開示の一実施形態に従い、アプリケーションサーバ100は、イベント生成コンポーネント102と、メモリコンポーネント104及びイベント転送コンポーネント105を含み得るバッファコンポーネント103と、識別子生成コンポーネント107を含み得るイベント書き込みコンポーネント106と、間接識別子生成コンポーネント108と、間接イベント書き込みコンポーネント109とを含むことができる。しかしながら、これらコンポーネントのうちいくつか又はすべてが、部分的に又は全体として、データストア114又はデータストア123などのデータベースシステムの他のコンポーネントに含まれ、他のコンポーネント上で実行されてもよい。
イベント生成コンポーネント102は、アプリケーションサーバ100上で実行される特定のアプリケーションに固有の手順であってもよく、あるいは、イベント生成コンポーネント102は、アプリケーションサーバ100上で実行される複数のアプリケーションにわたり共有されるサービスであってもよい。一般に、イベント生成コンポーネント102は、クライアント装置130、131からデータを受信し、アプリケーションサーバ100により提供されているアプリケーションによって指定される条件、ポリシー、又は他のデータ応答手順に従ってイベントを生成することができる。イベントは、それから、後のアクセス及び分析のために、データベース113などのデータベースに最終的に書き込むことができる。
イベントは、発生した何かを表す1つ以上の値又は要素のシーケンス、例えばタプルなどであり得る。イベントは、アプリケーションサーバ100などのアプリケーションサーバ上で実行される複数のアプリケーションにわたり標準化されてもよく、あるいは、具体的なアプリケーションについてカスタマイズされてもよい。例えば、多数の異なるアプリケーションが、クライアント装置上のアプリケーションへのユーザのログインを表すイベントを有する可能性がある。しかしながら、販売分析アプリケーションは、火災の検出を表すイベントを有さない可能性がある。イベントは、不変とすることができ、イベントが生成されるときにタイムスタンプを付けられ、あるいはその他の方法でシーケンス指標を割り当てられてもよい。イベントは、クライアント装置130などのクライアント装置におけるアクションを特徴付けるデータを参照することができ、上記アクションは、アプリケーションサーバ100などのアプリケーションサーバにより提供されているアプリケーションとの相互作用を引き起こす。イベントは、リアルタイム付近での、又は後の時間における分析のために監視し、ログをとり、記憶及び/又は取り出しについて記録することができる。
上記で説明されたような一実装において、アプリケーションサーバ100は、緊急応答者に関するアプリケーションを、オフィス複合施設に関連付けられたクライアント装置に提供することができる。アプリケーションサーバ100は、クライアント装置からのデータを受信することができ、上記データは、例えば、火災を示すオフィス複合施設の3人の従業員のスマートフォンからのデータ、4つの煙アラームが煙を探知していることと15個の火災鎮圧装置が火災鎮圧化学薬品を放出していることとを示すオフィス複合施設のビルセーフティシステムからのデータ、及び、データ収集の場所及び時間を示すデータなどである。上記の受信されるアプリケーションデータに基づいて、アプリケーションサーバ100のイベント生成コンポーネント102は、オフィス複合施設において火災が検知されたことを表すイベントを生成することができる。
別の例において、ユーザアクションに関連するイベントがログをとられ、後に分析されて、ユーザ挙動を特徴付けることができる。例として、ユーザアクション、例えば、アプリケーションを使用すること、ウィンドウが開かれること、システムコマンドが実行されること、チェックボックスがクリックされること、テキストが入力され及び/又は編集されること、ネットワークの場所が訪問されることなどが、後の分析のために捕捉されてもよい。
アプリケーションサーバ100上で実行されるアプリケーションがイベントを生成するとき、このアプリケーションはイベントをメモリに記憶することができる。いくつかの実施形態において、イベントは、バッファコンポーネント103により受信することができる。バッファコンポーネント103は、様々なコンポーネント、例えば、メモリコンポーネント104及びイベント転送コンポーネント105などを含むことができる。図1に示されるとおり、バッファコンポーネント103は、アプリケーションサーバ100上に実装することができる。しかしながら、バッファコンポーネント103のいくつか又はすべてのコンポーネントが、データストア114又はデータストア123などのデータベースシステムの他のコンポーネント上に実装されてもよい。
いくつかの実装において、バッファコンポーネント103は、イベントなどのオブジェクトを記憶し、取り出し、フォワードするバッファサービスを含むことができる。バッファサービスは、データストア114にイベントを書き込むための、かなり低レイテンシのアプリケーションプログラムインターフェース(API)を提供するように設計することができる。例えば、バッファサービスは、0.08マイクロ秒内にイベントをデータベース113に書き込むことができる。バッファサービスは、イベントの数が構成されたイベント数制限に到達するまで、及び/又は、構成された時間、例えば10秒間について、イベントをメモリ内に保つことができる。
いくつかの実装において、バッファサービスは、イベント転送コンポーネント105を含むことができ、イベント転送コンポーネント105は、アプリケーションサーバ100上で実行されるアプリケーションにより生成されるイベントを受信する捕捉サービスを含むことができる。バッファコンポーネント103はメモリコンポーネント104を含むことができ、メモリコンポーネント104は、捕捉されたイベントをインメモリ境界バッファ(in-memory bounded buffer)の中に記憶できるバッファサービスを含むことができる。イベント転送コンポーネント105は、インメモリ境界バッファからのイベントの転送を管理できるバッファフラッシュ調節器をさらに含むことができる。メモリコンポーネント104は、本開示の目的に適したハードウェア及びソフトウェアの任意の組み合わせを含むことができ、上記メモリコンポーネントは、例えば、下記で図7に関して説明されるメモリ770などである。
メモリコンポーネント104のインメモリ境界バッファは、同時書き込み可能APIをサポートすることができ、同時書き込み可能APIは、アプリケーションサーバ100のメモリコンポーネント104にイベントを記憶する。インメモリ境界バッファは、複数のシングルスレッド化されたセグメントを含むことができ、イベント転送コンポーネント105の捕捉サービスは、並列に各セグメントにイベントを書き込み、あるいは各セグメントからイベントを読み出すことができる。インメモリ境界バッファに記憶されたイベントの数が所定の制限に到達するとき、インメモリ境界バッファは、イベント転送コンポーネント105のバッファフラッシュ調節器に通知を提供することができる。
いくつかの実装において、バッファフラッシュ調節器が通知を受信するとき、この調節器は、アプリケーションサーバ100に、インメモリ境界バッファから一組の関連イベント、例えばイベントファイルなどを読み出させ、データベース113に書き込まれるべきイベントファイルをデータストア114のイベント書き込みコンポーネント106に対して提供させることができる。一組のアイテム、例えばイベント又はファイルなどは、単一のアイテム又は複数のアイテムを含んでもよく、あるいはアイテムを含まなくてもよい。イベント書き込みコンポーネント106は実行器サービス(executor service)を含むことができ、上記実行器サービスは、動的にサイズ設定される実行スレッドのスレッドプールを採用して、境界バッファのセグメントを並列に読み出して、イベントがデータストアに直接書き込まれることを可能にする。イベントは、高いスループットを可能にする並列なやり方で消費することができる。
イベント書き込みコンポーネント106の実行器サービスは、ファイルを読み出し、ファイル内のイベントをデータベース113に直接書き込むことができ、すなわち、仲介メモリ又は他の記憶装置内にイベントを記憶することなくイベントをデータベースに書き込むことができる。いくつかの実装において、実行器サービスは、データベース113に書き込まれるべきインメモリ境界バッファからのファイルを要求することができる。図1は、アプリケーションサーバ100上に実装されるイベント書き込みコンポーネント106を示しているが、本開示によって他の実装が企図され、例えば、イベント書き込みコンポーネント106及び識別子コンポーネント107がデータストア114上で実行される場合などである。
いくつかの実装において、イベントファイル内のイベントがデータベース113に書き込まれ得る前に、識別子が生成され、イベントに割り当てられることができる。例えば、イベントを書き込むことに追加で、イベント書き込みコンポーネント106の実行器サービスが識別子生成コンポーネント107をさらに含んでもよい。識別子生成コンポーネントは、アプリケーションサーバ100又はデータベース113の他のコンポーネントにアクセスして識別子を生成しイベントに割り当てる実行スレッドを含むことができる。上記実行スレッドは、イベント書き込みコンポーネント106の動的スレッドプールに含まれてもよい。
識別子は、データベース113からのイベントの場所特定、ソート、及び取り出しを可能にすることができ、なぜならば、識別子は、データベース113内のイベントに割り当てられるすべての識別子の間で一意であり得るからである。キーがイベントのための識別子であってもよく、任意の適切な形式、例えば、英数字シーケンスなどで生成されてもよい。キーの部分が、イベントに関する情報を提供してもよい。例えば、キーの一部分がテナント識別子であってもよく、テナント識別子は、イベントが属するテナントを一意に識別することができる。キーの他の部分が、例えば、データベース113のテーブル番号、行、列、又はインデックス値を識別する値であってもよい。
いくつかの実装において、識別子がシーケンス指標をさらに含んでもよく、シーケンス指標は、アプリケーションサーバ100上に実装された厳密に増加又は減少するカウンタから受信される、ある数の又は一組の順序付けられたシンボルであり得る。カウンタがシーケンス指標を生成するたび、カウンタの値がインクリメントすることができ、したがって、同一のシーケンス指標は生成されず、各シーケンス指標は、該指標が生成される順序に対応する。シーケンス指標は、該シーケンス指標を含む識別子が生成され及び/又はイベントに割り当てられるときの時間又は近似の時間であってもよい。例えば、シーケンス指標は、アプリケーションサーバ100上に実装されたクロックから受信されるタイムスタンプであり得る。カウンタがインクリメントするレートはクロックに対応してもよく、あるいは、カウンタの値はクロックの値に周期的に同期されてもよい。いくつかの実装において、データベースシステムは、識別子を生成しイベントに割り当てるとき、アプリケーションサーバ100又はデータストア114のクロック又はカウンタにアクセスすることができる。
いくつかの実装において、識別子の生成は、データベース113に対するアクセスを必要とする。例えば、生成されることになる識別子は、テナントのデータベース113に関連付けられたテーブルの特定の行、列、インデックス、又は他の値を指定することができる。ゆえに、データベース113の適用可能なテーブルが分析されて、いずれの特定の行、列、インデックス、他の値、又はこうした値の範囲がイベントを受信するのにテーブル内で利用可能であるかを決定する必要があり得る。結果として、データベースシステムがイベントのための識別子を生成するとき、識別子生成コンポーネント107はデータベース113に最初アクセスして、識別子のための必要とされる値を決定することができる。
データベース113が利用可能でない場合、例えば、周期的メンテナンスの間、又は緊急イベントに起因するネットワーク中断があるときなどに、識別子を生成することが法外に遅くなり、あるいは不可能になることがある。データベース113は、最大で1時間又はより長い間、利用不可能である可能性があり、しかし数分の利用不可でさえも、大量の書き込みアクティビティを有するデータベースシステムにおいては大幅なメモリオーバーフローリスクを作り出す可能性がある。すべての識別子生成器機能性がデータストア114上に存在するところの実装においては、クロック又はカウンタ値などのシーケンス指標を取得することができない可能性があり、なぜならば、こうしたデータストアリソースがアクセスできないことがあるからである。
識別子を生成することができないため又はデータベース113が利用可能でないためにデータベース113にイベントを書き込むことができない状況において、アプリケーションサーバ100のメモリコンポーネント104はその記憶容量に到達する可能性がある。例えば、上記で説明された緊急地震イベントなどの状況において、アプリケーションサーバ100上で実行される緊急応答アプリケーションによって生成される過剰な数のイベントが存在する可能性がある。イベント生成のレベルは、データベースシステムの通常の動作レベルを大きく超える可能性があり、したがって、追加の記憶容量が必要とされる。
上記の状況において、データベースシステムは、識別子がイベントに対して生成されていないと判断することができ、結果として、イベントを代わりに補足データストアに書き込むことができる。例えば、識別子生成コンポーネント107が、予め構成された時間期間について、識別子を生成するのに失敗することがある。例えば、上記で参照された火災イベントが、予め構成された時間期間の間に生成された識別子を有するのに失敗することがあり、なぜならば、データベース113が、地震により引き起こされるネットワーク中断に起因して利用不可能だからである。結果として、識別子生成コンポーネント107は、識別子を生成できないことを表す指標をイベント転送コンポーネント105に送信することができる。上記指標を受信することに応答して、イベント転送コンポーネント105は、データストア123内の第2のファイルシステム120の第1の記憶コンポーネント121に識別子なしでイベントを書き込むことができる。
一例示的な実装において、イベント転送コンポーネント105は、識別子生成コンポーネント107のスレッドの各々に対応する一組の実行スレッドを採用することができる。識別子生成コンポーネント107のスレッドは、識別子がイベントに対して生成されなかったことを示す指標を、イベント転送コンポーネント105の対応スレッドに送信することができる。イベントは、メモリコンポーネント104の境界バッファの特定セグメントから読み出されていてもよい。イベント転送コンポーネント105のスレッドは、セグメントから特定のイベントを読み出すことができる。上記特定のイベントを含むイベントのバッチが、イベント転送コンポーネント105によって読み出され、第2のファイルシステム120の第1の記憶コンポーネント121にイベントファイルとして書き込まれることができる。
補足ファイルシステム、例えば、データストア120上に実装された第2のファイルシステム120などが、アプリケーションサーバ100のメモリオーバーフローを緩和するように機能することができる。補足ファイルシステムは、データストア113などの大規模なトランザクションデータストアによって裏打ちされなくてもよい。むしろ、ファイルシステム120は、構造化されていないデータをファイルとして記憶することができる別個のファイル記憶システムとして動作することができ、上記ファイルは、例えば、順序付け又は編成の構造がほとんど必要とされないか又は全く必要とされない任意の、及び可能性として無関係のデータを含むファイルなどである。例えば、第2のファイルシステム120は、バイナリラージオブジェクト(binary large object)(BLOB)値又はブロブストア(blobstore)値を記憶するブロブストアであり得る。結果として、データストア114上に実装されるデータベース113とは対照的に、第2のファイルシステム120は、かなりより高いスループットとかなりより低いレイテンシとを提供することができる。いくつかの実施形態において、第2のファイルシステム120に対する書き込みのレイテンシは、第1のファイルシステムに対する書き込みのレイテンシより小さくてもよく、第2のファイルシステム120からの読み出しのレイテンシは、メモリコンポーネント104からの読み出しのレイテンシより小さくてもよい。さらに、第2のファイルシステム120は、データベース113が読み出し専用モードであるか又はその他の形で利用不可能であるかにかかわらず、書き込みに利用可能であり得、このことは、データベースシステムの信頼性を増大させる。例えば、第2のファイルシステム120は読み出し専用モードを提供しなくてもよく、ゆえに、イベントはいつでも第2のファイルシステム120に書き込むことができる。
第2のファイルシステム120は、第1の記憶コンポーネント121及び第2の記憶コンポーネント122を含むことができ、いずれのコンポーネントも、データのディレクトリ又は他の編成を含むことができる。第1の記憶コンポーネント121は、識別子を有さないイベントをもっぱら記憶するディレクトリであり得る。例えば、上記で説明された火災イベントは第1の記憶コンポーネントに書き込むことができ、なぜならば、該火災イベントが識別子を割り当てられなかったからである。識別子を有するイベントは、第2のファイルシステム120に書き込むことができる。こうした実装において、識別子を有するイベントは、第2の記憶コンポーネント122にさらに書き込まれてもよい。第2の記憶コンポーネント122は、識別子を有するイベントをもっぱら記憶する第2のファイルシステム120のディレクトリであり得る。
データストア123の物理記憶装置には、本開示の目的に適した任意タイプの物理記憶装置を含むことができ、例えば、図7に関して説明されるようなメモリ770と固定記憶装置740との任意の適切な組み合わせなどである。例えば、データストア123の物理記憶装置には、アクセス制御サーバ又はカーソルサーバを含むことができる。データストア123は、アプリケーションサーバ100、101のうち1つ以上とコロケートされてもよく、例えば、アプリケーションサーバ100、101の同じクラスタ内などである。データストア123には、単一の物理マシン又は複数の物理マシンを含むことができ、複数の物理マシンには、1つのマシンが他のマシン上に記憶されたデータを複製できるところの複数の冗長物理マシンが含まれる。
本開示の実装において、第2のファイルシステム120は構成可能な量の時間についてイベント又はイベントファイルを記憶することができ、その後、データベースシステムがイベント又はイベントファイルを削除して、追加のイベント又はイベントファイルが記憶されることを可能にすることができる。いくつかの実装において、上記時間の量は、任意に構成することができる。他の実装において、時間の量は、例えば、データベース113の予期される利用不可のレートと、さらにアプリケーションサーバ100の予期されるオーバフローのレートとに基づいて構成することができる。例えば、時間の量は、1時間、12時間、1日、7日、2週間、又は、本開示の目的に適した任意の他の選択された量の時間であるように構成することができる。
第2のファイルシステム120に記憶されたイベントは、最終的に、生成され及び割り当てられた識別子を有し、データストア114上のデータベース113に書き込まれることができる。例えば、アプリケーションサーバ100が、間接識別子生成コンポーネント108を含むことができる。間接識別子生成コンポーネント108は、データベース113に要求を周期的に送信してデータベース113が利用可能であるかどうかを決定するサービスを含むことができる。間接識別子生成コンポーネント108がデータベース113から指標を受信する場合、間接識別子生成コンポーネント108は、データベース113が利用可能であると判断することができる。間接識別子生成コンポーネント108は、イベントのための識別子を要求し、受信し、その識別子をイベントに割り当てることができる。いくつかの実装において、間接識別子生成コンポーネント108のイベント書き込み機能性は、それから、イベントをその付随する識別子と共にデータベース113に書き込むように試みることができる。他の実装において、データベースシステムの他のコンポーネント、例えば、間接イベント書き込みコンポーネント109などが、イベントを読み出し、データベース113にイベントを書き込むよう試みることができる。
いくつかの実装において、アプリケーションサーバ100において生成されるイベントは、識別子生成コンポーネント107によって成功裏に生成された識別子を有していることがある。しかしながら、イベント書き込みコンポーネント106の実行器サービスは、該サービスがイベントをデータベース113に書き込むよう試みるとき、不成功に終わることがある。こうした状況において、イベント転送コンポーネント105は、イベントを第2のファイルシステム120の第2の記憶コンポーネント122に書き込むことができる。こうした実装において、間接イベント書き込みコンポーネント109は、第2の記憶コンポーネント122からイベントを読み出し、データベース113にイベントを書き込むよう試みることができる。
データベースシステムが第2のファイルシステム120に記憶されたイベントのための識別子を生成するのに失敗するか、あるいはデータベース113にイベントを書き込むのに失敗する場合、こうした機能性を実行するそれぞれのプロセス又はスレッドは、データベース113が利用可能になりプロセス又はスレッドが完了するまで、周期的に繰り返すことができる。例えば、間接識別子生成コンポーネント108は、第2のファイルシステム120の第1の記憶コンポーネント121を繰り返し読み出し、中に記憶されたイベントに対する識別子を生成し割り当てるよう試みるデーモンプロセスを含むことができる。同様に、間接イベント書き込みコンポーネント109は、第2のファイルシステム120の第2の記憶コンポーネント122を繰り返し読み出し、識別子を有するイベントをデータベース113に書き込むよう試みるデーモンプロセスを含むことができる。間接識別子生成コンポーネント108及び間接イベント書き込みコンポーネント109のさらなる議論は、本開示の後の部分に含まれる。
データベース113は、単一のデータストア、又は、複数のサーバ及び/又はサーバクラスタを有する分散されたデータストア、例えば、データストア114などに実装することができる。データストア114の物理記憶装置には、本開示の目的に適した任意タイプの物理記憶装置を含むことができ、例えば、図7に関して説明されるようなメモリ770と固定記憶装置740との任意の適切な組み合わせなどである。一実施形態において、データベース113は、メタデータ及びデータ内に存続するデータの構造化された配置であり得る。例えば、データベース113は、オープンソースの、マルチテナントの、非リレーショナルの、分散データベースであってもよく、例えば、Apache(登録商標) HBaseTM、Bigtable(登録商標)TM、MongoDB(登録商標)TM、又は同様のNoSQLデータベースなどである。他の実施形態において、他のデータベースが実装されてもよく、例えば、Postgres、Mysql(登録商標) Server、又はOracle(登録商標) 12cデータベースなどである。第1のファイルシステム110は、分散ファイルシステムであってもよく、例えば、Apache Hadoop(登録商標)TM分散ファイルシステム、AmazonTMシンプルストレージシステム、又はWindows(登録商標)TM Azure Storage Blobファイルシステム、又は他のファイルシステム、例えば、OracleTMクラスタファイルシステム、又はRed Hat(登録商標)TMグローバルファイルシステムなどである。データベース113は、第1のファイルシステム110に統合するように具体的に設計されたデータベースであってもよく、例えば、Apache HBaseTMデータベースが、HadoopTM分散ファイルシステムと共に実装される場合などである。
データベースシステムは、テナント、データベース、ファイルシステム、及びデータストアの様々な組み合わせに関連付けられたイベントを記憶することができる。例えば、一組のテナントに関連付けられた一組のイベントが、上記一組のテナントに関連付けられた一組のデータベース上に記憶されてもよい。上記一組のデータベースの各々が、データストア114上の単一のファイルシステム110に統合されてもよく、データストア114は分散されてもよい。他の実装において、一組のテナントに関連付けられた一組のイベントが、データストア114上の単一のファイルシステム110に統合された単一のデータベース上に記憶されてもよく、データストア114は分散されてもよい。他の実装において、データストア114は分散されなくてもよく、例えば、データストア114の記憶装置が共通のプロセッサに取り付けられる場合である。本開示の実施形態は、上記のうち任意のもの、並びに、本開示の目的に適したテナント、データベース、ファイルシステム、及びデータストアの任意の他の組み合わせを含んでよい。
確実な識別子生成
補足ファイルシステム、例えば第2のファイルシステム120などに記憶されるイベントの識別子を生成することは、データベースシステムのコンポーネント間における様々なメッセージの送信及び受信を必要とすることがある。例えば、図2は、本開示の一実装に従う、識別子生成のシーケンス図を示す。200において、データベースシステムのコンポーネント、例えば、イベント書き込みコンポーネント106の識別子生成コンポーネント107などが、第1のファイルシステム110のデータベース113にアクセスして、識別子を取り出し、特定のイベントに割り当てるよう試みることがある。上記試みは失敗することがあり、例えば、データベース113が利用不可能であることがあり、要求がタイムアウトすることがある。210において、イベント転送コンポーネント105は、上記特定のイベントを含むイベントのバッチを、特定イベントファイルとして第2のファイルシステム120の第1の記憶コンポーネント121に書き込むことができる。
特定イベントファイルが第1の記憶コンポーネント121に記憶されているとき、データベースシステムは、この特定イベントファイルの取り出しを可能にする1つ以上の属性を生成することができる。例えば、属性には、様々なタイプのメタデータを含むことができ、例えば、アプリケーションサーバのクラスタとしてグループ化されたインスタンスの集合を一意に識別するクラスタ名、インスタンスとしてグループ化されたアプリケーションサーバの集合を一意に識別するインスタンス名、特定アプリケーションサーバのアプリケーションサーバ名、特定時間ウィンドウの間に生成されたファイルのグループを一意に識別するグループ名、特定ファイルのファイル名、特定ファイルがいつ作成されたかを指定するジョブ開始された日付、この特定イベントファイルのイベント数を指定するイベント数、特定ファイルが最後にいつ更新されたかを示す最後に更新された時間、データベースシステムが特定ファイルを何回処理しようと試みたかを指定するリトライ試行数、ファイルが通常の記憶動作又はバックアップ動作に関連付けられるかどうかを示すジョブタイプ、及び、実行中か完了したかを示すステータスなどである。属性には、他のフィールド、例えば、特定ファイルのファイルサイズに関するファイルサイズ情報、生存期間(time-to-live)値などをさらに含むことができる。
特定イベントファイルが第2のファイルシステム120に書き込まれた後、220において、データベースシステムのコンポーネント、例えば、イベント転送コンポーネント105などが、特定イベントファイル内の各イベントに関連付けられた属性をメタデータテーブルに書き込むことができ、上記メタデータテーブルは、データベース113に記憶することができる。データベース113における属性メタデータテーブルの記憶は、データベース113のデータ及びメタデータ存続要件と一貫性があり得る。データベース113が利用不可能であったとの判断が、第2のファイルシステム120内でのイベントファイルの記憶を結果としてもたらしている可能性があるが、後の時間に、データベース113は利用可能になる可能性があり、上記のものなどの属性はデータベース113の属性メタデータテーブルに書き込むことができる。こうした属性をデータベースシステムが使用して、第2のファイルシステム120からいずれのファイルを読み出すべきかを決定することができる。例えば、最も古いジョブ開始日付に関連付けられたファイル名が、関連アプリケーションサーバ名と共に使用されて、第2のファイルシステム120に問い合わせ、特定のファイルを取り出すことができる。
データベースシステムは、データベース113を周期的にチェックして、データベースシステムのコンポーネントの様々なプロセス及び実行スレッドから要求を受信し又はさもなければ該プロセス及び実行スレッドに対するアクセスを提供することが可能であるかを確かめることができる。例えば、230において、間接識別子生成コンポーネント108が、属性のメタデータテーブルを読み出すための要求をデータベース113に送信して、識別子が生成され割り当てられ得る次のイベント又はイベントファイルを決定することができる。メタデータテーブルがアクセスされることがあり、特定イベントファイルに関連付けられた属性を含む特定の属性が返されることがある。
さらに、要求は、特定テナントに関連付けられたテーブルの特定の行、列、インデックス、他の値、又はデータベース113のこうした値の範囲に関連付けられた値の配置にアクセスすることを含んでもよい。要求は、例えばデータストア114のクロック又はカウンタなどから、シーケンス指標をさらに取り出してもよい。要求の結果として返されるデータ又はデータの組み合わせには、特定イベントファイル内の各イベントについての生成された識別子又は一組の識別子を含むことができる。他の実装において、返されるデータをアプリケーションサーバ100上で実行されるスレッド又はプロセスが使用して、識別子又は一組の識別子を生成してもよい。
240において、特定の属性及び生成された識別子は、データベースシステムのコンポーネント、例えば、間接識別子生成コンポーネント108に返すことができる。250において、間接識別子生成コンポーネント108は、特定の属性に関連付けられたイベントファイルについて第1の記憶コンポーネント121に問い合わせることができる。特定イベントファイルは、260において、問い合わせの結果として返ることができる。間接識別子生成コンポーネント108は、それから、特定の識別子を特定のイベントに割り当てることを含め、生成された識別子を特定イベントファイル内の各イベントに割り当てることができる。
他の実装において、データベースシステムは、取り出されたメタデータを最初使用して、第2のファイルシステム120から特定イベントファイルを選択し、特定イベントファイルをアプリケーションサーバのメモリコンポーネント104に書き込むことができる。特定イベントファイルがいったんメモリコンポーネントに書き込まれると、データベースシステムは、それから、データベースシステムが利用可能であるかを判断し、及び/又は、特定イベントファイルのための識別子を要求することができる。この手順は、本明細書に明記される他の手順、例えば、図3及び図6に関して論じられる手順などにさらに適用されてもよい。
本開示に明記される手順、例えば、図3、4、及び6に示される手順に従って実行される動作は、本明細書に説明される様々なコンポーネントによって実行することができる。例えば、間接識別子生成コンポーネント108又は間接イベント書き込みコンポーネント109などのコンポーネントが、1つ以上のプロセス、又は、スレッドプールなどの1つ以上の実行スレッドを含むサービスを含むことができる。スレッドプールのサイズは、需要応答又はロードバランシングなどの構成された最適化パラメータに従って動的に調整することができる。例えば、サービスが、4スレッドを採用する動作により提供されるデータに応答している場合、応答されている動作内のスレッドの数にマッチさせることを必要とする需要応答パラメータは、サービスに、そのスレッドプールを4スレッドにサイズ設定させることができる。
本開示の実装は、識別子を生成しているとき、様々な手順を実行することができる。図3は、本開示の一実装に従う、識別子生成の一例示的な手順を示す。上記で説明されたとおり、データベースシステムは、300において、クライアント装置におけるアクションに関連付けられたデータをクライアント装置から受信することができる。クライアントは、データベースシステムのテナントであり得る。データは、例えば、クライアント装置130からアプリケーションサーバ100において受信されることがある。クライアント装置は、アプリケーションサーバ100からリモートであり得る。例えば、クライアント装置がカリフォルニア州ロサンゼルスに位置してもよく、アプリケーションサーバがアイオワ州エームズに位置してもよい。データは、クライアント装置におけるアクションに関連付けることができる。例えば、クライアント装置のユーザが、アプリケーションサーバ100により提供されるアプリケーションに、ユーザが位置するオフィス複合施設において火災緊急事態が発生していることを示す情報を入力するアクションを実行することができる。上記アクションに関連付けられたデータは、ユーザにより入力された情報、又はユーザにより入力された情報の態様を表すデータ、例えば、緊急事態のタイプ、報告の時間、クライアント装置130の場所などであり得る。アクションに関連付けられたデータは、クライアント装置130によってアプリケーションサーバ100に送信することができる。別の例において、クライアント装置130のユーザは販売員であることがあり、アクションは顧客との間の販売履歴についてクライアント装置130に入力される要求であり得る。アクションに関連付けられたデータは、販売員の要求、又は販売員の要求の態様を表すデータ、例えば、販売員のアイデンティティ、履歴の要求、及び顧客の指標などであり得る。
310において、データベースシステムは、クライアント装置から受信されたデータに基づいて特定のイベントを生成することができる。例えば、アプリケーションサーバ100は、火災緊急事態を表すデータ、報告の時間を表すデータ、クライアント装置130の場所を表すデータを組み合わせて、オフィス複合施設における火災を表すイベント、例えば火災イベントなどにすることができる。別の例において、顧客の名前を表すデータ、販売員を識別するデータ、及び販売履歴の要求を表すデータが組み合わせられて、販売員の販売履歴調査を表すイベント、例えば販売調査イベントなどにされてもよい。テナントの装置からのデータから結果として生じるこうしたイベントは、テナントに関連付けられたイベントであり得る。
320において、データベースシステムは、識別子が特定のイベントについて生成されたかどうかを判断することができる。例えば、アプリケーションサーバが、データベース113が閾値の時間期間について利用不可能であったかを決定することができる。データベース113は、テナントに関連付けることができる。例えば、データベースは、テナントによって所有され又は制御され、テナントのデータを含むことができる。データベース113が利用可能である場合、330において、データベースシステムはデータベース113にアクセスして、特定の生成された識別子を受信し、この特定の識別子を特定のイベントに割り当てることができる。340において第1のファイルシステムが依然として利用可能である場合、350においてデータベースシステムは特定のイベントを第1のファイルシステム110に書き込むことができる。340において第1のファイルシステム110が利用可能でない場合、手順は下記に説明されるとおり続き得る。
320において、データベースシステムは、識別子が特定のイベントについて生成されていないと判断することができる。例えば、アプリケーションサーバ100が、閾値の時間期間が経過しており、データベース113がイベントの識別子を生成するために成功裏にアクセスされていないことを決定することができる。例えば、データストア114上のデータベース113及びファイルシステム110が、ロサンゼルスにおける地震に起因したネットワーク中断又はデータストア破壊に起因して利用不可能であり得る。別の例において、データベース113が、動作手順、例えば、分割、マージ、又はコンパクションなどに起因して利用不可能であり得る。
いくつかの実装において、データベース113は、データベースシステムによる要求に対する応答が閾値の時間期間内に受信されなかったとき、利用不可能であるように判断されてもよい。例えば、データベースシステムは、特定の記録のための特定の識別子又は特定の識別子を表すデータを返すようにデータベース113に要求を送信することができる。特定の識別子又は特定の識別子を表すデータは、閾値の時間期間内にデータベース113から受信されないことがある。360において、閾値の時間期間の満了に応答して、データベースシステムは、特定のイベント、又は特定のイベントを含む特定のイベントファイルを、セカンダリファイルシステム、例えば第2のファイルシステム120に書き込むことができる。こうして、例えば、火災イベント又は販売調査イベントを第2のファイルシステム120に書き込むことができる。
特定のイベントは、識別子なしであることがあり、第2のファイルシステム120の固有の記憶コンポーネント、例えば第1の記憶コンポーネント121などに書き込むことができる。第1の記憶コンポーネント121は、例えば、第2のファイルシステム120の固有のディレクトリであり得る。第1の記憶コンポーネント121は、割り当てられた識別子を有さないイベント以外のイベントを記憶しないように構成することができる。ディレクトリは、識別子を割り当てられておらずデータベース113に書き込まれていないイベントを含むファイルのみをディレクトリが含むことを識別する固有の名付けパターンを有することができる。例えば、ディレクトリは、EventsNoID−MMddyyyyHHmmと名付けられてもよい。第2のファイルシステム120は、後の識別子の生成及び割り当てのためにイベント又はイベントファイルを一時的に記憶するように構成することができる。
第2のファイルシステム120などのセカンダリファイルシステムに関してデータベースによりとられるアクションは、データベースシステムのコンポーネント内でログをとられ、又はその他の方法で記録されることができる。例えば、図2に関して上記で説明されたメタデータテーブルなどのメタデータテーブルが、毎回イベントがデータベースシステムにより処理されているとき、あるいは第2のファイルシステム120に書き込まれ又は第2のファイルシステム120から読み出されているとき、更新されてもよい。ゆえに、例えば、火災イベント又は販売履歴調査イベントが第2のファイルシステム120に書き込まれた後、データストア114上に記憶されたメタデータテーブルがこうしたイベントの書き込みに関連して属性を更新されることがある。例えば、データベースシステムが最後にいつデータベース113から火災イベントのための識別子を生成しようと試みたか、データベースシステムが何回識別子を生成しようと試みたか、データベースシステムがいつ火災イベントを第2のファイルシステムに書き込んだか、及びそれはどのタイプのイベントであるか、例えば火災緊急イベントなどを含め、データをメタデータテーブル上に記録することができる。
データベースシステムのコンポーネントは、識別子を受信するか又はデータベース113に書き込まれることになる次のイベント又はイベントファイルの指標に対するアクセスを有することができる。この指標は、属性メタデータテーブルから導出することができる。例えば、間接識別子生成コンポーネント108が、属性メタデータテーブルからのこうした指標を周期的に要求することができる。こうしたデータは、データベースシステムにより対処されることになる順序のイベント又はイベントファイルの属性又は他の指標のシーケンスとしてさらに表現することができる。他の実装において、アクセスされる次のイベント又はイベントファイルを示すデータは、データベースシステムの他のコンポーネント、例えば、アプリケーションサーバ100又はデータストア114などの中に記憶してもよい。いくつかの実装において、データベース113に書き込まれる次のイベント又はイベントファイルは、識別子又は一組の識別子を受信すべき次のイベント又はイベントファイルであり得る。
上記例を続けると、データベースシステムは、例えば間接識別子生成コンポーネント108を介してなどで、識別子を受信すべき次のイベント又はイベントファイルの指標にアクセスすることができる。指標は、特定のイベント又は特定のイベントファイルに関連付けられた属性であり得る。データベースシステムは、周期的に第2のファイルシステム120にアクセスし、属性メタデータテーブルから取り出された属性に基づいて次のイベント又は次のイベントファイルを読み出すことができる。例えば、火災イベント又は販売履歴イベントが第2のファイルシステム120に書き込まれた後のある時間に、データベースシステムは間接識別子生成コンポーネント108を介して属性メタデータテーブルにアクセスし、識別子を受信すべき次のイベントが火災イベント又は販売履歴調査イベントであると決定することができる。例えば、間接識別子生成コンポーネント108が、第2のファイルシステム120に記憶されている最長の継続時間を有するか又はイベントの識別子の生成若しくはデータベース113へのイベントの書き込みにおける最大の試行数を有する第2のファイルシステム120の第1のコンポーネント121内に記憶されたイベントを返すように、属性メタデータテーブルに問い合わせることができる。火災イベント又は販売履歴調査イベントの指標、例えばそのファイル名などが、上記の基準に基づいて返されてもよい。
370において、間接識別子生成コンポーネント108は、第2のファイルシステム120の第1の記憶コンポーネント121から特定のイベント又は特定のイベントファイルを読み出すことができる。例えば、間接識別子生成コンポーネント108は、第1の記憶コンポーネント121に、火災イベント又は販売履歴調査イベントのファイル名を有するイベントについて問い合わせることができ、そうしたイベントが返され得る。
380において、特定のイベント又はイベントファイルは、アプリケーションサーバ100に、例えばメモリコンポーネント104に書き込むことができる。さらに、特定のイベント又はイベントファイルが第2のファイルシステム120から読み出され、処理されたことを示すように、属性メタデータテーブルが更新されてもよい。ゆえに、例えば、火災イベント又は販売履歴調査イベントをメモリコンポーネント104に書き込むことができ、このことに応じて属性メタデータテーブルを更新することができる。
データベースシステムのコンポーネント、例えば間接識別子生成コンポーネント108が、識別子を生成するため又はイベントの識別子を生成することの基礎としての役割を果たせるデータにアクセスするためにデータベースが利用可能であるかを確かめるように、周期的にチェックすることができる。ゆえに、間接識別子生成コンポーネント108が、特定のイベント又はイベントファイルのための識別子又は一組の識別子を提供するようにデータベース113に要求を送信することができる。他の実装において、データベースシステムは、データベース113が利用可能であることの確認を最初要求することなく、特定のイベント又はイベントファイルがメモリコンポーネント104に書き込まれていることに応答して特定のイベント又はイベントファイルのための識別子を生成するよう試みてもよい。
390においてデータベース113が利用可能である場合、識別子は、上記330などにおけるように生成することができる。ゆえに、例えば、識別子は、火災イベント又は販売履歴調査イベントに対して生成され、割り当てられることができる。390において、データベースシステムが、識別子が特定のイベントに対して生成されていないと決定する場合、395において、識別子を生成するための要求が、例えばスケジュールされたリトライポリシーに従って繰り返されることができる。ゆえに、例えば、識別子が生成されず、及び/又は火災イベント又は販売履歴調査イベントに割り当てられない場合、データベースシステムは、識別子を生成し上記イベントに割り当てるよう、繰り返し試みることができる。
識別子がイベントに対して生成されていない、イベントがデータベースに書き込まれてない、及び/又はデータベースが利用可能でないと判断するとき、本開示の全体をとおして説明されるように、様々な手法を採用することができる。例えば、閾値の時間期間が予め構成されてもよい。別の例において、係属値(pendency value)が、ある時間期間に等しくてもよく、あるいは予め構成されてもよい。係属値又は閾値時間期間に等しい、ある時間期間が満了する場合、データベースシステムは、データベースが利用不可能であること、さもなければ識別子が生成されていないこと、及び/又はイベントがデータベースに書き込まれていないことを決定することができる。
他の実装において、係属値は、予め構成でき又は動的に生成できる1つ以上の他の閾値時間期間に基づいてもよい。例えば、データベースシステムは、イベントファイルのための一組の識別子を生成するよう試みることがある。係属値は、識別子が生成されているかどうかを決定するための基礎として依然として役割を果たすことができ、しかし、係属値は、他の値、例えば、イベントファイル内のイベントの数、イベントあたりの最大量の時間であり得る第1の閾値時間期間、及びイベントファイルあたりの最小量の時間であり得る第2の閾値時間期間などに基づいて決定してもよい。例えば、係属値は、イベントファイル内のイベントの数と第1の閾値時間期間との積と、第2の閾値時間期間との中から最大値を選択することによってデータベースシステムにより決定することができる。第1の閾値時間期間は、例えば16ミリ秒であってもよく、イベントファイル内のイベントの数は、例えば1000であってもよく、第2の閾値時間期間は、7000ミリ秒であってもよい。上記の判断は、下記の式により表すことができる:
MAX(MaxWritePerRecordWaitTime*NumberOfEvents,MinWriteWaitTime)
上記の式において、MinWriteWaitTimeは第2の閾値時間期間であってもよく、NumberOfEventsはイベントファイル内のイベントの数であってもよく、MaxWritePerRecordWaitTimeは第1の閾値時間期間であってもよく、MAXは2つの値のうちの最大値を算出する関数であり得る。
他の実装において、識別子がイベントに対して生成されていないこと、イベントがデータベースに書き込まれていないこと、及び/又はデータベースが利用可能でないことの判断は、識別子又は一組の識別子を生成することにおける不成功の試行数、又は、イベント又はイベントファイルをデータベースに書き込むことにおける不成功の試行数に基づいてもよい。例えば、データベースシステムは、識別子又は一組の識別子を生成することにおける不成功の試行数を追跡し、この値を閾値と比較することができる。閾値が超えられる場合、データベースシステムは、識別子及び/又は一組の識別子が生成されていないこと、及び/又はデータベースが利用できないことを決定することができる。別の例において、データベースシステムは、イベント又はイベントファイルをデータベースに書き込むことにおける不成功の試行数を追跡し、この値を閾値と比較することができる。閾値が超えられる場合、データベースシステムは、イベント又はイベントファイルがデータベースに書き込まれていないこと、及び/又はデータベースが利用できないことを決定することができる。
上記で論じられたとおり、同じイベントに対して複数の識別子を生成する可能性を防止することは有益である可能性があり、例えば、間接識別子生成コンポーネント108が、該コンポーネント108がイベントファイルの処理を完了した後で第2のファイルシステム120からイベントファイルを削除する前に、中断され又は停止される場合などである。上記の状況において、間接識別子生成コンポーネント108は所与のイベントファイル内の各イベントについて識別子を成功裏に生成する可能性があり、中断された状態から間接イベント生成コンポーネント108が回復した後、該コンポーネント108は再度同じイベントファイルに対処し、同じイベントファイルのための第2の組の識別子を生成する可能性がある。
図4は、本開示の一実装に従う、イベント又は一組の関連付けられたイベントを削除する一例示的な手順を示す。400において、データベースシステムは、イベントファイルなどの一組の関連付けられたイベントのうちすべてのイベントが、アプリケーションサーバ100のメモリコンポーネント104などのメモリに書き込まれたかどうかを決定することができる。イベントファイル内のすべてのイベントがメモリコンポーネント104に書き込まれていない場合、イベントファイル内の次のイベントが、430において補足ファイルシステムから読み出される。例えば、イベントファイルは、次のイベントが常に決定されるようなイベントの順序付けられたセットを含むことができる。ゆえに、間接識別子生成コンポーネント108は、第2のファイルシステム120の第1の記憶コンポーネント121からイベントファイル内の次のイベントを取り出し、取り出されたイベントをメモリコンポーネント104内に記憶することができる。イベントファイル内のすべてのイベントがメモリコンポーネントに書き込まれている場合、ステップ410において、データベースシステムはイベントファイルを削除することができる。例えば、間接識別子生成コンポーネント108が、第1の記憶コンポーネント121からイベントファイルを削除することができる。420において、データベースシステムは、次のイベント又は一組の関連付けられたイベントを取り出すことができる。例えば、間接識別子生成コンポーネント108が、図2に関して上記で説明されたような属性メタデータテーブルを読み出して、識別子を生成するための次のイベントファイルの指標を決定することができる。データベースシステムは、それから、イベントファイル内の各イベントをメモリコンポーネント104に書き込むことを開始することができる。
確実なイベント書き込み
いくつかの状況において、特定のイベントが識別子を成功裏に割り当てられていることがあり、しかし、データベースシステムがデータベース113に特定のイベントを書き込むよう試みるときに、データベース113が利用不可能であると判断されることがある。例えば、識別子生成コンポーネント107がデータベース113に成功裏にアクセスして識別子を生成し、イベントに割り当てることがあり、しかし、イベント書き込みコンポーネント106がイベントをデータベース113に書き込みできる前に、データベース113が利用不可能になることがある。上記の状況において、本開示の実装は、識別子を有するイベントを補足ファイルシステム、例えば、データストア123上の第2のファイルシステム120の第2の記憶コンポーネント122に書き込むことができる。
第2のファイルシステム120などの補足ファイルからデータベース113などのデータベースにイベントを書き込むことは、データベースシステムのコンポーネント間における様々なメッセージの送信及び受信を必要とすることがある。例えば、図5は、本開示の一実装に従う、データベースにイベントを書き込むシーケンス図を示す。500において、データベースシステムは、データストア114上の第1のファイルシステム110に実装されたデータベース113に特定のイベントを書き込むよう試みることができる。例えば、書き込まれたイベントの受信の確認が閾値の時間期間内に受信されないことがあるため、データベース113が利用不可能であると判断されることがある。結果として、510において、データベースシステムは、特定のイベントを第2のファイルシステム120に書き込むことができる。例えば、イベントは、第2のファイルシステム120の第2の記憶コンポーネント122にイベントファイルとして書き込むことができる。イベントファイルには、一組の関連付けられたイベント、例えば、識別子を有するがデータベース113に書き込まれていないイベントなどを含むことができる。第2の記憶コンポーネント122は、例えば、第2のファイルシステム120の固有のディレクトリであり得る。第2の記憶コンポーネント122は、割り当てられた識別子を有するイベント以外のイベントを記憶しないように構成された第2のファイルシステムのコンポーネントであり得る。ディレクトリは、識別子を割り当てられているがデータベース113に書き込まれていないイベントを含むファイルのみをディレクトリが含むことを識別する固有の名付けパターンを有することができる。例えば、ディレクトリは、EventsWithID−MMddyyyyHHmmと名付けられてもよい。
第2の記憶コンポーネント122及び/又は第1の記憶コンポーネント121のインスタンスは、データベースシステムによって周期的に生成することができる。例えば、第2の記憶コンポーネント122及び第1の記憶コンポーネント121は各々、第2のファイルシステム120のディレクトリであってもよく、各ディレクトリの新しいバージョンが、10分毎に生成されてもよい。新しいディレクトリの繰り返しの生成は、データベース113が利用不可能であることから結果として生じるアプリケーションサーバ100からのイベントを受信及び追跡することに対して第2のファイルシステム120内に適切な容量を維持するのに有益であり得る。
イベントファイルが第2のファイルシステム120に書き込まれた後、520において、データベースシステムのコンポーネント、例えばイベント転送コンポーネント105又は間接イベント書き込みコンポーネント109などが、特定イベントファイル内の各イベントに関連付けられた属性を属性メタデータテーブルに書き込むことができ、属性メタデータテーブルは、データストア114上のデータベース113に記憶することができる。データベース113における属性メタデータテーブルの記憶は、データベース113のデータ及びメタデータ存続要件と一貫性があり得る。データベース113が利用不可能であったとの判断が、第2のファイルシステム120内における特定イベントファイルの記憶を結果としてもたらしている可能性があるが、後の時間に、データベース113は利用可能になる可能性があり、上記などの属性は属性メタデータテーブルに書き込むことができる。こうした属性をデータベースシステムが使用して、第2のファイルシステム120からいずれのファイルを読み出すべきかを決定することができる。例えば、最も古いジョブ開始日付に関連付けられたファイル名が、関連アプリケーションサーバ名と共に使用されて、第2のファイルシステム120に問い合わせ、特定のイベントファイルを取り出すことができる。
データベースシステムは、データベース113を周期的にチェックして、データベースシステムのコンポーネントの様々なプロセス及び実行スレッドに対するアクセスを受信し又はさもなければ提供することが可能であるかを確かめることができる。例えば、530において、間接イベント書き込みコンポーネント108が、属性のメタデータテーブルを読み出すための要求をデータベース113に送信して、データベース113に書き込まれるべき次のイベント又はイベントファイルを決定することができる。メタデータテーブルがアクセスされることがあり、特定イベントファイルに関連付けられた属性を含む特定の属性が返されることがある。
540において、特定の属性及び生成された識別子は、データベースシステムのコンポーネント、例えば、間接イベント書き込みコンポーネント109などに返すことができる。550において、間接イベント書き込みコンポーネント109は、特定の属性に関連付けられたイベントファイルについて第2の記憶コンポーネント122に問い合わせることができる。560において、イベント、又は、特定のイベントを含むイベントファイルが返され、メモリに、例えばアプリケーションサーバ100のメモリコンポーネント104などに書き込まれることができる。570において、データベースシステムは、特定のイベントをデータベース113に書き込むことができる。
図3に関して、340などにおいて上記で説明されたとおり、識別子は特定のイベントに対して生成することができ、しかし、データベースシステムは、特定のイベント又は特定のイベントを含む特定のイベントファイルがデータストア114上の第1のファイルシステム110に実装されたデータベース113に書き込まれていないと判断することがある。例えば、データベースシステムは、データベースシステム113が利用可能でないと決定することがある。本開示の実装は、イベントが識別子を割り当てられた後に該イベントをデータベースに書き込むとき、様々な手順を実行することができる。図6は、本開示の一実装に従う、イベントが識別子を割り当てられた後にイベントをデータベースに書き込む一例示的な手順を示す。600において、特定のファイルが第1のファイルシステム110に書き込まれていないと決定することに応答して、特定のイベントをセカンダリファイルシステムに書き込むことができる。例えば、間接イベント書き込みコンポーネント109が、特定のイベント又は特定のイベントに接触するイベントファイルを、データストア123上の第2のファイルシステム120の第2の記憶コンポーネント122に書き込むことができる。第2のファイルシステム120は、データベース113に対する後続の書き込みのためにイベント又はイベントファイルを一時的に記憶するように構成することができる。
データベースシステムのコンポーネントは、第2のファイルシステム120のアクティビティの記録に対するアクセスを有することができ、こうした記録を更新することができる。例えば、間接イベント書き込みコンポーネント109が、属性メタデータテーブル、例えば図1に関して説明されたものなどを更新して、特定のイベント又はイベントファイルが第2の記憶コンポーネント122に書き込まれていると示すことができる。より後の時間に、データベースシステムは属性メタデータテーブルにアクセスして、データベース113に書き込むよう試みるべき次のイベント又はイベントファイルを決定することができる。例えば、間接イベント書き込みコンポーネント109が、周期的に属性メタデータテーブルに問い合わせ、データベース113に書き込むように試みるべき次のイベント又はイベントファイルの指標を返すことができる。データベース113に書き込むべき次のイベント又はイベントファイルの指標に関するこうしたアクセス、更新、問い合わせ、及び他の適切なアクションは、属性メタデータテーブルに関して他所に説明されるように又はさもなければ本開示の目的に適するように実行することができる。
間接イベント書き込みコンポーネント109は、書き込むべき次のイベント又はイベントファイルの指標にアクセスすることができる。指標は、特定のイベントファイルに関連付けられた属性であり得る。610において、間接イベント書き込みコンポーネント109が、第2のファイルシステム120の第2の記憶コンポーネント122から特定のイベントファイルを読み出すことができる。第2の記憶コンポーネントから特定のイベント又はイベントファイルを読み出した後、属性メタデータテーブルは、特定のイベント又は特定のイベントファイルが読み出され、データベースシステムにより処理されていることを示すように更新することができる。620において、特定のイベントファイルは、アプリケーションサーバ100に、例えばメモリコンポーネント104に書き込むことができる。
630において、データベースシステムのコンポーネント、例えば間接イベント書き込みコンポーネント109などが、データベースが利用可能であるかを確かめるように周期的にチェックすることができる。ゆえに、間接イベント書き込みコンポーネント109が、データベース113が利用可能であることを確認するようにデータベース113に要求を送信することができる。データベース113は、該データベース113が利用可能であると示す応答を送信することができ、640において、間接イベント書き込みコンポーネント109が、データベース113に特定のイベントファイルを書き込むことができる。いくつかの実装において、データベースシステムは、データベース113が利用可能であるとの確認を最初要求することなく、特定のイベントファイルをデータベース113に周期的に書き込むよう試みることができる。
いくつかの状況において、データベースシステムは、可用性に対する確認又は特定のイベントが閾値の時間期間内に書き込まれたとの確認を受信しないことなどで、データベース113が利用可能でないと決定することができる。こうした状況において、間接イベント書き込みコンポーネント109は、650において、例えばスケジュールされたリトライポリシーに従って、特定のイベントファイルの書き込みをリトライすることができる。
いくつかの状況において、データベース113は、データベースシステムがイベントのための識別子を生成するよう試みた最初の時間に利用可能であった可能性があり、しかし、データベースシステムがデータベース113にイベントを書き込むよう試みるときに利用不可能になる可能性がある。本開示の実装は、識別子を受信する前に複数の試行を必要としたイベントと同じ識別子を有するイベント、例えば、第2のファイルシステム120に記憶されていたイベントなどを処理することができる。
本開示の実装の態様は、データベース利用不可の判断を行うことができ、リトライ処理を実行することができる。一般に、データベース利用不可についての何らかの具体的な判断を行うこと又は何らかの具体的なリトライ処理を実行することに関して説明される手法は、データベース利用不可についての任意の他の判断又は任意の他のリトライ処理の実行に関連して採用することができる。さらに、本明細書に説明される属性メタデータテーブルは、本明細書に明示的に表現されるとき及び条件に対して追加のとき及び条件下で更新されてもよい。例えば、毎回イベント又はイベントファイルが第2のファイルシステム120などのセカンダリファイルシステムから読み出され又はセカンダリファイルシステムに書き込まれているとき、属性メタデータテーブルは、例えば、イベント又はイベントファイルの現在の場所、イベント又はイベントファイルのステータスを示すように、又はイベント又はイベントファイルが処理されていることを示すように更新されてもよい。一般に、本開示に説明される具体的な実装内で実行されるいかなる手順又は処理も、本開示の他の実装においてさらに実行することができる。
データベースシステムは、イベントファイルなどの一組の関連付けられたイベントのうちすべてのイベントが、データベース113などのデータベースに書き込まれたかどうかを決定することができる。イベントファイル内のすべてのイベントがデータベースに書き込まれていない場合、イベントファイル内の次のイベントをメモリコンポーネントから読み出すことができる。例えば、イベントファイルは、一組の順序付けられたイベントを含むことができ、したがって、次のイベントが常に決定される。イベントファイル内のすべてのイベントがデータベース113に書き込まれている場合、データベースシステムはイベントファイルを削除することができる。例えば、間接イベント書き込みコンポーネント109が、メモリコンポーネント104から及び/又は第2の記憶コンポーネント122からイベントファイルを削除することができる。さらに、データベースシステムは、次のイベント又は一組の関連付けられたイベントを取り出すことができる。例えば、間接イベント書き込みコンポーネント109は、図2に関して上記で説明されたような属性メタデータテーブルを読み出して、データベース113に書き込むべき次のイベントファイルの指標を決定することができる。データベースシステムは、それから、データベース113に対して次のイベントファイル内の各イベントの書き込みを開始することができる。
他のコンポーネント
本開示の実装は、様々なコンポーネント及びネットワークアーキテクチャ内で、及びこれらを用いて実装することができる。図7は、本開示の実装に適した一例示的なコンピューティング装置700である。コンピューティング装置、例えばコンピューティング装置700などには、コンピュータ、サーバ、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ウェアラブル装置、及び他のコンピューティング装置を含むことができる。コンピューティング装置700は、コンピューティング装置700の主要なコンポーネントを相互接続するバス710を含み、上記コンポーネントは、例えば、中央プロセッサ780、メモリ770(典型的にRAMであるが、ROM、フラッシュRAMなどをさらに含んでもよい)、入力/出力コントローラ760、ユーザディスプレイ720、例えばディスプレイアダプタを介したディスプレイスクリーンなど、ユーザ入力インターフェース730であって、1つ以上のコントローラとキーボード、マウスなどの関連付けられたユーザ入力装置とを含むことがあり、I/Oコントローラ760に密接に結合されることがあるユーザ入力インターフェース730、固定記憶装置740、例えばハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SANデバイス、SCSIデバイスなど、及び、光ディスク、フラッシュドライブなどを制御し受容するように動作可能な取外し可能媒体コンポーネント750などを含む。
バス710は、中央プロセッサ780とメモリ770との間のデータ通信を可能にし、メモリ770には、前に述べられたように、読取専用メモリ(ROM)又はフラッシュメモリ(いずれも図示されていない)、及びランダムアクセスメモリ(RAM)(図示されていない)が含まれ得る。RAMは、一般に、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリである。ROM又はフラッシュメモリは、他のコードの中でも、周辺コンポーネントとの相互作用などの基本ハードウェア動作を制御する基本入力出力システム(BIOS)を含むことができる。コンピューティング装置700に存在するアプリケーションは、一般に、コンピュータ読取可能媒体上に記憶され、該媒体を介してアクセスされ、上記媒体は、例えば、ハードディスクドライブ(例えば、固定記憶装置740)、光学ドライブ、フロッピーディスク、又は他の記憶媒体などである。
固定記憶装置740は、コンピューティング装置700と統合的であってもよく、あるいは別個であって他のインターフェースをとおしてアクセスされてもよい。ネットワークインターフェース790は、電話リンクを介してリモートサーバへの、又はインターネットサービスプロバイダ(ISP)を介してインターネットへの直接接続を提供することができ、あるいはPOP(point of presence)又は他の手法を介したインターネットに対する直接ネットワークリンクを介してリモートサーバへの直接接続を提供することができる。ネットワークインターフェース790は、こうした接続を、デジタルセルラー電話接続、セルラーデジタルパケットデータ(CDPD)接続、デジタル衛星データ接続などを含むワイヤレス手法を用いて提供してもよい。例えば、ネットワークインターフェース790は、図8に示されるとおり、コンピューティング装置が1つ以上のローカルの、ワイドエリアの、又は他のネットワークを介して他のコンピューティング装置と通信することを可能にすることができる。
多くの他の装置又はコンポーネント(図示されていない)を同様の方法で接続することができる(例えば、文書スキャナ、デジタルカメラなど)。反対に、図7に示されるコンポーネントのすべてが本開示を実践するのに存在する必要はない。コンポーネントは、図示されるものとは異なる方法で相互接続することができる。図7に示されるものなどのコンピューティング装置の動作は、当分野において容易に知られるものであり、本出願において詳細には論じられない。本開示を実装するためのコード又は命令は、メモリ770、固定記憶装置740、取外し可能媒体750のうち1つ以上などのコンピュータ読取可能記憶媒体内に、又はリモートの記憶場所上に記憶することができる。
図8は、本開示の一実装に従う一例示的なネットワーク配置を示す。1つ以上のクライアント810、820、例えば、ローカルコンピューティング装置、スマートフォン、タブレットコンピューティング装置などが、1つ以上のネットワーク800を介して他の装置に接続することができる。ネットワークは、ローカルネットワーク、ワイドエリアネットワーク、インターネット、又は任意の他の適切な1つ又は複数の通信ネットワークであってよく、有線及び/又は無線ネットワークを含む任意の適切なプラットフォーム上で実装することができる。クライアントは、1つ以上のサーバ840及び/又はデータベース850と通信することができる。装置はクライアント810、820により直接アクセス可能であってもよく、あるいは、1つ以上の他の装置が仲介アクセスを提供してもよく、例えば、サーバ840がデータベース850に記憶されたリソースに対するアクセスを提供する場合などである。データベース850はデータストア860上に実装することができ、一方、データストア870は非データベースフォーマットでデータを記憶することができる。データストアは、構造化された及び/又は構造化されていないデータを記憶するためのハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。クライアント810、820は、リモートプラットフォーム830又はリモートプラットフォーム830により提供されるサービス、例えばクラウドコンピューティング配置及びサービスなどにさらにアクセスすることができる。リモートプラットフォーム830は、1つ以上のサーバ及び/又はデータベースを含むことができる。
より一般に、本開示の様々な実装は、コンピュータにより実装される手順又は処理及びこうした処理を実践する装置を含み、あるいは上記手順又は処理及び装置の形で実装することができる。実装はさらに、命令を有するコンピューティング装置プログラム製品、又は非一時的及び/又は有形媒体に実装された命令を含むコンピュータプログラムコードの形式で実装することができ、上記媒体は、例えば、フロッピーディスケット、CD−ROM、ハードドライブ、USB(ユニバーサルシリアルバス)ドライブ、又は任意の他のマシン読取可能記憶媒体などであり、コンピューティング装置プログラムコードがコンピューティング装置にロードされ、該装置により実行されるとき、このコンピューティング装置は本開示の実施を行う装置になる。
実装はさらに、例えば、記憶媒体に記憶されるか、コンピューティング装置にロードされ及び/又は該装置により実行されるか、何らかの伝送媒体を通じて、例えば電気ワイヤ若しくはケーブルを通じて、光ファイバをとおして、又は電磁放射を介してなどで伝送されるかなどで、コンピュータプログラムコードの形式で実装することができ、コンピュータプログラムコードがコンピューティング装置にロードされ、該装置により実行されるとき、このコンピューティング装置は本開示の実施を行う装置になる。汎用目的マイクロプロセッサ上に実装されるとき、コンピュータプログラムコードセグメントは、固有の論理回路を作成するようにマイクロプロセッサを構成する。いくつかの構成において、コンピュータ読取可能記憶媒体上に記憶されたコンピュータ読取可能命令のセットは、汎用目的プロセッサにより実装することができ、このことは、汎用目的プロセッサ又は汎用目的プロセッサを含む装置を、命令を実施し又は実行するように構成された特別目的装置に変換することができる。実装は、プロセッサを含み得るハードウェア、例えば、ハードウェア及び/又はファームウェアにおいて本開示の実装に従う手法のすべて又は一部を実施する汎用目的マイクロプロセッサ及び/又は特定用途向け集積回路(ASIC)などを用いて、実装することができる。プロセッサは、メモリ、例えば、RAM、ROM、フラッシュメモリ、ハードディスク、又は電子情報を記憶することができる任意の他の装置などに結合することができる。メモリは、本開示の実装に従う手法を実行するための、プロセッサにより実行されるように適合させた命令を記憶することができる。
前述の記載は、説明の目的で、具体的な実装を参照して説明されている。しかしながら、上記の例示的な議論は、網羅的であること又は開示されたそのとおりの形式に本開示の実装を限定することは意図しない。上記の教示を考慮して、多くの修正及びバリエーションが可能である。実施例は、本開示の実装の原理とその実践的な適用とを説明するために選択され、説明されており、これにより当業者は、こうした実装と様々な修正を備えた様々な実装とを、企図される特定の使用法に適し得るように利用することができる。

Claims (20)

  1. データベースシステムのアプリケーションサーバにより、前記アプリケーションサーバからリモートであるクライアント装置から第1のデータを受信することであって、前記第1のデータは、前記クライアント装置における第1のアクションに関連付けられる、ことと、
    前記データベースシステムにより、前記第1のデータに基づいて第1のイベントを生成することであって、前記第1のイベントは、前記データベースシステムの分散データストア上の第1のファイルシステムに書き込まれるべきである、ことと、
    前記データベースシステムにより、前記第1のイベントについて識別子が生成されていないと決定することと、
    前記第1のイベントについて前記識別子が生成されていないとの前記決定に応答して、前記データベースシステムにより、前記第1のイベントを、前記第1のファイルシステムとは区別可能である前記データベースシステムの第2のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを読み出すことと、
    前記データベースシステムにより、前記アプリケーションサーバのメモリコンポーネントに前記第1のイベントを書き込むことと、
    前記アプリケーションサーバの前記メモリコンポーネントに対する前記第1のイベントの前記書き込みに応答して、前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを削除することと、
    前記データベースシステムにより識別子生成コンポーネントを介して、前記第1のイベントのための第1の識別子を生成することと、
    前記データベースシステムにより、前記第1の識別子を前記第1のイベントに割り当てることと、
    を含む方法。
  2. 前記データベースシステムにより、前記第1のイベントが前記第1のファイルシステムに書き込まれていないと決定することと、
    前記第1のイベントが前記第1のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第1のイベントを前記第2のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを読み出すことと、
    前記データベースシステムにより、前記第1のイベントを前記第1のファイルシステムに書き込むことと、
    をさらに含む請求項1に記載の方法。
  3. 前記データベースシステムにより、前記第1のイベントが前記第1のファイルシステムに書き込まれていないと決定することと、
    前記第1のイベントが前記第1のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第1のイベントを前記第2のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを読み出すことと、
    前記データベースシステムにより、前記第1のイベントを、前記分散データストア上の前記第1のファイルシステムに統合された非リレーショナルデータベースに書き込むことと、
    をさらに含む請求項1に記載の方法。
  4. 前記データベースシステムにより、前記第1の識別子を有する前記第1のイベントが前記第1のファイルシステムに書き込まれていないと決定することと、
    前記第1の識別子を有する前記第1のイベントが前記第1のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第1の識別子を有する前記第1のイベントを前記第2のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムから、前記第1の識別子を有する前記第1のイベントを読み出すことと、
    前記データベースシステムにより、前記第1の識別子を有する前記第1のイベントを前記第1のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムに記憶された一組の関連付けられたイベントの各々が前記第1のファイルシステムに書き込まれたと決定することであって、前記一組は前記第1のイベントを含む、ことと、
    前記一組の関連付けられたイベントの各々が前記第1のファイルシステムに書き込まれたとの前記決定に応答して、前記データベースシステムにより、前記第2のファイルシステムから前記一組の関連付けられたイベントを削除することと、
    をさらに含む請求項1に記載の方法。
  5. 前記第1のイベントの前記第2のファイルシステムへの前記書き込みは、前記データベースシステムにより、前記第1のイベントを、割り当てられた識別子を有さないイベント以外のイベントを記憶しないように構成された前記第2のファイルシステムの第1のコンポーネントに書き込むことを含む、請求項1に記載の方法。
  6. 前記第1のイベントの前記第2のファイルシステムへの前記書き込みは、前記データベースシステムにより、前記第1のイベントを、割り当てられた識別子を有さないイベント以外のイベントを記憶しないように構成された前記第2のファイルシステムの第1のコンポーネントに書き込むことを含み、当該方法は、
    前記データベースシステムにより、前記第1の識別子を有する前記第1のイベントが前記第1のファイルシステムに書き込まれていないと決定することと、
    前記第1の識別子を有する前記第1のイベントが前記第1のファイルシステムに書き込まれていないとの前記決定に応答して、前記データベースシステムにより、前記第1の識別子を有する前記第1のイベントを、割り当てられた識別子を有するイベント以外のイベントを記憶しないように構成された前記第2のファイルシステムの第2のコンポーネントに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムから、前記第1の識別子を有する前記第1のイベントを読み出すことと、
    前記データベースシステムにより、前記第1の識別子を有する前記第1のイベントを前記第1のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムに記憶された一組の関連付けられたイベントの各々が前記第1のファイルシステムに書き込まれたと決定することであって、前記一組は前記第1のイベントを含む、ことと、
    前記一組の関連付けられたイベントの各々が前記第1のファイルシステムに書き込まれたとの前記決定に応答して、前記データベースシステムにより、前記第2のファイルシステムから前記一組の関連付けられたイベントを削除することと、
    をさらに含む請求項1に記載の方法。
  7. 前記データベースシステムにより、係属値を生成すること
    をさらに含み、前記第1の識別子が前記第1のイベントについて生成されていないとの前記決定は、
    前記データベースシステムにより、前記第1のファイルシステムが前記係属値に等しい時間期間について利用不可能であったと決定すること
    を含む、請求項1に記載の方法。
  8. 前記データベースシステムにより、係属値を、
    イベントの数、
    第1の閾値時間期間、及び
    第2の閾値時間期間
    に基づいて生成すること、をさらに含み、
    前記第1の識別子が前記第1のイベントについて生成されていないとの前記決定は、前記データベースシステムにより、前記第1のファイルシステムが前記係属値に等しい時間期間について利用不可能であったと決定することを含む、
    請求項1に記載の方法。
  9. 前記識別子が前記第1のイベントについて生成されていないとの前記決定は、前記データベースシステムにより、前記識別子を生成することにおける試行の数が閾値を超えたと決定することを含む、請求項1に記載の方法。
  10. 前記データベースシステムにより、係属値を生成することであって、前記第1の識別子が前記第1のイベントについて生成されていないとの前記決定は、前記データベースシステムにより、前記第1のファイルシステムが前記係属値に等しい時間期間について利用不可能であったと決定することを含む、ことと、
    前記アプリケーションサーバにより、前記クライアント装置から第2のデータを受信することであって、前記第2のデータは、前記クライアント装置における第2のアクションに関連付けられる、ことと、
    前記データベースシステムにより、前記第2のデータに基づいて第2のイベントを生成することであって、前記第2のイベントは、前記データベースシステムの前記分散データストア上の前記第1のファイルシステムに書き込まれるべきである、ことと、
    前記データベースシステムにより前記識別子生成コンポーネントを介して、前記係属値に等しく前記第2のイベントの生成の後の時間期間内に、前記第2のイベントのための第2の識別子を生成することと、
    前記データベースシステムにより、前記第2の識別子を前記第2のイベントに割り当てることと、
    をさらに含む請求項1に記載の方法。
  11. 前記第1の識別子は、前記第1のファイルシステムに記憶されたイベントに割り当てられたすべての識別子の間で一意である、請求項1に記載の方法。
  12. 前記第2のファイルシステムは、前記第1のファイルシステムに対する後の書き込みのためにイベントを一時的に記憶するように構成される、請求項1に記載の方法。
  13. 前記第1のイベントは、第1のテナントに関連付けられ、
    前記第1のテナントに関連付けられたデータベースが、前記分散データストア上の前記第1のファイルシステムに統合される、
    請求項1に記載の方法。
  14. 前記第1のイベントは、第1のテナントに関連付けられ、
    複数のテナントに関連付けられた複数のイベントが、前記複数のテナントに関連付けられた複数のデータベースに記憶され、
    前記複数のテナントは前記第1のテナントを含み、
    前記複数のデータベースの各々は、前記分散データストア上の前記第1のファイルシステムに統合される、
    請求項1に記載の方法。
  15. 前記データベースシステムにより、特定のイベントを前記第1のファイルシステムに書き込むことのレイテンシは、前記データベースシステムにより前記特定のイベントを前記第2のファイルシステムに書き込むことのレイテンシより大きい、請求項1に記載の方法。
  16. 前記第2のファイルシステムは、前記分散データストアから区別可能である別個のデータストア上にある、請求項1に記載の方法。
  17. 前記第2のファイルシステムは、前記分散データストアから区別可能であり前記アプリケーションサーバから区別可能である別個のデータストア上にある、請求項1に記載の方法。
  18. 前記第2のファイルシステムはデータをブロブストア値として記憶する、請求項1に記載の方法。
  19. 命令を記憶した非一時的コンピュータ読取可能媒体であって、前記命令はプロセッサにより実行されるときに前記プロセッサに、
    データベースシステムのアプリケーションサーバにより、前記アプリケーションサーバからリモートであるクライアント装置から第1のデータを受信することであって、前記第1のデータは、前記クライアント装置における第1のアクションに関連付けられる、ことと、
    前記データベースシステムにより、前記第1のデータに基づいて第1のイベントを生成することであって、前記第1のイベントは、前記データベースシステムの分散データストア上の第1のファイルシステムに書き込まれるべきである、ことと、
    前記データベースシステムにより、前記第1のイベントについて識別子が生成されていないと決定することと、
    前記第1のイベントについて前記識別子が生成されていないとの前記決定に応答して、前記データベースシステムにより、前記第1のイベントを、前記第1のファイルシステムとは区別可能である前記データベースシステムの第2のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを読み出すことと、
    前記データベースシステムにより、前記アプリケーションサーバのメモリコンポーネントに前記第1のイベントを書き込むことと、
    前記アプリケーションサーバの前記メモリコンポーネントに対する前記第1のイベントの前記書き込みに応答して、前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを削除することと、
    前記データベースシステムにより識別子生成コンポーネントを介して、前記第1のイベントのための第1の識別子を生成することと、
    前記データベースシステムにより、前記第1の識別子を前記第1のイベントに割り当てることと、
    を含む動作を実行させる、非一時的コンピュータ読取可能媒体。
  20. データベースシステムであって、
    第1のファイルシステムと通信するアプリケーションサーバであって、前記第1のファイルシステムは分散データストア上にある、アプリケーションサーバと、
    前記第1のファイルシステムから区別可能である第2のファイルシステムと、
    前記アプリケーションサーバ、前記第1のファイルシステム、及び前記第2のファイルシステムと通信するプロセッサと、
    前記プロセッサと通信し命令を記憶した非一時的コンピュータ読取可能媒体であって、前記命令は前記プロセッサにより実行されるときに前記プロセッサに、
    前記アプリケーションサーバにより、前記アプリケーションサーバからリモートであるクライアント装置から第1のデータを受信することであって、前記第1のデータは、前記クライアント装置における第1のアクションに関連付けられる、ことと、
    前記データベースシステムにより、前記第1のデータに基づいて第1のイベントを生成することであって、前記第1のイベントは、前記データベースシステムの分散データストア上の第1のファイルシステムに書き込まれるべきである、ことと、
    前記データベースシステムにより、前記第1のイベントについて識別子が生成されていないと決定することと、
    前記第1のイベントについて前記識別子が生成されていないとの前記決定に応答して、前記データベースシステムにより、前記第1のイベントを、前記データベースシステムの前記第2のファイルシステムに書き込むことと、
    前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを読み出すことと、
    前記データベースシステムにより、前記アプリケーションサーバのメモリコンポーネントに前記第1のイベントを書き込むことと、
    前記アプリケーションサーバの前記メモリコンポーネントに対する前記第1のイベントの前記書き込みに応答して、前記データベースシステムにより、前記第2のファイルシステムから前記第1のイベントを削除することと、
    前記データベースシステムにより識別子生成コンポーネントを介して、前記第1のイベントのための第1の識別子を生成することと、
    前記データベースシステムにより、前記第1の識別子を前記第1のイベントに割り当てることと、
    を含む動作を実行させる、非一時的コンピュータ読取可能媒体と、
    を含むデータベースシステム。
JP2017076629A 2016-04-08 2017-04-07 分散システムにおける一意キーの確実な生成 Active JP6917175B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/093,920 US10678757B2 (en) 2016-04-08 2016-04-08 Reliable generation of a unique key in a distributed system
US15/093,920 2016-04-08

Publications (2)

Publication Number Publication Date
JP2017188117A JP2017188117A (ja) 2017-10-12
JP6917175B2 true JP6917175B2 (ja) 2021-08-11

Family

ID=58488870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017076629A Active JP6917175B2 (ja) 2016-04-08 2017-04-07 分散システムにおける一意キーの確実な生成

Country Status (3)

Country Link
US (1) US10678757B2 (ja)
EP (1) EP3229151B1 (ja)
JP (1) JP6917175B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223136B2 (en) 2016-09-30 2019-03-05 Salesforce.Com, Inc. Generating content objects using an integrated development environment
US11663205B2 (en) 2017-05-04 2023-05-30 Salesforce, Inc. Technologies for asynchronous querying
US20200098275A1 (en) 2018-09-24 2020-03-26 Salesforce.Com, Inc. Integrating an application or service with a learning platform using a database system
US10783044B2 (en) * 2018-09-24 2020-09-22 Salesforce, Inc. Method and apparatus for a mechanism of disaster recovery and instance refresh in an event recordation system
US11385945B2 (en) 2018-12-03 2022-07-12 Salesforce.Com, Inc. Method and system for event consumer management in an aggregated event platform
USD894213S1 (en) 2018-12-14 2020-08-25 Salesforce.Com, Inc. Display screen or portion thereof with graphical user interface
US11068448B2 (en) 2019-01-07 2021-07-20 Salesforce.Com, Inc. Archiving objects in a database environment
US10776186B2 (en) 2019-02-11 2020-09-15 Salesforce.Com, Inc. Method and system for detection and handling of discontinuities in event delivery systems
CA3142621A1 (en) * 2019-06-07 2020-12-10 Intergraph Corporation Data sharing control methods and systems
US11429607B2 (en) * 2019-09-20 2022-08-30 Thoughtspot, Inc. Machine language query management for low-latency database analysis system
US11416476B2 (en) 2019-10-31 2022-08-16 Salesforce.Com, Inc. Event ordering based on an identifier for a transaction
US10812608B1 (en) 2019-10-31 2020-10-20 Salesforce.Com, Inc. Recipient-based filtering in a publish-subscribe messaging system
US11599526B2 (en) 2019-10-31 2023-03-07 Salesforce.Com, Inc. Selectively publishing an event responsive to an operation on a database in a transaction which is rolled back or committed
US11714694B2 (en) 2019-11-08 2023-08-01 Salesforce, Inc. Error notification mechanism for streaming events
CN113190529B (zh) * 2021-04-29 2023-09-19 电子科技大学 一种适用MongoDB数据库的多租户数据共享存储系统

Family Cites Families (158)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA889156A (en) 1969-09-19 1971-12-28 Cowan Ben Screen impeller
US5608872A (en) 1993-03-19 1997-03-04 Ncr Corporation System for allowing all remote computers to perform annotation on an image and replicating the annotated image on the respective displays of other comuters
US5649104A (en) 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
US7991347B1 (en) 1994-04-07 2011-08-02 Data Innovation Llc System and method for accessing set of digital data at a remote site
US5577188A (en) 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
US7181758B1 (en) 1994-07-25 2007-02-20 Data Innovation, L.L.C. Information distribution and processing system
GB2300991B (en) 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
WO1996042172A2 (en) 1995-06-09 1996-12-27 Philips Electronics N.V. Method for enabling a user to fetch a specific information item from a set of information items, and a system for carrying out such a method
US5715450A (en) 1995-09-27 1998-02-03 Siebel Systems, Inc. Method of selecting and presenting data from a database using a query language to a user of a computer system
US5821937A (en) 1996-02-23 1998-10-13 Netsuite Development, L.P. Computer method for updating a network design
US5831610A (en) 1996-02-23 1998-11-03 Netsuite Development L.P. Designing networks
US5873096A (en) 1997-10-08 1999-02-16 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
US6604117B2 (en) 1996-03-19 2003-08-05 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
AU6440398A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
WO1998040804A2 (en) 1997-02-26 1998-09-17 Siebel Systems, Inc. Distributed relational database
AU6668398A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining the visibility to a remote databaseclient of a plurality of database transactions using simplified visibility rules
AU6183698A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions having variable visibility strengths
WO1998038762A2 (en) 1997-02-26 1998-09-03 Siebel Systems, Inc. Determining visibility to a remote database client
WO1998040805A2 (en) 1997-02-27 1998-09-17 Siebel Systems, Inc. Method of synchronizing independently distributed software and database schema
JP2001514776A (ja) 1997-02-27 2001-09-11 シーベル システムズ,インコーポレイティド ローカルな修正を組み込むソフトウェア配布の連続レベル移送の方法
EP1015997A4 (en) 1997-02-28 2006-03-29 Siebel Systems Inc PARTLY REPLICATED DISTRIBUTED DATABASE WITH MULTIPLE LEVELS FROM REMOTE CLIENTS
US5983227A (en) 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
US6169534B1 (en) 1997-06-26 2001-01-02 Upshot.Com Graphical user interface for customer information management
US6560461B1 (en) 1997-08-04 2003-05-06 Mundi Fomukong Authorized location reporting paging system
US5918159A (en) 1997-08-04 1999-06-29 Fomukong; Mundi Location reporting satellite paging system with optional blocking of location reporting
US6236978B1 (en) 1997-11-14 2001-05-22 New York University System and method for dynamic profiling of users in one-to-one applications
US20020059095A1 (en) 1998-02-26 2002-05-16 Cook Rachael Linette System and method for generating, capturing, and managing customer lead information over a computer network
US6732111B2 (en) 1998-03-03 2004-05-04 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US6161149A (en) 1998-03-13 2000-12-12 Groupserve, Inc. Centrifugal communication and collaboration method
US6772229B1 (en) 2000-11-13 2004-08-03 Groupserve, Inc. Centrifugal communication and collaboration method
US5963953A (en) 1998-03-30 1999-10-05 Siebel Systems, Inc. Method, and system for product configuration
EP1105826A1 (en) 1998-08-27 2001-06-13 Upshot Corporation A method and apparatus for network-based sales force management
WO2000022551A1 (en) 1998-10-13 2000-04-20 Chris Cheah Method and system for controlled distribution of information over a network
US6601087B1 (en) 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
US6393605B1 (en) 1998-11-18 2002-05-21 Siebel Systems, Inc. Apparatus and system for efficient delivery and deployment of an application
US6728960B1 (en) 1998-11-18 2004-04-27 Siebel Systems, Inc. Techniques for managing multiple threads in a browser environment
JP2002531896A (ja) 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド スマートスクリプトを用いたコールセンター
AU2035600A (en) 1998-11-30 2000-06-19 Siebel Systems, Inc. Development tool, method, and system for client server appications
WO2000033235A1 (en) 1998-11-30 2000-06-08 Siebel Systems, Inc. State models for monitoring processes
WO2000033238A2 (en) 1998-11-30 2000-06-08 Siebel Systems, Inc. Assignment manager
US7356482B2 (en) 1998-12-18 2008-04-08 Alternative Systems, Inc. Integrated change management unit
US20020072951A1 (en) 1999-03-03 2002-06-13 Michael Lee Marketing support database management method, system and program product
US6574635B2 (en) 1999-03-03 2003-06-03 Siebel Systems, Inc. Application instantiation based upon attributes and values stored in a meta data repository, including tiering of application layers objects and components
US6288717B1 (en) 1999-03-19 2001-09-11 Terry Dunkle Headline posting algorithm
US6907566B1 (en) 1999-04-02 2005-06-14 Overture Services, Inc. Method and system for optimum placement of advertisements on a webpage
US7698160B2 (en) 1999-05-07 2010-04-13 Virtualagility, Inc System for performing collaborative tasks
US8095413B1 (en) 1999-05-07 2012-01-10 VirtualAgility, Inc. Processing management information
US6411949B1 (en) 1999-08-12 2002-06-25 Koninklijke Philips Electronics N.V., Customizing database information for presentation with media selections
US6621834B1 (en) 1999-11-05 2003-09-16 Raindance Communications, Inc. System and method for voice transmission over network protocols
US6535909B1 (en) 1999-11-18 2003-03-18 Contigo Software, Inc. System and method for record and playback of collaborative Web browsing session
US6671714B1 (en) 1999-11-23 2003-12-30 Frank Michael Weyer Method, apparatus and business system for online communications with online and offline recipients
US6324568B1 (en) 1999-11-30 2001-11-27 Siebel Systems, Inc. Method and system for distributing objects over a network
US6654032B1 (en) 1999-12-23 2003-11-25 Webex Communications, Inc. Instant sharing of documents on a remote server
US7136860B2 (en) 2000-02-14 2006-11-14 Overture Services, Inc. System and method to determine the validity of an interaction on a network
US6336137B1 (en) 2000-03-31 2002-01-01 Siebel Systems, Inc. Web client-server system and method for incompatible page markup and presentation languages
US6732100B1 (en) 2000-03-31 2004-05-04 Siebel Systems, Inc. Database access method and system for user role defined access
US7266502B2 (en) 2000-03-31 2007-09-04 Siebel Systems, Inc. Feature centric release manager method and system
US6577726B1 (en) 2000-03-31 2003-06-10 Siebel Systems, Inc. Computer telephony integration hotelling method and system
US6434550B1 (en) 2000-04-14 2002-08-13 Rightnow Technologies, Inc. Temporal updates of relevancy rating of retrieved information in an information search system
US6665655B1 (en) 2000-04-14 2003-12-16 Rightnow Technologies, Inc. Implicit rating of retrieved information in an information search system
US6842748B1 (en) 2000-04-14 2005-01-11 Rightnow Technologies, Inc. Usage based strength between related information in an information retrieval system
US7730072B2 (en) 2000-04-14 2010-06-01 Rightnow Technologies, Inc. Automated adaptive classification system for knowledge networks
US6763501B1 (en) 2000-06-09 2004-07-13 Webex Communications, Inc. Remote document serving
GB2380581A (en) 2000-07-11 2003-04-09 Launch Media Inc Online playback system with community bias
US7069231B1 (en) 2000-07-20 2006-06-27 Oracle International Corporation Methods and systems for defining, applying and executing customer care relationship plans
KR100365357B1 (ko) 2000-10-11 2002-12-18 엘지전자 주식회사 무선통신 단말기의 데이터 통신 방법
US7581230B2 (en) 2001-02-06 2009-08-25 Siebel Systems, Inc. Adaptive communication application programming interface
USD454139S1 (en) 2001-02-20 2002-03-05 Rightnow Technologies Display screen for a computer
US7310687B2 (en) 2001-03-23 2007-12-18 Cisco Technology, Inc. Methods and systems for managing class-based condensation
US7363388B2 (en) 2001-03-28 2008-04-22 Siebel Systems, Inc. Method and system for direct server synchronization with a computing device
US6829655B1 (en) 2001-03-28 2004-12-07 Siebel Systems, Inc. Method and system for server synchronization with a computing device via a companion device
US7174514B2 (en) 2001-03-28 2007-02-06 Siebel Systems, Inc. Engine to present a user interface based on a logical structure, such as one for a customer relationship management system, across a web site
US20030018705A1 (en) 2001-03-31 2003-01-23 Mingte Chen Media-independent communication server
US20030206192A1 (en) 2001-03-31 2003-11-06 Mingte Chen Asynchronous message push to web browser
US6732095B1 (en) 2001-04-13 2004-05-04 Siebel Systems, Inc. Method and apparatus for mapping between XML and relational representations
US7761288B2 (en) 2001-04-30 2010-07-20 Siebel Systems, Inc. Polylingual simultaneous shipping of software
US6763351B1 (en) 2001-06-18 2004-07-13 Siebel Systems, Inc. Method, apparatus, and system for attaching search results
US6711565B1 (en) 2001-06-18 2004-03-23 Siebel Systems, Inc. Method, apparatus, and system for previewing search results
US6728702B1 (en) 2001-06-18 2004-04-27 Siebel Systems, Inc. System and method to implement an integrated search center supporting a full-text search and query on a database
US6782383B2 (en) 2001-06-18 2004-08-24 Siebel Systems, Inc. System and method to implement a persistent and dismissible search center frame
US20030004971A1 (en) 2001-06-29 2003-01-02 Gong Wen G. Automatic generation of data models and accompanying user interfaces
US6978445B2 (en) 2001-09-28 2005-12-20 Siebel Systems, Inc. Method and system for supporting user navigation in a browser environment
US6724399B1 (en) 2001-09-28 2004-04-20 Siebel Systems, Inc. Methods and apparatus for enabling keyboard accelerators in applications implemented via a browser
US7761535B2 (en) 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US6993712B2 (en) 2001-09-28 2006-01-31 Siebel Systems, Inc. System and method for facilitating user interaction in a browser environment
US6826582B1 (en) 2001-09-28 2004-11-30 Emc Corporation Method and system for using file systems for content management
US7962565B2 (en) 2001-09-29 2011-06-14 Siebel Systems, Inc. Method, apparatus and system for a mobile web client
US8359335B2 (en) 2001-09-29 2013-01-22 Siebel Systems, Inc. Computing system and method to implicitly commit unsaved data for a world wide web application
US6901595B2 (en) 2001-09-29 2005-05-31 Siebel Systems, Inc. Method, apparatus, and system for implementing a framework to support a web-based application
US7146617B2 (en) 2001-09-29 2006-12-05 Siebel Systems, Inc. Method, apparatus, and system for implementing view caching in a framework to support web-based applications
US7289949B2 (en) 2001-10-09 2007-10-30 Right Now Technologies, Inc. Method for routing electronic correspondence based on the level and type of emotion contained therein
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US6804330B1 (en) 2002-01-04 2004-10-12 Siebel Systems, Inc. Method and system for accessing CRM data via voice
US7058890B2 (en) 2002-02-13 2006-06-06 Siebel Systems, Inc. Method and system for enabling connectivity to a data system
US7131071B2 (en) 2002-03-29 2006-10-31 Siebel Systems, Inc. Defining an approval process for requests for approval
US7672853B2 (en) 2002-03-29 2010-03-02 Siebel Systems, Inc. User interface for processing requests for approval
US6850949B2 (en) 2002-06-03 2005-02-01 Right Now Technologies, Inc. System and method for generating a dynamic interface via a communications network
US8639542B2 (en) 2002-06-27 2014-01-28 Siebel Systems, Inc. Method and apparatus to facilitate development of a customer-specific business process model
US7437720B2 (en) 2002-06-27 2008-10-14 Siebel Systems, Inc. Efficient high-interactivity user interface for client-server applications
US7594181B2 (en) 2002-06-27 2009-09-22 Siebel Systems, Inc. Prototyping graphical user interfaces
US20040010489A1 (en) 2002-07-12 2004-01-15 Rightnow Technologies, Inc. Method for providing search-specific web pages in a network computing environment
US7251787B2 (en) 2002-08-28 2007-07-31 Siebel Systems, Inc. Method and apparatus for an integrated process modeller
US7069497B1 (en) 2002-09-10 2006-06-27 Oracle International Corp. System and method for applying a partial page change
US9448860B2 (en) 2003-03-21 2016-09-20 Oracle America, Inc. Method and architecture for providing data-change alerts to external applications via a push service
US7904340B2 (en) 2003-03-24 2011-03-08 Siebel Systems, Inc. Methods and computer-readable medium for defining a product model
US7406501B2 (en) 2003-03-24 2008-07-29 Yahoo! Inc. System and method for instant messaging using an e-mail protocol
WO2004086198A2 (en) 2003-03-24 2004-10-07 Siebel Systems, Inc. Common common object
WO2004086197A2 (en) 2003-03-24 2004-10-07 Siebel Systems, Inc. Custom common object
US8762415B2 (en) 2003-03-25 2014-06-24 Siebel Systems, Inc. Modeling of order data
US7685515B2 (en) 2003-04-04 2010-03-23 Netsuite, Inc. Facilitating data manipulation in a browser-based user interface of an enterprise business application
US7412455B2 (en) 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US7620655B2 (en) 2003-05-07 2009-11-17 Enecto Ab Method, device and computer program product for identifying visitors of websites
US7409336B2 (en) 2003-06-19 2008-08-05 Siebel Systems, Inc. Method and system for searching data based on identified subset of categories and relevance-scored text representation-category combinations
US20040260659A1 (en) 2003-06-23 2004-12-23 Len Chan Function space reservation system
US7237227B2 (en) 2003-06-30 2007-06-26 Siebel Systems, Inc. Application user interface template with free-form layout
US7694314B2 (en) 2003-08-28 2010-04-06 Siebel Systems, Inc. Universal application network architecture
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US7290015B1 (en) 2003-10-02 2007-10-30 Progress Software Corporation High availability via data services
US7269590B2 (en) 2004-01-29 2007-09-11 Yahoo! Inc. Method and system for customizing views of information associated with a social network user
US8607322B2 (en) 2004-07-21 2013-12-10 International Business Machines Corporation Method and system for federated provisioning
US7289976B2 (en) 2004-12-23 2007-10-30 Microsoft Corporation Easy-to-use data report specification
US7747648B1 (en) 2005-02-14 2010-06-29 Yahoo! Inc. World modeling using a relationship network with communication channels to entities
US7945653B2 (en) 2006-10-11 2011-05-17 Facebook, Inc. Tagging digital media
US7827208B2 (en) 2006-08-11 2010-11-02 Facebook, Inc. Generating a feed of stories personalized for members of a social network
US8209308B2 (en) 2006-05-01 2012-06-26 Rueben Steven L Method for presentation of revisions of an electronic document
US8566301B2 (en) 2006-05-01 2013-10-22 Steven L. Rueben Document revisions in a collaborative computing environment
US9135228B2 (en) 2006-05-01 2015-09-15 Domo, Inc. Presentation of document history in a web browsing application
US7853881B1 (en) 2006-07-03 2010-12-14 ISQ Online Multi-user on-line real-time virtual social networks based upon communities of interest for entertainment, information or e-commerce purposes
US7779475B2 (en) 2006-07-31 2010-08-17 Petnote Llc Software-based method for gaining privacy by affecting the screen of a computing device
US8095531B2 (en) 2006-10-03 2012-01-10 Salesforce.Com, Inc. Methods and systems for controlling access to custom objects in a database
US7730478B2 (en) 2006-10-04 2010-06-01 Salesforce.Com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
US8082301B2 (en) 2006-11-10 2011-12-20 Virtual Agility, Inc. System for supporting collaborative activity
US8954500B2 (en) 2008-01-04 2015-02-10 Yahoo! Inc. Identifying and employing social network relationships
US8073850B1 (en) 2007-01-19 2011-12-06 Wordnetworks, Inc. Selecting key phrases for serving contextually relevant content
US8719287B2 (en) 2007-08-31 2014-05-06 Business Objects Software Limited Apparatus and method for dynamically selecting componentized executable instructions at run time
US8583615B2 (en) 2007-08-31 2013-11-12 Yahoo! Inc. System and method for generating a playlist from a mood gradient
US20090100342A1 (en) 2007-10-12 2009-04-16 Gabriel Jakobson Method and system for presenting address and mapping information
JP2009163324A (ja) * 2007-12-28 2009-07-23 Omron Corp 遠隔監視システム、端末管理サーバ、および端末管理サーバ制御プログラム
US8490025B2 (en) 2008-02-01 2013-07-16 Gabriel Jakobson Displaying content associated with electronic mapping systems
US8504945B2 (en) 2008-02-01 2013-08-06 Gabriel Jakobson Method and system for associating content with map zoom function
US9449333B2 (en) 2008-02-01 2016-09-20 Gabriel Jakobson Online advertising associated with electronic mapping systems
US8032297B2 (en) 2008-05-08 2011-10-04 Gabriel Jakobson Method and system for displaying navigation information on an electronic map
US8014943B2 (en) 2008-05-08 2011-09-06 Gabriel Jakobson Method and system for displaying social networking navigation information
CA2665669A1 (en) 2008-05-09 2009-11-09 Research In Motion Limited Method for cell selection in a radio access network
US8646103B2 (en) 2008-06-30 2014-02-04 Gabriel Jakobson Method and system for securing online identities
US8510664B2 (en) 2008-09-06 2013-08-13 Steven L. Rueben Method and system for displaying email thread information
US8661056B1 (en) 2008-11-03 2014-02-25 Salesforce.Com, Inc. System, method and computer program product for publicly providing web content of a tenant using a multi-tenant on-demand database service
US9973582B2 (en) * 2009-10-19 2018-05-15 Tritan Software International Method and apparatus for bi-directional communication and data replication between multiple locations during intermittent connectivity
US8510045B2 (en) 2009-12-22 2013-08-13 Steven L. Rueben Digital maps displaying search-resulting points-of-interest in user delimited regions
US8925041B2 (en) 2010-04-01 2014-12-30 Salesforce.Com, Inc. System, method and computer program product for performing one or more actions based on a determined access permissions for a plurality of users
US9031969B2 (en) * 2010-06-29 2015-05-12 Oracle International Corporation Guaranteed in-flight SQL insert operation support during an RAC database failover
US8566654B2 (en) 2010-08-13 2013-10-22 Salesforce.Com, Inc. Debugging site errors by an admin as a guest user in a multi-tenant database environment
US8943002B2 (en) 2012-02-10 2015-01-27 Liveperson, Inc. Analytics driven engagement
US8769017B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system having document object model element interaction detection
US8769004B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system integrated with social networks
US8756275B2 (en) 2012-02-17 2014-06-17 Zebedo Variable speed collaborative web browsing system
GB2515192B (en) * 2013-06-13 2016-12-14 Box Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US20150215389A1 (en) 2014-01-30 2015-07-30 Salesforce.Com, Inc. Distributed server architecture

Also Published As

Publication number Publication date
US20170293632A1 (en) 2017-10-12
EP3229151B1 (en) 2020-10-28
EP3229151A1 (en) 2017-10-11
US10678757B2 (en) 2020-06-09
JP2017188117A (ja) 2017-10-12

Similar Documents

Publication Publication Date Title
JP6917175B2 (ja) 分散システムにおける一意キーの確実な生成
US11941017B2 (en) Event driven extract, transform, load (ETL) processing
JP6856696B2 (ja) コンテナの管理及びスケジューリングのためのシステム
US11868359B2 (en) Dynamically assigning queries to secondary query processing resources
US9122694B1 (en) Systems and methods for highly scalable system log analysis, deduplication and management
US20200050694A1 (en) Burst Performance of Database Queries According to Query Size
US20180060133A1 (en) Event-driven resource pool management
US10169417B2 (en) Detecting logical relationships based on structured query statements
US20160188377A1 (en) Classification based automated instance management
US10303678B2 (en) Application resiliency management using a database driver
JP2016126454A (ja) 監視支援システム、監視支援方法、および監視支援プログラム
CN113836237A (zh) 对数据库的数据操作进行审计的方法及装置
US10320896B2 (en) Intelligent mapping for an enterprise grid
US20180225325A1 (en) Application resiliency management using a database driver
US10228958B1 (en) Systems and methods for archiving time-series data during high-demand intervals
US20140337494A1 (en) Transferring services in a networked environment
JP6568232B2 (ja) 計算機システム、及び、装置の管理方法
JPWO2018061070A1 (ja) 計算機システム及び分析ソースデータ管理方法
JP6106484B2 (ja) サービス利用支援システム及びクライアント端末
KR20220056395A (ko) 로그 데이터의 적재를 모니터링하기 위한 방법 및 장치
CN116028307A (zh) 故障数据监控方法、装置、系统及介质
JP2014186681A5 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200402

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210719

R150 Certificate of patent or registration of utility model

Ref document number: 6917175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150