Хранение содержимого XML
Хранение содержимого XML, т. е. текстовых данных, в таких стандартных типах данных, как CHAR, VARCHAR и даже CLOB/BLOB, доказало свою неэффективность, так как для выполнения поиска или чтения и редактирования всего лишь одного узла требуется синтаксический разбор всего документа. Еще один подход предполагал дизассемблирование документов XML и связывание их со множеством реляционных таблиц. Он был более эффективен, однако тоже был связан с дополнительными затратами и не учитывал стремительно возрастающую сложность стандартов XML, которые теперь позволяют содержать в документах рекурсивные структуры и прочие конструкции, слабо сочетающиеся с реляционной моделью. К тому же разобранный на составляющие документ XML способен потерять целостность данных, при этом им становится тяжело манипулировать.
Все эти причины ясно отразили потребность в поддержке XML как производителями СУБД, так и комитетом стандартизации SQL. Новый стандарт SQL/XML обеспечил механизм внедрения XML в реляционную парадигму и ввел выражения XQuery в мир SQL. Производители СУБД также реализовали некоторые собственные, дополнительные механизмы наряду с полной (или частичной) поддержкой стандартного синтаксиса SQL/XML.
Связанные с XML спецификации были представлены в стандарте SQL в документе ISO/ IEC 9075-14:2003, за которым последовал документ ISO/IEC 9075-14:2006. В этих документах ISO были определены способы импорта и хранения данных XML в СУБД, манипулирования ими в базе, а также публикации традиционных данных SQL в форме XML. В этих документах были определены средства, позволяющие приложениям интегрировать в код SQL запросы XQuery, — язык запросов, разработанный комитетом World Wide Web Consortium (W3C) для одновременного доступа к обычным данным SQL и документам XML. В табл. 15.2 перечислены функции публикации SQL/XML. При реализации единого стандарта производители СУБД использовали разные подходы. Это привело к тому, что не существует единого подхода, гарантирующего переносимость запросов между разными СУБД.