2

私のシステムでは、従業員ログのリクエストとリクエストは機器に関するものです。

リクエストを表示する必要があるたびに従業員と機器のドキュメントが読み込まれないようにするために、リクエストドキュメントの従業員名と機器の在庫番号、メーカー名、モデルを非正規化します。

私はここで間違った方向に進んでいますか?これはアンチパターンですか?

そうすると、従業員の名前が変更されたり、機器の在庫番号が変更されたりする非常にまれなケースで、影響を受けるすべてのリクエストドキュメントを更新する必要があることに気付きました。


PS:ドキュメントデータベースモデリングガイドラインへのリンクもいただければ幸いです。

4

3 に答える 3

2

スライ、これは本当にあなたの必要な速度のレベルに依存します。シャーディングなしでデータベースが1つだけで、非常に高速.Includeなパフォーマンスで問題がない場合は、単純化のために非正規化して使用しないでください。ただし、それらはシャーディングされたセッションでは機能しないため、非正規化を行って、Lightningパフォーマンスを実現することをお勧めします。

.Include私の非常に個人的な意見は、それを使用しない本当に正当な理由がない限り、常に一緒に行くべきだということです。

于 2012-02-21T21:14:00.093 に答える
1

これは非正規化に関する良い短い投稿です。

要約すると、更新する予定がない場合は非正規化で問題ありません。また、パフォーマンスの利点がストレージの欠点を上回ります(通常はそうなります)。

于 2012-02-21T21:17:30.597 に答える
1

スライ、あなたの場合、情報が変更された場合、本当に情報を更新する必要がありますか?Sally Mayが2011年に新しいラップトップを要求した場合、その要求を2012年にSally May-Jonesに変更することは意味がありますか?

通常、非正規化が必要な場合は、パフォーマンスのためではありません(これは要因ですが、Includeはそれをうまく処理できます)。データの特定の時点のビューを取得する必要があります。

于 2012-02-22T04:25:20.927 に答える