Знайомство з природними XML-базами даних

Автор: Кімбро Стейкін, 31 жовтня 2001,
Оригінал статті

Переклад: А. Устюжанін, Л. Птіцина, 6 березня 2002, www.raleigh.ru

Практика обробки і зберігання XML зажадала створення нових типів програмних інструментальних засобів, одним з яких є "природні XML-бази даних" (надалі ми будемо користуватися скороченням NXD, Native XML Database). У даній статті описуються основні принципи таких баз даних.

Що таке NXD?

Термін "природна база даних" (NXD) може ввести в оману деякий. Справа в тому, що багато хто так звані природні бази даних по суті не є самостійними базами даних у звичному сенсі цього слова. Вони не зберігають XML в чистому вигляді (наприклад, як текст). Щоб краще зрозуміти, що ж це таке насправді, давайте розглянемо визначення NXD, запропоноване Ініціативою XML: DB, членом якої є автор.

Природна XML-база даних …

  • Визначає (логічну) модель XML-документа – на відміну від даних, що містяться в цьому самому документі – і зберігає і витягує документи відповідно до цієї моделі. Як мінімум, модель повинна включати елементи, атрибути, блоки
    PCDATA, а також порядок документа. Прикладом таких моделей може бути модель даних XPath, XML Infoset, а також моделі, які реалізовані за допомогою DOM або подій SAX 1.0.
  • Документ XML виступає в якості основної одиниці (логічного) зберігання, також як рядок є основною одиницею (логічного) зберігання в теорії реляційних баз даних.
  • Не зобов'язана мати в основі будь-яку конкретну фізичну модель зберігання. Наприклад, вона може бути побудована на основі реляційної, ієрархічної або об'єктно-орієнтованої БД або використовувати закритий формат зберігання, такий як проіндексовані і стислі файли.

Якщо спробувати переформулювати це визначення покороче, то ми отримаємо наступні три базових затвердження.

  1. База даних призначена для зберігання даних XML, а також всіх компонент XML-моделі.
  2. Документи на вході і документи на виході.
  3. NXD може не бути реальною самостійною базою даних.

Як має бути зрозуміло з цього визначення, NXD в дійсності не представляють собою нову низкоуровневую модель баз даних, і вони не покликані замінити вже існуючі бази даних. Це просто інструментарій, мета якого – допомогти розробникові, забезпечуючи надійне зберігання і маніпулювання XML-документами.

Особливості NXD

Хоча не всі NXD повністю ідентичні, у них є характерні риси, які ми і розглянемо нижче. Однак тут ми не будемо обговорювати конкретні продукти, а коли вам буде цікаво скласти свою думку про них, ви можете звернутися до повного
списком реалізацій XML-баз даних, створеному Рональдом Буреттом (Ronald Bourret). Більшість софтверних компаній пропонують зараз продукти першого покоління, і тільки деякі, більш потужні компанії пропонують рішення наступного покоління. Модель NXD тільки розвивається і буде продовжувати розвиватися ще протягом декількох років. Таким чином між існуючими реалізаціями є досить відчутні відмінності, тому твердження, сформульовані в наступних розділах, застосовуються лише для більшості таких реалізацій, але не для всіх.

Зберігання XML

NXD зберігає XML-документи, як єдине ціле, і створить модель, подібну XML або однією з XML-технологій, наприклад Infoset або DOM. Ця модель включає довільні рівні вкладеності і складності, а також повну підтримку змішаних і слабоструктурованих даних. Ця модель автоматично відображається за допомогою NXD в базовий механізм зберігання. Це відображення забезпечить підтримку задану XML-модель даних. Зберігши дані, вам доведеться продовжувати використовувати інструментальні засоби NXD, якщо, звичайно, ви хочете побачити більше зручне представлення даних. Наприклад, якщо ви використовуєте NXD поверх реляційної бази даних, доступ до даних безпосередньо за допомогою SQL може здатися не таким зручним, як ви могли очікувати. Причина очевидна – дані, які ви побачите, скоріше є моделлю XML-документа (наприклад, елементи і атрибути), ніж бізнес-сутностями, що представляють ці дані. Модель бізнес-сутностей існує в рамках XML-документів, але не в рамках фізичної системи зберігання даних. Щоб працювати з даними, з ними слід працювати, як з XML.

Якщо розробнику зручно працювати з XML-інструментарієм, таким як
DOM, SAX, XPath і XSLT, то можливо вони підійдуть і для роботи з NXD. База даних позбавляє від всіх непотрібних деталей зберігання XML і залишає розробнику при побудові додатків свободу у використанні будь-яких XML-технологій.

Колекції

