StackOverflow を検索しましたが、このディスカッションが見つからなかったので、コミュニティから意見を得るためにここに投稿したいと思います。また、この議論はおそらく他のチームにも当てはまると思うので、これが有用な投稿になることを願っています. これが重複するトピックである場合はお知らせください。削除します。
背景:
私は、現在約 15 年前のかなり大規模な契約ソフトウェア プロジェクトに取り組んでいます。このシステムは、SQL Server データベースと Windows 上で動作する MFC/C++ で記述されたシック クライアントを備えたクライアント サーバー スタイルのアプリケーションです。このアプリケーションの API は、COM に完全にカプセル化されているため、完全にフラットで非オブジェクト指向です。データベースには約 780 のテーブルがあり、アプリケーションには 700 万行を超えるコードがあります。過去 8 年ほどの間にテーブルの大部分が追加され、新しい拡張要求がパイプラインに追加されたため、すぐに速度が低下することはありません。元のアーキテクチャのアプローチは、クラス階層にあるように表されたテーブル/列にすべてを格納することでした。データを永続化するために ORM フレームワーク (Hibernate、Entity など) が正確にどのように機能するか。
過去数年間、私たちのクライアントは、システムが本質的に成長しきれなくなり、COM によって大きく制限されているため、システムを再設計してアプリケーションを完全に書き直したいという要望を表明してきました。システムを再設計して最新化するチャンスがあります。1 つの疑問は、データベースのスケーラビリティについてです。
主な質問: 現在 780 のテーブルがあり、そう遠くない将来に 1000 のテーブルを壊すことが予測されているため、このアーキテクチャ アプローチを使用し続けるか、10 ~ 20 のテーブルを作成してほとんどすべてのデータをXMLとしてのBLOB列? おそらく、700 のテーブルのうち 600 は、たくさんの子供や子供の子供などを持つ片親クラス用です。
私の考え: 私は両方の方法でプログラムを作成しましたが、データを XML として BLOB に格納することでパフォーマンスが大幅に向上すると思います。データを挿入および取得するために何百または何千ものクエリが実行されることはないからです。私の経験から、XML を解析するパフォーマンスは、1000 テーブルのデータベースを処理するよりもはるかに高速です。XML アプローチのもう 1 つの利点は、通常はスキーマを変更する必要がないことです。一方、XML にもパフォーマンスの問題があります。
アイデア、事実、このトピックに関する研究を知っている場合は、投稿してください。すべての情報は役に立ち、高く評価されます。
前もって感謝します!