2

各ユーザーが、たとえば委任によって他のユーザーから評判を得ることができるソーシャル ネットワークを想像してみましょう。したがって、A が B に委任するとき、最初に A と B の評判が 1 であるとすると、A は 0、B は 2 になります。その後、B は C に委任できます。

また、委任にはスコープがあり、スコープはネストできます。したがって、A は、すべてのトピック、プログラミングのみ、または C# のみに関する評判を委任できます。また、プログラミングは B に委任できますが、C# は C に委任できます。つまり、最終的な評判は、特定の範囲によって異なります。

そのため、レピュテーションを計算するためにトラバースする必要がある一種の有向グラフ構造 (おそらくツリーですが、サイクルについてはまだ明確ではありません) が得られます。

私はそれを DDD の原則でモデル化しようとしていますが、ここでの集計が何であるかはわかりません。

集約は一貫性の単位であるため、委譲ツリー/グラフがその候補であると思います。ただし、これは集合体が非常に大きくなることを意味します。スコープの問題は、集計の境界が明確でなくなるため、さらに複雑になります。C# での委任は、プログラミングでの委任を含む集約の一部ですか?

ユーザーはどうですか?集約として、他のユーザーへの/からの参照 (委任) を保存する必要があります。繰り返しますが、特定のユーザーが属する集計はどれですか?

別の問題は、評判を効率的に計算する方法です。この場合、グラフデータベースはリレーショナルよりも適切だと思いますが、それが唯一の良い答えですか?

4

1 に答える 1

1

のルート集約は、不変条件を強制することを目的としています。あなたが私たちに知らせてくれた委任の規則は、不変条件の 1 つのセットです。必要な他の不変条件がわからない場合、適切なルート集約が何であるかを判断するのは困難ですが、提示された「ユーザー」を単純に見てみると、すべての委任ルールを不変条件として適用するのに最適なルート集約のように思えます。ユーザーは 1 つ以上の委任範囲を持つことができ、それ自体がルート集合体である場合があります。ユーザーは、委任の規則に基づいて別のユーザーに委任することができ、別のユーザーは同じ規則に基づいて委任することができます。これにより、すべての不変条件を強制することができ、DDD のルールの下で (他の) ユーザーへの参照を保存することに問題はありません。

ドメイン固有のルールを一貫して適用する方法を尋ね続けると、ルート集計が見つかります。

別の質問について: グラフ データベースは関係データベースよりも優れたアイデアのように思えますが、限られた情報ではわかりにくいです。この質問を個別に投稿し、リレーショナル データベースとグラフ データベースに関する考慮事項を含めることをお勧めします。

于 2013-06-16T21:00:20.957 に答える