私が勤務先にいる数年間で、アンチパターンと見なすものへの明確な傾向に気づきました。それは、内部データをXMLの大きな文字列として維持することです。私はこれが多くの異なる方法で行われるのを見てきましたが、2人の最悪の犯罪者は非常に似ていました。
Webサービス
最初のアプリケーションであるWebサービスは、SQLデータベース内の潜在的に大量のデータへのアクセスを提供します。起動時に、データベースから多かれ少なかれすべてのデータを引き出し、XMLとしてメモリに保存します。(3回。)このアプリケーションの所有者は、これをキャッシュと呼びます。私はそれを遅いと呼んでいます。なぜなら、これに対処している間に遭遇したすべてのパフォーマンスの問題は、このことを直接追跡できるからです。(これは企業環境であるため、クライアントがサービスではなくパフォーマンスの失敗のせいにされるのは当然のことです。)このアプリケーションはXMLDOMを使用します。
インポーター
2番目のアプリケーションは、サードパーティのデータベースからのエクスポートの結果として生成されたXMLファイルを読み取ります。目標は、このデータを(私たちが所有する)独自のシステムにインポートすることです。これを実行するアプリケーションは、XMLファイル全体を読み込み、インポートシーケンス全体を通じてXMLファイルのコピーを少なくとも2つ、場合によっては4つ保持します。データは操作、変換、およびインポートが行われる前に構成が行われる可能性があるため、インポーターはこのデータを生涯にわたってXML形式で所有することに注意してください。当然のことながら、このインポーターは、適度なサイズのXMLファイルが提供されると爆発します。このアプリケーションは、そのコピーの1つにのみXML DOMを使用し、残りはすべて生のXML文字列です。
私の常識的な理解では、XMLはデータをメモリ内に保持するのに適した形式ではなく、データを出力/転送するときにXMLに変換し、読み込みおよびインポートするときに内部データ構造に変換する必要があります。重要なのは、スケーラビリティの問題を完全に無視する本番コードに常に遭遇しており、そうするために多大な労力を費やしているということです。(これらのアプリケーションでの文字列解析の膨大な量は恐ろしいものです。)
これは、他の人が失敗した仕事に適切なツールを適用するための一般的な失敗ですか?それとも私の側の運が悪いだけですか?それとも、大量のデータをXMLとしてメモリに保存することが正しく、OKであるという、目がくらむほど明白で良い状況を見逃しているのでしょうか。