Разбор с использованием Java или Разбор с помощью парсера Oracle

У меня есть файлы XML в файловой системе (Unix/Windows), которые мне нужно проанализировать и заполнить таблицу необходимыми атрибутами. Я написал синтаксический анализатор DOM на Java, который принимает XML в качестве входных данных и преобразует/разбирает в файлы с разделителями. Затем я заполняю таблицу с помощью Informatica, используя непрямую загрузку файлов. Производительность этого довольно приличная.
Однако один из моих старших сказал мне, что преобразование в файлы с разделителями и последующее помещение в таблицу не требуется. Вместо этого он попросил меня поместить файлы XML непосредственно в столбец таблицы (предпочтительно CLOB или XMLType), а затем использовать синтаксический анализатор XML Oracle для анализа файлов.
Я знаю, что синтаксический анализ XML возможен с помощью синтаксического анализатора Oracle, но рекомендуется ли иметь исходные файлы в таблице базы данных? Этот вопрос больше относится к дизайну.
Благодарим вас за участие в этом вопросе.


person Pratik Kulkarni    schedule 22.10.2015    source источник


Ответы (1)


Хранение XML в базе данных имеет несколько преимуществ.

  1. Требуется меньше навыков. Немногие люди в этом мире являются экспертами в Java, и Informatica, и Oracle. Эксперт не всегда нужен; но без него решение, скорее всего, никогда не будет «великолепным», а устранение сложных проблем может оказаться невозможным.
  2. Меньше преобразований Ошибки обычно возникают на границах, и Java в текстовый файл в Informatica в Oracle имеет много границ. Все ли эти инструменты настроены для поддержки интернационализации? Все согласны с форматом даты? Есть ли знак порядка байтов? Эти проблемы обычно более сложны, чем люди думают.
  3. Держите XML под рукой в ​​случае сбоя. Входные файлы неизбежно будут повреждены, и какой-либо процесс ETL завершится сбоем. Тогда очень удобно иметь все это в одном месте. (По крайней мере, в моей отрасли, где ни у кого не было бы прав доступа ни к серверу приложений, ни к серверу базы данных.)
  4. Производительность. Высокая производительность — это результат №1 и №2; возможность нанять одного эксперта, который может настроить систему, и иметь меньше деталей, о которых нужно беспокоиться. Многие люди могут писать код на Java, Informatica и Oracle; сколько из них могут его распараллелить? Согласно закону Амдала, параллелизм значительно поможет только в том случае, если распараллелен весь процесс.
  5. Специальный анализ с функциями SQL XML. В Oracle есть несколько полезных декларативных инструментов для написания специальных запросов к XML. В частности, функция XMLTable — отличный способ быстро превратить XML в стол. Если XML является прямым, иногда всю работу можно выполнить в одном операторе SQL, и нет необходимости в каком-либо процедурном коде.
person Jon Heller    schedule 27.10.2015