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

       

XML-данные, хранимые в XML DB Repositoty


Но можно и приготовить торт, и съесть его, хотя бы до некоторой степени: Вы можете хранить ваш документ как некоторый Native XML Type (см. ниже) в репозитории XML DB (Oracle's XML DB repository), который целиком побайтно сохранит весь документ, а также “разнесет” его в SQL-таблицы. Такой подход предоставляет вам полную достоверность и в то же время позволяет вам выполнять все DML-операции с документом, которые доступны через XML Views. У вас по-прежнему сохраняется детализированное управление данными, и можно создавать множество представлений и документов на основе этих SQL-данных. После регистрации вашей XML-схемы вы запоминаете свои XML-данные в своей базе данных, просто вставляя файл XML-документа с применением SQL, PL/SQL, Java, FTP, HTTP или WebDAV. Выборка XML-данных из базы данных совершается выполнением SQL-запроса или чтением файла одним из стандартных протоколов Internet. Эта функциональность реализована благодаря поддержке встроенной перезаписи запросов (query re-write), которая снимает необходимость в триггерах типа instead-of-triggers.

Помимо легкости работы с XML в форме документа (в целом) или (отдельных) данных, вы получите расширение интерфейсов прикладного программирования объектной модели документа (Document Object Model (DOM) APIs) стандарта косорциума W3C при программном доступе. При разборе XML из файла вы можете построить в оперативной памяти представление в виде дерева всего файла для того чтобы манипулировать с ним. (Такой подход используют и другие XML-процессоры, такие как XSLT.) С возможностью “виртуальная DOM-модель” ("virtual DOM") собственного XMLType, описанной ниже, вы строите такое дерево по требованию: не только сохраняя ресурсы при применении интерфейсов DOM (DOM APIs) и XSLT, но в случае больших документов или наборов строк ваше приложение просто работает (а не падает).

Применение репозитория XML DB дает немало преимуществ, но это неверно для каждого приложения. Могут быть велики накладные расходы при поддержке отношения между полным документом и его “разложенными” (по таблицам) данными. Однако, основная проблема связана с эволюцией схемы. Так как документ (его структура) определяет процесс запоминания (отображение (mapping), какие данные в какие таблицы), то тогда, когда вы хотите изменить схему документа, этот процесс уже не абстракция, он “тонко” привязан к схеме базы данных, чья структура влияет на него. Это означает, что вы не можете выполнить большинство нетривиальных изменений схемы базы данных или документа, если не выполните экспорт всех данных и затем их импорт в базу данных.

Это обстоятельство могло бы быть настоящим ночным кошмаром, если бы вы работали со многими отраслевыми схемами и должны разгружать ваши данные каждый раз, когда они меняются. Если же нет необходимости в побайтной сохранности документа, эти изменения могут быть вынесены из схемы вашей базы данных благодаря использованию модели хранения XMLType View, описанной ранее.



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