
Январь/Февраль 2004
Интересно для всех
Марк Скардина
Модели хранения XML-данных:
единственного варианта на все случаи нет
(XML Storage Models: One Size Does Not Fit All,
by Mark Scardina)
Источник: Oracle Technology Network, журнал “Oracle Magazine”,
раздел article_online_only, 02 июля 2003, /technology/oramag/webcolumns/2003/techarticles/scardina_xmldb.html
Выбор модели хранения XML-данных для вашего приложения может определить его успех или неудачу
Подобно многим протоколам, файловым системам и технологиям World Wide Web, Extensible Markup Language (XML) – расширяемый язык разметки – прошел путь от скромного старта к широкому применению за сравнительно короткий период времени.
Первоначально получивший известность среди публикаторов в Web как технология совместного использования документов, XML развился в среду хранения и передачи данных, признанную во всей отрасли.
Когда-то документы, публикуемые в Web, состояли почти только из текстов и изображений, ныне же эти документы (уже на основе XML) становятся наиболее предпочитаемой средой для доставки данных, выбранных из баз данных внутренних (back end) систем, а также приложений и документов среднего (middle tier) уровня и внешних (front end) систем.
Но теперь XML начинает проникать и в базы данных, становясь обязательным элементом структур хранения данных.
Если раньше наборы разработчиков Oracle XML Developers Kits (XDKs) использовались для оперирования с данными в формате XML (или XML-данными) вне баз данных, то в настоящее время разработчики приложений могут распределять обработку этих данных между всеми уровнями, на которых используются интерфейсы прикладного программирования этих наборов -- XDK APIs либо интерфейсы SQL 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) изменения данных
- Приложения, которым необходимы отношения один-ко-многим в документе
- Приложения, которые необходимы документы с иерархической организацией.
|
|