問題タブ [aggregates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
domain-driven-design - ドメインエンティティは常に全体をロードする必要がありますか?
パスワード履歴機能を追加しようとしているカスタムASP.NETメンバーシッププロバイダーがあります。ユーザーのパスワードはX日後に期限切れになります。次に、パスワードを過去のX変更で使用されていないパスワードに変更する必要があります。
現在のパスワードのパスワード属性を持つUserエンティティがすでにあります。これは、データベースのUserテーブルにマップされます。以前のパスワードのリストが必要だったので、UserIdへのFK参照とともにこの情報を格納するためにUserPasswordテーブルを作成しました。
パスワードは値オブジェクトであり、ユーザーの外部では意味がないため、ユーザーをルートとして、ユーザー集合体の内部に属します。しかし、ここに私のジレンマがあります。リポジトリからユーザーを取得するとき、以前に使用したすべてのパスワードを常に取得する必要がありますか?99%の場合、古いパスワードは気にしないので、Userエンティティが必要になるたびにパスワードを取得することは、dbのパフォーマンスを上げるために馬鹿げたことのように思えます。Userエンティティがコンテキストから切断されているため、レイジーローディングを使用できません。
PasswordHistoryエンティティを作成することを考えていましたが、上記の理由により、パスワードは実際にはエンティティではありません。
そこにいるDDDの専門家はこの状況にどのように対処しますか?
ありがとう。
編集1:これをもう少し検討した後、これは本質的に遅延読み込みに関する質問であることに気付きました。具体的には、切断されたエンティティで遅延読み込みをどのように処理しますか?
編集2:LINQtoSQLを使用しています。エンティティは、CodePlexからこれを使用してコンテキストから完全に切り離されます。
entity-framework-4 - EntityFramework4.0を使用したリポジトリパターンの集約および集約ルート
データモデルでリポジトリパターンを実装することについて質問があります。オンラインで検索してたくさんの投稿を調べましたが、疑問を解消する答えは見つかりませんでした。基本的に、ドメインモデルは次のようになります。多くの子オブジェクトを持つクライアントオブジェクトがあり、一部の子オブジェクトには子オブジェクトがあり、いつでも親オブジェクトのないこれらの子オブジェクトは不要であり、作成されません。アプリケーションの任意の意味。
そしてそれはこのようになります。上記の表現から、いくつかのアグリゲートがあり、ルートはクライアントオブジェクトであるため、クライアントであるアグリゲートルートレベルでリポジトリを作成することを考えていました。私の質問は、他の集計をどのように処理するかです。誰かが私にこれに関するいくつかのアイデアを提供できますか?
ありがとう、アジェイ。
postgresql - count() でゼロ値を返す方法
count(a.thread_id) = 0 の行を返すにはどうすればよいですか?
postgresql - 複数のパラメータを持つ PostgreSQL の集計
私は、PostgreSQL (8.4 または 9.1) で 1 つ以上のオプション パラメーターを受け入れる集計を作成することに頭を悩ませてきました。
例としてPL/R
、p 番目の分位数を計算するための拡張機能を作成し0 <= p <= 1
ます。これは のようquantile(x,p)
になり、クエリの一部として:
どこでTABLE (category:text, x:float)
。
提案?
sql - マルチアグリゲート、マルチフィルター、シングルテーブルSQL
次のシミュレートされた表にはcust_nbr
、注文番号を表す注文の詳細が含まれています。注文に90000が含まれてitem_nbr
いる場合、90000の価格が他のアイテムと税金の合計よりも高いかどうかを知る必要があります。このテーブルには数十万のレコードがあります。私はTeradataを使用しています。
サンプルデータ:
クエリは次のことを行う必要があります。
したがって、予備的な結果は次のようになります。
次に、予備結果の各レコードについて、から90000の価格を減算し、購入が90000の価格よりも低い場合にのみ結果を返す必要がitem_nbr
ありpurchase
ますitem_nbr
。net_cb
したがって、私の最終結果は次のようになります。
sql-server - 同じ select ステートメント内の集計クエリ
5 つの列を返す select ステートメントがあります (1 ~ 2 分かかります)。この列の 1 つは色です (つまり、赤、青、黄色の 3 色のみ)。ここで、同じselectステートメントで、赤の行数、青の行数、黄色の行数を表示したいと思います。
Selectステートメントはこれです
そして、私はこのような出力が欲しい
助けはありますか?
sql - postgre 集計パフォーマンス
Postgres (8.3) の単純な集計パフォーマンスに問題があることに気付きました。問題は、(customer_id,order_id) によって一意であるテーブル (たとえば 2 億行) があるselect customer_id,max(order_id) from larger_table group by customer_id
場合、次のことを行う単純な Java/JDBC プログラムよりもクエリが桁違いに遅くなることです。
1) 空の HashMap customerMap を初期化します (これは ID -> 最大注文サイズをマップします) 2) 「select customer_id,order_id from large_table」を実行し、ストリーミング結果セットを取得します 3) 結果セットを反復処理し、すべての行で次のようなことを行います以下:
このパフォーマンスの違いは予想されますか? 上記は内部で起こっていることにかなり近いと思うので、そうは思わないでください。データベースに何か問題がある/正しく調整されていないという証拠ですか?
java - DDD: 集計全体で制約を維持する
現在も DDD について読んで学んでおり、現在取り組んでいるプロジェクトに適用しようとしています。私はまだ Aggregates に頭を悩ませようとしていて、興味深い質問に出くわしました。
2 つの集合体があり、1 つにはルート用のアカウント エンティティがあり、もう 1 つにはルート用のユーザー エンティティがあるとします。
アカウントはユーザーなしでは作成できませんが、ユーザーは作成できます。そのため、両方が独自の集計のルートとして機能します。Aggregates には他のエンティティが含まれますが、それは私の質問にとって重要ではないことに注意してください。
いくつかのビジネス ルール: 1) アカウントが作成されたら、それをユーザーに関連付ける必要があります。ユーザーが存在しない場合は、最初に作成する必要があります。
2) アカウントが削除された場合、関連するユーザーも削除する必要があります。
3) ユーザーの作成時に、アカウントに関連付ける必要はありません。
3) ユーザーが削除されるとき、それがアカウントに関連付けられている場合は、それも削除する必要があります。
Account と User は独自の集合体を形成するため、おそらく独自のリポジトリが存在します。つまり、標準の Add、Delete、Find、および Delete メソッドは、これらのリポジトリごとに定義されます。
これらのシナリオを考えると、次のことを達成するための最良の方法は何ですか: 1) アカウントが作成されたら、そのユーザーのプロパティでメソッドを呼び出して、ユーザーが存在することを確認することを考えました。これは正しいですか?
2) アカウントが削除された場合、関連するユーザーも削除するにはどうすればよいですか。アカウントリポジトリから?しかし、それはユーザー リポジトリでコードを複製するだけではないでしょうか? それとも、リポジトリは相互に参照して呼び出すことができますか?
3) ユーザーが削除された場合、それがアカウントに関連付けられているかどうかを判断し、コードを複製せずに削除するための最良の方法は何ですか (おそらく 2 番目の質問に似ています)。
ロジックが 2 つのエンティティまたは集計にまたがる場合は、サービスの使用を検討することをどこかで読みました。しかし、クライアント (API が進化し、ユーザーが将来的に他のプレゼンテーションを使用すると仮定すると) がサービスをバイパスして単にリポジトリを呼び出すのを止めているので、私はそれに満足していませんか?
更新 1:
これはおそらく関連する質問であることに気付きました:集約ルート間の関係と制約をどのように強制する必要がありますか?
sql - SQLでの集計関数の使用
Hoeは、1つのクエリからのVIEWを使用せずに次のことを実行できます。
ここで、N_DEPTは、DID、MANAGERID、およびBUDGETという名前の列を持つ元のテーブルです。
最大予算を管理するMANAGERIDを取得したい。マネージャーは複数の部門を管理できます。DIDは、このテーブルの主キーです。
これどうやってするの?
repository - ドメイン駆動設計と集約参照
ドメインモデルを設計していますが、うまくいかないことがあります。
私は主な骨材から始めます。他のアグリゲートへの参照があり、それらの他のアグリゲートはより多くのアグリゲートも参照します。メインアグリゲートから開始して、ホールドメインモデルを移動できます。
私が目にする問題は、アグリゲートのすべてのインスタンスをメモリに保持することです。
それは良いデザインですか?遅延読み込みでメモリの問題を解決することはできますが、もっと深刻な問題があると思います。
集約参照に関して別の質問があります。他のアグリゲートへの参照を遅延ロードする必要がありますか?その場合、私は彼らのリポジトリを使用することはほとんどありません。それは大丈夫ですか?