Максимальный размер для передачи данных в XML? - PullRequest
0 голосов
/ 17 апреля 2011

Кто-нибудь пробовал передавать 5 ГБ данных в XML. Веб-сервисы, которым требуется передавать большой объем данных, используют XML для передачи данных через HTTP.

Я с нетерпением жду внесения изменений в систему для передачи данных. Я смущен, если мне нужно передать данные в формате XML для 5 ГБ данных, поскольку моя основная память составляет всего 2 ГБ.

Будет ли приложение ломаться?

Спасибо

Ответы [ 3 ]

2 голосов
/ 17 апреля 2011
  1. XML - это просто язык разметки / формат данных, и он не имеет ограничений по размеру.Вы можете создать XML-файл объемом 1000 ГБ, если хотите.

  2. Вещи, которые манипулируют файлом XML 5 ГБ (или любым другим типом файла 5 ГБ) может сломатьсяесли они не были предназначены для обработки файлов большого размера.В общем, если вы просто загружаете свой большой файл в веб-сервис, у вас должно быть все в порядке, потому что почти любой современный модуль выгрузки файлов будет поддерживать кэширование загрузки на диск по мере ее поступления, так что весь файл не понадобитсябыть в памяти.Однако у вас могут возникнуть проблемы с синтаксическим анализом документа после его получения на сервере, в зависимости от того, какую библиотеку вы используете для анализа.Возможно, вы захотите узнать, какие потоковые парсеры XML доступны для вашего веб-сервиса / платформы (или даже написать свой собственный парсер, специально предназначенный для вашего формата XML-документа, поскольку тогда вы можете сделать упрощающие предположения, которые позволят вам ограничить объем памятитребуется в любой момент времени).

  3. Я бы предположил, что большинство веб-служб, которые передают большие объемы данных, не используют XML в качестве формата передачи данных.Пропускная способность дорогая, а высокая задержка или длительное время загрузки могут ухудшить качество работы пользователя.Поэтому я ожидаю, что такие сервисы будут чаще использовать оптимизированный двоичный формат.Разумное приближение к этому можно получить, просто применив сжатие gzip к документу XML перед его отправкой.

1 голос
/ 17 апреля 2011

У меня был некоторый опыт работы с большими файлами XML, но, возможно, не с 5 ГБ.

Если это существующая система, использующая XML, подумайте, прежде чем переходить с XML на какой-либо другой формат, потому что само изменение может вызвать больше проблем, чем его ценность. Сжатие файла будет иметь большое значение для передачи по сети. XML-файл в формате gzip может быть столь же эффективным, как и собственный двоичный формат.

Вероятным узким местом будет синтаксический анализ и обработка файла. Если «записи» XML не зависят друг от друга (например, если это длинный список типов XML), то вы сможете использовать потоковый анализатор XML, чтобы избежать загрузки всего в память. Также рассмотрите возможность использования «не проверяющего» синтаксического анализатора (или отключения проверки) для повышения производительности.

Если вы можете выполнить какую-либо обработку файлов в XSLT, то вы можете обнаружить, что это работает лучше, чем синтаксический анализ всего файла в программе для манипуляции.

В зависимости от времени передачи по сети рассмотрите возможность использования надежного сетевого транспорта, такого как FTP или BitTorrent. Если HTTP теряет соединение, возможно, вам придется начать заново.

0 голосов
/ 17 апреля 2011

5 ГБ кажется большой суммой для передачи через веб-сервис, но вы можете сжать XML, что должно значительно уменьшить его размер, как XML.

Сжатие XML-метрик.

В качестве альтернативы, не могли бы вы сделать это в качестве другого подхода, например, запланированного на ночь / еженедельно задания, используя диспетчер задач Windows или задание linux contrab, которое пересекает файл FTP?Затем на другом конце есть другая задача расписания, которая запускается для импорта данных.или может иметь веб-страницу или веб-службу, которая используется для запуска импорта на принимающем сервере

...