В Linux, Каков наиболее эффективный способ для анализа XML в MYSQL? - PullRequest
1 голос
/ 11 октября 2011

Я хотел бы проанализировать XML-файлы в базе данных MYSQL.

Какой самый эффективный и быстрый способ сделать это в системе LINUX (Ubuntu) и наименее ресурсоемкий.* У меня есть около 1 ГБ файлов XML, которые мне нужно анализировать каждые 15 минут.Каждый XML имеет размер около 60 КБ.

Я думал об использовании Shell или Perl и либо сам собирал парсер, либо получал какой-то инструмент XML.

Я открыт для любых предложений.

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

Ну, самый быстрый анализатор XML (без проверки), который я видел до сих пор, это VTD-XML . Его можно использовать везде, где производительность имеет первостепенное значение. Чтобы дать некоторые цифры, на Core2 2,5 ГГц VTD-XML превосходит DOM-парсеры в 5x ~ 12x, обеспечивая 150 ~ 250 МБ / с на поддерживаемую пропускную способность ядра.

При такой скорости можно проанализировать 1 ГБ XML за 10 секунд. Если анализ выполнен успешно, вы можете случайно просмотреть структуру данных в памяти или использовать XPath для получения данных.

Учитывая ваши требования (ввод XML 1 ГБ), вы должны принять во внимание, что VTD-XML будет занимать 1,3 ~ 1,5 ГБ ОЗУ вашей системы, потому что он должен создать структуру данных в памяти для доступа к анализируемым данным, а также сам текст XML.

Библиотека VTD-XML доступна для C #, Java, C ++, C, к ней нужно некоторое время, чтобы привыкнуть, поскольку у нее есть некоторая кривая обучения, но в долгосрочной перспективе она может начать окупаться.

Если доступной памяти недостаточно, потоковый анализатор (SAX) должен быть более подходящим инструментом для этой работы.

0 голосов
/ 13 октября 2011

Самый быстрый способ получить много данных в MySQL - это использовать LOAD DATA INFILE, чтобы загрузить данные из файла в таблицу без ключей в порядке PK. Учитывая, что вы вполне можете быть ограничены производительностью БД, возможно, стоит заплатить цену за преобразование XML в файл CSV / любой другой файл для LOAD DATA INFILE, а затем вылить его в БД за один раз.

Cf. http://mysqldump.azundris.com/archives/94-LOAD-DATA-INFILE-and-mysqldump.html

0 голосов
/ 11 октября 2011

Будет ли лучшим вариантом вставить файлы xml в таблицу mysql, а затем извлечь значения, используя функции XML MySQL?Вы можете ссылаться на ссылку ниже:

http://rpbouman.blogspot.com/2006/03/importing-xml-data-into-mysql-using.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...