Язык 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).




Содержание  Назад  Вперед