イベントストアは、イベントの保存に最適化された データベースの一種です。
概念的には、イベント ストアは、エンティティ、ドシエ、またはポリシーに影響を与えるイベントのみを記録し、その履歴の任意の時点でのエンティティの状態は、その原因となったイベントを順番に再生することで再構築できます。イベント (およびそれに対応するデータ) は、データベースに保存する必要がある唯一の「実際の」事実です。他のすべてのオブジェクトはこれらのイベントから派生できます。つまり、必要に応じてランタイムコードによってメモリ内にインスタンス化されます (ユーザー インターフェイスに表示するなど)。理論上は、記録されたイベント データを集約するオブジェクトはデータベースに保存されません。代わりに、これらのオブジェクトはイベント履歴を走査することで「オンザフライ」で構築されます。集約されたオブジェクト インスタンスが不要になったら、単に破棄 (メモリから解放) できます。
保険契約の例
例えば、データベースのイベントストアの概念は、保険証券や年金関係書類に適用できます。これらの証券や書類では、書類やポリシーを構成する各オブジェクト(個人、パートナー、雇用など)のインスタンス化を、現実世界のイベントに基づいて導出し、メモリ内でインスタンス化することができます。
二重タイムライン
イベント ストア データベースの重要な部分は、各イベントに二重のタイムラインがあることです。これにより、イベント ストアは以前にイベント ストア データベースに入力されたイベントの エラーを修正できます。
2つの日付は次のとおりです。
- 有効日付は、イベントが有効になった日付です。
- 取引日は、イベントがデータベースに入力された日付です。
エラー訂正
イベントストアデータベースのもう一つの重要な点は、保存されたイベントは変更できないことです。一度保存されると、エラーのあるイベントも変更できなくなります。これらのイベントを変更(または、より正確には修正)する唯一の方法は、新しい値を持つ新しいイベントをインスタンス化し、二重タイムラインを使用することです。修正イベントは、元のイベントの新しい値と、修正されたイベントのイベントデータを持ちますが、トランザクションの日付は異なります。このメカニズムにより、修正が行われる前の期間も含め、あらゆる時点における再現性が確保されます。また、必要に応じて、エラーのあるイベントに基づく状況を再現することも可能です。
メリットとデメリット
イベント ストアの概念の利点の 1 つは、日付が前のイベント (前のイベントより前に有効になり、それを無効にする可能性のあるイベント) の影響の処理がはるかに簡単になることです。
イベント ストアにより、エラーのある状況をロールバックして新しい正しい状況をロールアップする必要がなくなるため、コードが簡素化されます。
欠点としては、特定のドシエまたはポリシーのサービス呼び出しが受信されるたびに、コードがイベントに基づいてメモリ内のすべてのオブジェクトを再インスタンス化する必要があることが挙げられます。
通常のデータベースと比較して
通常のデータベースでは、日付が遡ったイベントを処理して以前の誤ったイベントを修正するのは、多くの場合、以前の誤ったトランザクションとオブジェクトをすべてロールバックし、新しい正しいトランザクションとオブジェクトをロールアップする必要があるため、非常に困難です。イベントストアでは、新しいイベント(およびそれに対応するファクト)のみが保存されます。その後、コードはメモリ内の新しいファクトに基づいてトランザクションとオブジェクトを再決定します。
参照
- 時間データベース、トランザクション、有効性、または決定を決定するために時間インスタンス(過去、現在、未来など)に関連するデータを保存するデータベース
外部リンク
- DB-Engines イベントストアの人気ランキング(毎月更新)