Язык XML - практическое введение

       

Перемещение XML в базы данных


Однако, проблем со хранением и манипулированием XML в базах данных немало и эти проблемы могут обескураживать тех из вас, кто знает, что они могут быть преодолены, но не знает точно, как это сделать. Основные базы данных обладают реляционной структурой, а XML - иерархической, и до недавнего времени не было простого и элегантного способа интегрировать их. По традиции у разработчиков было два выбора:

  • либо использовать разборщик (parser), чтобы деконструировать/разложить данные документа в реляционные данные и хранить их как таковые в базе данных,
  • либо хранить документ целиком как текстовый файл (в базе как запись), сохраняя тем самым его структуру.

Важно помнить, что “перемещение” XML в базы данных нельзя сделать единым для всех случаев образом. У каждой модели хранения данных есть свои плюсы и минусы. Понимание того, какая модель хранения данных XML наилучшим образом соответствует потребностям вашего приложения, критично для вашего успеха и важнее, чем приспособление вашего приложения к некоторой модели хранения данных XML.

Одна из целей этой статьи и заключается в том, чтобы помочь вам определить оптимальную для себя модель. В этой статье я объясню обе модели хранения:

  • “расщепления” ("shredding") документа (деконструирование XML-файла в реляционные данные и затем оперирование с ними через SQL) и модель хранения большого символьного объекта - Character Large Object (CLOB).

Затем я представлю вам репозиторий Oracle's XML DB и собственный (native) XMLType, которые являются комбинацией этих двух моделей с рядом добавленных возможностей. В идеальном случае, вы получите хорошее представление о той модели хранения, которая наилучшим образом соответствует вашему приложению. (См. врезку.)

Какая модель для каких приложений?

Приложения для XMLType CLOB

  • Приложения, работающие с документами в целом
  • Web-сайты, приложения управления контентом, архивы документов
  • Приложения, требующие быстрейшей вставки и выборки целых документов
  • Приложения, в которых изменения замещают весь документ
  • Подходящие для документов, описываемых DTD
  • Приложения, требующие памяти для хранения широкого диапазона XML-данных
  • Требуется сохранность/целостность (fidelity) на побайтном уровне
  • Нет требования использовать типы данных
  • Приложения, которые используют поиск в тексте
  • Не требуется доступ через интерфейсы прикладного прогроаммирования (API) XML (DOM, SAX, JAXB).

  • Приложения для XMLType View

  • Приложения, работающие с отдельными данными документов
  • Электронный бизнес, интеграция приложений, синхронизация данных, использование данных для других целей
  • Нет требований сохранить XML-документ на побайтном уровне
  • Приложения, использующие XML как мощное средство передачи данных
  • Приложения, требующие широкого использования всех DML-операций
  • Приложения, требующие полного использования оптимизации SQL
  • Приложения, использующие подробный (fine-grained) доступ и изменение данных
  • Приложения, в которых данные из “источника правды” (“source of truth") переинтрепретируются
  • Приложения, поддноживающие множество XML-схем с единой схемой баз данных.


  • Приложения для XML DB Repository

  • Приложения, работающие как с документами в целом, так и с их отдельными данными
  • Обработка деловых документов, управление контентп (CM) с поддержкой типов данных, динамическая публикация
  • Приложения, требующие структур хранения для данных, определяемыми схемами, в случае стабильной схемы
  • Приложения, требующие применения как SQL, так и текстового поиска
  • Приложения, использующие ограничения и оптимизации SQL
  • Приложения, требующие подробного (fine-grained) изменения данных
  • Приложения, которым необходимы отношения один-ко-многим в документе
  • Приложения, которые необходимы документы с иерархической организацией.



  • Содержание раздела