ホームページ  >  記事  >  バックエンド開発  >  XML ドキュメント サイズの詳細な説明を取得する方法

XML ドキュメント サイズの詳細な説明を取得する方法

黄舟
黄舟オリジナル
2017-03-03 17:07:211677ブラウズ

XML ドキュメントの形式とサイズは不確かです。数行しか含まれないものもあれば、数メガバイトに及ぶものもあります。 XML ドキュメントのサイズを知る必要があるかどうか疑問に思うかもしれません。また、パフォーマンスが主な問題となる場合、XML ドキュメントのサイズを把握することが必須になります。


パフォーマンスの観点から見ると、XML ドキュメントを処理する方法には 2 種類あります。バッチ処理では、ドキュメントのグループを解析する時間が短縮されます。リアルタイム方式は、ドキュメントをリアルタイムで処理することです。バッチ モードのパフォーマンスは、一定期間内に処理されるドキュメントの数によって測定できます。一方、リアルタイム モードのパフォーマンスは同様に、ドキュメントの処理にかかる時間によって測定されます。


シナリオ
Web サーバーなど、リアルタイムで動作するシステムがあると想像してください。このシステムは顧客からの注文をリアルタイムで受け取り、この注文に即座に応答する必要があります。

このシステムは明らかにバッチ処理には使用できません。単純な見積もりとして、これが 10 項目のみの非常に単純な注文であると仮定すると、生成される XML ドキュメントは比較的小さくなり、ドキュメントあたり約 4KB になります。この場合、DOM を使用して受信したドキュメントを解析します。

1 時間あたりの注文が数件しかない場合、システムのパフォーマンスは問題になりません。しかし、長期的に考えてみると、ある日、注文数が非常に多くなり、システムのパフォーマンスを改善する必要があることがわかるようになります。

ここで、負荷の増加に対応するためにパフォーマンスを向上させることを考え始めます。注文書類はすでに小さいので、それを結合して大きな書類にする意味はありません。垂直方向の観点からは、既存のシステムの処理能力を向上させることができ、水平方向の観点からは、システムを追加して負荷を分散できます。

別のまったく異なる分野に目を向けると、現在は大規模なデータ ウェアハウスを扱っています。 Web サーバーとはまったく異なり、FTP を使用して平均サイズ 300 MB の XML ドキュメントを転送します。 XML ドキュメントの解析に DOM を引き続き使用すると、すぐに大きな問題に遭遇することになります。逆に、SAX を使用すると、受信した XML ドキュメントを事前にメモリにロードせずに直接解析できるため、はるかに優れています。


ドキュメント サイズの変更
場合によっては、特別な状況に遭遇し、XML ドキュメントのサイズを変更する必要が生じることがあります。以前と同様に XML ドキュメントをリアルタイムで処理する Web サーバーがあると想像してください。ただし、現時点ではすべてのドキュメントのサイズが 4KB ではなく 400MB です。メモリを大量に消費するため、DOM メソッドは使用できません。ただし、これはリアルタイム システムであるため、パフォーマンスが非常に重要です。 SAX を使用することもできますが、それには時間と強力なプロセッサが必要です。

この場合、ドキュメントのサイズを変更することでシステムの実行パフォーマンスを向上させることができます。たとえば、400MB のドキュメントを 10 個の 40MB ドキュメント、または 40 個の 10MB の小さなドキュメントに分割できます。これは、1 つの 400MB ドキュメントを処理するよりも効率的です。このように、DOM メソッドを使用してファイルをメモリに読み込んで処理し、各ドキュメント要求にタイムリーに応答することができます。無関係な書類を消去することもできます。

バッチ処理でも同様の状況があります。 DOM バッチ処理を通じて数千の 4KB ドキュメントを処理していると想像してください。最善の方法は、1,000 個のファイルを 1 つの 4MB ファイルにマージすることです。各ドキュメントのロードにはシステム時間がかかるためです (DOM であっても SAX であっても)。 1,000 のドキュメントを 1 つに結合すると、ロードする必要があるドキュメントは 1 つだけになり、所要時間が 1,000 分の 1 に短縮されます。


上記は、XML ドキュメントのサイズを取得する方法の詳細な紹介です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。