>백엔드 개발 >XML/RSS 튜토리얼 >XML 문서 크기에 대한 자세한 소개를 얻는 방법

XML 문서 크기에 대한 자세한 소개를 얻는 방법

黄舟
黄舟원래의
2017-03-03 17:07:211760검색

XML 문서의 형식과 크기는 확실하지 않습니다. 일부는 몇 줄만 포함할 수도 있고 다른 일부는 수 메가바이트에 달할 수도 있습니다. XML 문서의 크기를 알아야 하는지 궁금할 수도 있습니다. 그리고 성능이 주요 문제가 된다면 XML 문서의 크기를 아는 것이 필수입니다.


성능 측면에서 XML 문서를 처리하는 방법에는 두 가지 유형이 있습니다. 일괄 처리는 문서 그룹을 구문 분석하는 데 더 적은 시간이 걸립니다. 실시간 방식은 문서를 실시간으로 처리하는 방식이다. 배치 모드의 성능은 특정 기간 동안 얼마나 많은 문서를 처리하는지로 측정되는 반면, 실시간 모드의 성능은 유사하지만 문서를 처리하는 데 걸리는 시간을 기준으로 측정됩니다.


시나리오
웹 서버와 같이 실시간으로 작동하는 시스템이 있다고 상상해 보세요. 이 시스템은 고객으로부터 실시간으로 주문을 받아야 하며 이 주문에 즉시 응답해야 합니다.

이 시스템은 당연히 일괄 처리에 사용할 수 없습니다. 간단한 추정으로, 이것이 10개 항목만 포함된 매우 간단한 주문이라고 가정하면 생성된 XML 문서는 문서당 약 4KB로 상대적으로 작습니다. 이 경우 DOM을 사용하여 수신된 문서를 구문 분석합니다.

시간당 주문 수가 적다면 시스템 성능은 문제가 되지 않습니다. 그러나 장기적으로 생각해 보면 언젠가는 주문량이 너무 많아 시스템 성능을 개선해야 한다는 사실을 깨닫게 될 것입니다.

이제 증가된 부하를 수용하기 위해 성능을 개선하는 방법에 대해 생각하기 시작합니다. 귀하의 주문 문서는 이미 작기 때문에 이를 더 큰 문서로 병합할 필요가 없습니다. 수직적 관점에서는 기존 시스템의 처리 용량을 늘릴 수 있고, 수평적 관점에서는 더 많은 시스템을 추가하여 부하를 분산시킬 수 있습니다.

또 다른 전혀 다른 분야를 살펴보면, 이제 대규모 데이터 웨어하우스를 다루고 계십니다. 웹 서버와 완전히 다른 점은 이제 FTP를 사용하여 평균 크기 300MB의 XML 문서를 전송하는 것입니다. XML 문서를 구문 분석하기 위해 여전히 DOM을 사용한다면 곧 큰 문제에 직면하게 될 것입니다. 반대로, 들어오는 XML 문서를 미리 메모리에 로드할 필요 없이 직접 구문 분석할 수 있는 SAX를 사용하면 훨씬 더 좋습니다.


문서 크기 변경
때때로 특별한 상황에 직면하여 XML 문서의 크기를 변경해야 하는 경우가 있습니다. 이전과 마찬가지로 XML 문서를 실시간으로 처리하는 웹 서버가 있는데, 이때 모든 문서의 크기가 4KB가 아닌 400MB라고 가정해 보겠습니다. DOM 방식은 너무 많은 메모리를 차지하기 때문에 사용할 수 없습니다. 하지만 실시간 시스템이기 때문에 성능이 매우 중요합니다. SAX를 사용할 수 있지만 시간과 강력한 프로세서가 필요합니다.

이 경우 문서 크기를 변경하여 시스템 성능을 향상시킬 수 있습니다. 예를 들어, 400MB 문서 하나를 40MB 문서 10개 또는 10MB 작은 문서 40개로 나눌 수 있는데, 이는 400MB 문서 하나를 처리하는 것보다 더 효율적입니다. 이러한 방식으로 DOM 메서드를 사용하여 파일을 메모리로 읽어 처리하고 적시에 각 문서 요청에 응답할 수 있습니다. 관련 없는 문서를 지울 수도 있습니다.

일괄 처리에서도 비슷한 상황이 있습니다. DOM 일괄 처리를 통해 수천 개의 4KB 문서를 처리한다고 상상해 보십시오. 가장 좋은 방법은 수천 개의 파일을 하나의 4MB 파일로 병합하는 것입니다. 각 문서를 로드하는 데 시스템 시간(DOM이든 SAX이든)이 걸리기 때문입니다. 수천 개의 문서를 하나로 병합하면 단 하나의 문서만 로드하면 되므로 시간이 천 배 단축됩니다.


위 내용은 XML 문서 크기를 구하는 방법에 대한 자세한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요. !


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.