コマンドクエリの責任分離/イベントソーシングアーキテクチャは、私が始めようとしているプロジェクトにはっきりと適合しています。主な利点は、監査履歴、スケーラビリティ、多数のチーム間で非同期互換UIを実施し、これらのトランザクションを読み取りデータベースから分割し、イベントキューを介して断続的に接続されたフィールドオフィスへの状態の伝達を容易にし、重要なビジネスロジックの変更に対処することですシステム全体の寿命を通じて。CQRSアーキテクチャの最適化とバリエーション
しかし、CQRS/ESが問題になる領域があります。例えば、1億人に数値IDを割り当て、最終的な一貫性が受け入れられないユーザーセキュリティなどです。また、本質的にCRUDであり、CQRS/ESの恩恵を受けないシステムの領域もあります。最後に、さまざまなチームや企業に多数の開発者を迎え、CQRS/ESコンピテンシーを必要としない分野を持つことは良いことです。ハイブリッドアプローチを採用することは可能ですか?一部の地域はイベントソースではありませんか?関連するテーブルを読み込み側と書き込み側の両方で同期させることはできますか?
CQRSアーキテクチャの集約エンティティは、スナップショットキャッシュの無効化を簡素化しますか?キャッシュされる可能性のある集約エンティティを更新するイベントは、無効化されたエンティティによってリッスンされる可能性があり、集約エンティティはリレーショナルエンティティよりも粗く、書き込みイベントを区別できるため、この問題は解決できますか?
私は約10億回のイベントを予定しており、約4年間の歴史を追跡する必要があります。古いイベントをスナップショットやアーカイブできますか?
イベントソーシングの度はありますか?たとえば、1つのオンラインストアシステムAddLineItem
イベントには、ユニットあたりの広告申込情報の価格が含まれていますが、請求先の商品名をプル&レンダリングするには、読者側に依頼してください。別のオンラインストアは、イベントデータに名前を含めることができます。どのようにイベントに含めるかを選択しますか?健康保険では、もし何の場合に分析が実行できるのかを制限するかもしれません - 被保険者の年齢を含めなければ、それを必要とする政策を実現可能にシミュレートすることはできません。
イベントに関するイベントをモデル化する興味深い方法はありますか?たとえば、管理者は、将来、ある日に製品の価格が変更されることをシステムに入力します。スナップショットは価格のタイムラインになると思います。更新されたProductPriceChangedイベントを追加することはできますか? 「もしかしたら」シナリオを実行するときに、そのような出来事を偽ってもらえますか?
CQRS/ESは、システムを将来のビジネスプロセスの変更に容易に適応させるために、しばしば主張されています(この集計は、バージョン番号と並行性検出の問題を回避するためにほとんど変更されません)。私は、ユビキタス言語でイベントをリストするコマンドは、それらの議論や再構成を容易にし、イベントソーシングはRDBMSモデルのいくつかの剛性を取り除くという議論を理解しています。しかし、何も変更されません以内にイベントは、イベントの再生を中断させますか?システムが変更されると、多くのバージョニングされたイベントは終了しませんか?たとえば、クライアントが基準を変更してゴールドカードホルダーであるかどうかを評価するオンラインストアでは、すべてスナップショットできますか?これらの変更をどのようにポストデートしますか?同様に、注入された依存関係のどれもがビジネスロジックに影響を与えることはありません。そうでなければ再生を中断するように、依存性注入に注意する必要がありますか?
なぜそれが.NETの世界に関連しているのか、業界の他の分野ではあまり人気がないのですか?
巨大なちょうど読書のためにありがとう。
「それは悪い考えですね」 - 非ES集約エンティティを永続させることをどのように示唆しますか? 'とにかく範囲内で'うまく言った! 「人生の終わりである集合体の歴史をアーカイブする」 - 十分ではありませんが、人生の終わりは文字通り死ぬ4年後です。 「ビジネス不変のビジネスを維持するために必要な状態」 - これがこの質問にどのように答えるかを忘れる可能性があります。ビジネス不変式が注文明細である場合、商品名または単価が含まれますか? – Chris
「間違ったスペル」 - 私は故意にPriceChangeScheduledから**出来高のある** PriceChangedにイベントを変更しました。これは、その日付に達するとリプレイでのみ使用されます。 「システムによって行われた決定はイベントによって文書化されている」 - あなたは私の理解のギャップをはぎ取った。つまり、集合体のビジネスロジックは変わっても、過去の出来事は古い方法で処理する必要がある。あなたの答えをもう一度読んでヤングの本を読んでいきます。多くの洞察力が得られました。本当にありがとうございます。 – Chris