私は最近CQRSについてちょっと読んできましたが、私はコマンドの正しい自動番号付き識別子をどのように生成するのだろうと思いました。 indentiferがguidの場合は、Guid.NewGuid()を実行してIDを生成できますが、自動番号付きintテーブルで安全な一意の新しい番号を生成するにはどうすればよいでしょうか?私が最初に考えたのは、あなたが書いているテーブルでmaxを選択できるということです。しかし、2人のユーザが同時に書込みを試みていて、どちらも次の安全なIDを持っていると思うとどうなりますか?キューの最初のものに2番目の書き込み要求を書き込み、拒否させ、書き込み状態を確認するときに再試行パターンを実装しますか?データベース設計を再検討することは選択肢ではないと仮定しましょう。CQRSでは、正しい自動番号付きIDをどのように生成しますか?
答えて
このポストを参照してください。ここでは、未使用のidsのブロックを割り当てて、割り当てられたIDを使用して識別子として供給することができます。このアプローチには長所と短所があります。あなただけのシーケンス/ AUTO_INCREMENTから次のIDを選択するDBにリレーすることはできません
http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/
データベースに次のIDを割り当てることを望まない場合は、ドメインモデルのどこかでIDを割り当てる必要があります。ドメインモデルでは、制約は集約によって保護されます。あなたの場合、固有の番号付けは制約なので、一意のIDを生成するために集約を使用する必要があります。
ちなみに、コマンドの一意のIDを生成する必要はありません。コマンドは、ビジネスの観点からのユースケースを表します。固有の連続したギャップのないIDを持つコマンドが必要な場合、インフラストラクチャの要件がドメインに漏洩しています。これは、悪い設計上の決定を示す明確なコードの匂いです。
私は、CQRSパターンが意味を成すいくつかの場所を持つ15歳のアプリを開発しています。しかし、このアプリはほとんどのテーブルで自動ナンバーのプライマリキーで詰まっています。したがって、CQRSパターンを実装したモジュールは、既存のデータベース構造と互換性がなければなりません。私はCQRSパターンでモジュールを構築する自由は持っていますが、設計の特定の側面に影響を与える自由はありません。私が自然の鍵を使用したい/使用できないかのように聞こえますが、私は全体的なデザインにも影響を及ぼさずに運が悪いです。 –
- 1. 自動番号付きリストの作成
- 2. 自動PHPの特定の番号からコード(ID)を生成
- 3. Spring MVCでの自動一意ID番号の生成方法
- 4. 自動番号付けをAcumaticaの既存の自動番号付けシーケンスに変更するにはどうすればよいですか?
- 5. データベース番号の自動番号付けまたはカスタム番号
- 6. グリッドビューでシリアル番号を自動生成
- 7. 重複しない番号/ IDを生成するにはどうすればよいですか?
- 8. 自動生成と自動インクリメントのビルド番号の違いは何ですか?
- 9. JDBCで自動番号付きバッチインサートを実行するにはどうすればよいですか?
- 10. スプリングデータcouchbaseではどのようにIDが自動生成されますか?
- 11. wpfを使用してデータグリッドでシリアル番号を自動生成しますか? ?
- 12. PHPで正しい注文番号を生成するには?
- 13. ユニークな番号を自動生成JAVA
- 14. 自動生成されたID番号をテキストボックスにコピーする方法は?
- 15. ID番号の生成
- 16. ID付きヘッダーへのオンホバーパーマリンクを自動的に作成するにはどうすればよいですか?
- 17. 'xxx0000'、 'xxx0001'のようなID番号の生成方法は?
- 18. jQuery自動見出し番号付け
- 19. ANTビルドファイルはどのようにして生成されたJavadocにバージョン番号を挿入できますか?
- 20. グループごとにどのようにID番号を取得できますか?
- 21. FPDF-列に自動インクリメントされたシリアル番号を付けるにはどうすればよいですか?
- 22. (Excel)自動番号付け
- 23. VS2005:ビルド番号を自動的に生成する方法は?
- 24. linux tmpfsでinode番号はどのように生成されますか?
- 25. データベースからの番号を自動生成するC#
- 26. Mediawiki:自動番号付きテーブルの作成
- 27. 番号を昇順に自動生成する方法はありますか?
- 28. どのようにRウィスカーのテンプレートエンジンを使用して改行と番号付きリストを生成する
- 29. 自動生成ID付きオブジェクトを一括挿入しようとするとNonUniqueObjectExceptionが発生する
- 30. MS CRMでの自動番号付け
? –
データベースがそれを処理するのではなく、自分で行うという付加価値は何ですか? –
データベースに自動的に実行させる場合、書き込み操作の状態を確認するためのIDはありません。 –