NXD управляє колекціями документів, дозволяючи вам запитувати і маніпулювати цими документами як безліччю. Це сильно схоже на реляційну концепцію таблиці. Відмінність NXD від концепції таблиць в тому, що не всі природні XML-бази даних вимагають, щоб з колекцією була асоційована схема. Це означає, що ви можете зберігати будь XML-документ в колекції, незалежної від схеми. При цьому ви також можете складати запити по всіх документах колекції. NXD з підтримкою таких можливостей називаються незалежними від схем.

Наявність таких незалежних від схеми колекцій документів надає деяку гнучкість базі даних, а також полегшує процес розробки додатків. На жаль, крім усього іншого, ця особливість доставляє адміністраторам баз даних чимало клопоту через ризик слабкою цілісності даних. Тут доречна стара мудрість про те, що для кожної роботи потрібен відповідний інструмент. Якщо вам потрібна надійна структура схеми, тоді або впевніться, що ви використовуєте NXD, підтримуючу схеми, або знайдіть інший спосіб зберігання ваших даних XML.

Деякі продукти мають вбудовану підтримку валідації з DTD, і лише деякі здатні працювати з колекціями документів, використовуючи власну мову схем. Швидше за все, в майбутньому W3C XML Schema буде використовуватися в якості спільної мови схем у NXD. Однак, зараз його підтримка дуже обмежена.

Запити

В даний час мовою запитів для NXD є XPath. Для нормального функціонування в якості мови запитів до баз даних XPath злегка розширений. Так додана можливість побудови запитів до колекції документів. Однак, на жаль,
XPath самого початку не був призначений для цієї області застосування і в деяких випадках його використання обмежене.

Найбільш очевидні обмеження накладають недоліки угруповання, сортування, перехресних об'єднань документів, а також недостатня підтримка типів даних. З-за цих проблем XPath слід застосовувати як частина більш повного мови. Так, щоб заповнити деякі прогалини, можна було б використовувати XSLT, проте зараз в розробці знаходиться XQuery – мова, більш орієнтований на бази даних. Деякі виробники вже навіть почали використовувати прототип XQuery у своїх реалізаціях баз даних.

Для поліпшення обробки запитів NXD підтримують створення індексів для даних, що зберігаються в колекціях. Ці індекси можуть бути використані, щоб значно підвищити швидкості виконання запитів. Деталі того, що можна індексувати і як ці індекси створювати, широко варіюються в різних продуктах, але більшість з продуктів підтримують цю можливість в декількох формах.

Оновлення

Оновлення є слабкою ланкою сучасних NXD. Більшість програмних продуктів вимагають, щоб ви отримали документ, змінили його з допомогою свого улюбленого XML API, а потім повернули його в базу даних. Деякі програмні продукти мають власний спеціальний мова, яка дозволяє здійснювати оновлення на сервері; плюс ще парочка Open Source NXD підтримує XML: DB XUpdate для цієї ж мети. Швидше за все, ця проблема не вирішиться, поки XQuery не доповнити мовою оновлення. До цього часу маніпулювання за допомогою DOM, ймовірно, буде найбільш прийнятним методом оновлення.

Області застосування

Існує тільки одне сувора вимога до будь-якого додатка, що працює з NXD: програма має використовувати XML. До того ж немає ніяких інших обов'язкових правил, що регламентують який тип додатків можна чи не можна реалізовувати з NXD, і все-таки запропонувати деякі рекомендації має сенс. Взагалі, більш сильною стороною NXD є зберігання документ-орієнтованих даних (наприклад XHTML, або DocBook), даних, які мають дуже складну структуру з глибокої вкладеністю, а також слабоструктурованих даних. Як правило, якщо дані представлені у форматі XML і при цьому "трохи нечіткі" (По-моєму, прекрасний технічний термін), застосування NXD буде хорошим рішенням. NXD може зберігати будь-які типи даних XML, але, ймовірно, це не найкраще інструментальне засіб при роботі з чим-небудь, подібним системі бухгалтерського обліку, де дані дуже точно визначені і жорстко задані.

Перерахуємо деякі потенційні області застосування:

Крім того, NXD – просто нове інструментальне засіб, і принесена ним користь буде визначатися творчим потенціалом розробників, що використовують його.

Висновок

NXD не є панацеєю і, що абсолютно точно, не претендують на те, щоб замінити існуючі системи баз даних. Це просто інші інструментальні засоби, які розробник може покласти у свою професійний багаж. Застосовані в потрібний момент, при відповідних обставинах, вони можуть принести значну користь. Якщо ви працюєте з великою кількістю даних XML, які треба зберігати, NXD заслуговує вашої уваги, і ви переконаєтеся, що це прекрасний засіб для вирішення різних завдань.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*