Перемещение 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) изменения данных Приложения, которым необходимы отношения один-ко-многим в документе Приложения, которые необходимы документы с иерархической организацией.
Все публикации раздела