この質問の当然の帰結として、一度に 1 つのテーブルに常にアクセスするために RDMBS を使用して結合の最適化と体系的な非正規化を行うことの利点について相談し、伝えることができる優れた比較研究があるかどうか疑問に思っていました。
具体的には、次の情報が必要です。
- パフォーマンスまたは正規化と非正規化。
- 正規化されたシステムと非正規化されたシステムのスケーラビリティ。
- 非正規化の保守性の問題。
- 非正規化によるモデルの一貫性の問題。
私がここでどこに行くのかを見るためのちょっとした歴史: 私たちのシステムは社内のデータベース抽象化レイヤーを使用していますが、それは非常に古く、複数のテーブルを処理することはできません. そのため、すべての複雑なオブジェクトは、関連する各テーブルで複数のクエリを使用してインスタンス化する必要があります。システムが常に単一のテーブルを使用するようにするために、テーブル全体で体系的な非正規化が使用され、場合によっては 2 ~ 3 レベルの深さでフラット化されます。nn 関係に関しては、データ モデルを慎重に作成して、そのような関係を回避し、常に 1-n または n-1 にフォールバックすることで、問題を回避したようです。
最終結果は、顧客がしばしばパフォーマンスについて不満を述べる、入り組んだ過度に複雑なシステムです。そのようなボトルネックを分析するとき、彼らはシステムが基づいているこれらの基本的な前提に決して疑問を抱かず、常に他の解決策を探します.
私は何か見落としてますか ?私は全体の考えが間違っていると思いますが、どういうわけかそれを証明 (または反証) するための反論の余地のない証拠を欠いています.アプローチは間違っています(一貫したデータモデルについて、私があまりにも妄想的で独断的であることを私に納得させます)。
私の次のステップは、独自のテスト ベンチを構築して結果を収集することです。
---- 編集注 : システムは最初、データベース システムのないフラット ファイルで構築されました...クライアントが Oracle を使用するシステムを主張したため、後でデータベースに移植されました。リファクタリングは行わず、既存のシステムにリレーショナル データベースのサポートを追加しただけです。フラット ファイルのサポートは後に削除されましたが、データベースを活用するためのリファクタリングをまだ待っています。