オフライン クライアントをサポートするために、マルチバージョン同時実行制御を CQRS-DDD システムに適合させる方法を評価したいと考えています。
CouchDB から学んだことで、各エンティティにバージョン フィールドを提供したくなりました。ただし、ベクトル クロックのような他のバージョン同時実行アルゴリズムがあります。これにより、エンティティやイベントごとにこのバージョンの概念を公開するべきではないのではないかと思いました。
残念ながら、私が目にした実装のほとんどは、ソフトウェアが単一のサーバー上で実行され、イベントのタイムスタンプが 1 つの信頼できるソースから取得されるという前提に基づいています。ただし、一部のイベントがリモートおよびオフラインで生成される場合、ローカル クライアントのクロック オフセットに問題があります。その場合、通常のタイムスタンプは、イベントを順序付けするための信頼できるソースではないようです。
これにより、タイムスタンプに基づいていない何らかの形式のMVCCソリューションを評価する必要がありますか?
遅延した一連のイベントを中央サーバーと同期するために、オフライン CQRS クライアントが評価する必要がある実装の詳細は何ですか?
オープンソースの良い例はありますか?
私の DDD エンティティや CQRS クエリ DTO はバージョンパラメータを提供する必要がありますか?