2013-03-15 3 views
0

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

У меня есть данные в двух местах

  1. в базе данных в двух различных таблицах.
  2. В файловой системе В двух файлах, разделенных двумя файлами.

В настоящее время я пытаюсь использовать парсер StaX для создания XML-файла в JAVA.

Здесь мне нужно знать, следует ли использовать файл базы данных/текстовый файл для чтения данных и создания XML-файла.

Какой вариант будет быстрее?
Кроме того, существует ли какой-либо конкретный API, который оптимизирует процесс создания/преобразования для таких больших данных в XML?

Я открыт для обработки файлов, используя команды linux, а также обеспечивает более быструю настройку.

UPDATE на комментарии

  • Как быстро вы можете получить XML данные элемента из двух отдельных файлов против DB запросов CSV дамп? Все, что доступно в базе данных, доступно в разделенных файлах PIPE. И как FAST мы можем получить/создать информацию о элементе XML именно в этом вопросе. Именно это повлияет на общую скорость работы.

  • Устранение картирования: отображение 1 для многих. 1 запись в первых файлах карт примерно до 8000 записей во втором текстовом файле/таблице.

UPDATE on Comment -> Использовать большие выходные буферы.

Понял. Будет читать данные из базы данных/файла в больших кусках и очищать его, как только я обработаю полный кусок. Но опять же я должен делать чтение базы данных или чтение файла?

Обновление Можно ли экспортировать его с помощью любого инструмента из базы данных MySQL, автоматически преобразованного в формат XML?

+1

DB находчивый для значимых запросов и отчетов. Я бы сбросил вывод запроса в CSV и сгенерировал вывод XML. Таким образом, БД остается в покое, когда генерируется XML; что может занять много времени. Используйте большой выходной буфер перед сохранением для вывода XML-файла. – SparKot

+0

ah, с опцией 'pipe separate fields', которую вам нужно проверить. Используйте большой входной буфер для чтения файлов. Как быстро вы можете получить информацию о XML-элементе из двух отдельных файлов и DB Query CSV? Насколько сложным является сопоставление между этими двумя файлами? это '1-1'? это записи, отсортированные в этих файлах, например, «первичный ключ»? – SparKot

+0

@SparKot -> Что вы подразумеваете под «Использовать большой выходной буфер перед сохранением для вывода XML-файла». ? –

ответ

0

Вы можете использовать perl и XML::Simple/XML::Writer perl модули. Perl также способен считывать данные как из базы данных, так и из текстовых файлов.

+0

-> Будет ли это более эффективным, чем чтение данных по строкам из БД и создание XML-файла? –

+0

Непонятно, что это даже * отличается * от этого, не говоря уже о более эффективном. – EJP

Смежные вопросы