Що нового в DB2 Viper

Зміст



Введення


Управління новими форматами даних часто виставляє нові вимоги. Багато лідерів у сфері інформаційних технологій виявили, що це дійсно так, коли справа стосується формату Extensible Markup Language (XML).


Дуже часто очевидні варіанти управління та спільного використання даних XML їх не вирішують. Файлові системи хороші для простих завдань, але вони не достатньо масштабуються, коли необхідно мати справу з великою кількістю документів. Проблеми паралельної роботи, відновлення, захисту та простоти використання стають некерованими. Комерційні системи управління реляційними базами даних (DBMS) вирішують їх, але зазнають невдачі в інших областях. Вони пропонують два фундаментальних варіанту проекту бази даних – зберігання кожного XML-документа в цілісному вигляді як один великий об'єкт або "подрібнення" його на декілька стовпців, часто на кілька таблиць. У багатьох ситуаціях ці варіанти стикаються з проблемами продуктивності, адміністрування, підвищення складності запитів і ін Нарешті, працюють тільки з XML DBMS, представляють нову, у великій мірі неперевірену середу в IT-інфраструктурі, піднімаючи питання інтеграції, наявності досвідченого персоналу та життєздатності.


Версія "Viper" DB2 для платформ Linux, Unix і Windows представляє новий підхід. Ця нова бета-версія підтримує XML-дані як першокласний тип. Для цього IBM розширила DB2 і включила:



Важливо відзначити, що вбудована підтримка XML в DB2 є доповненням до існуючої підтримки інших технологій, у тому числі SQL, табличних структур даних і різноманітних DBMS-функцій. У результаті користувачі можуть створити один об'єкт бази даних, що працює і з "традиційними" SQL-даними, і з XML-документами. Більше того, вони можуть написати один запит, що виробляє пошук і інтегруючий обидві форми даних.


У даній статті досліджуються ці функціональні можливості в міру вивчення вбудованої в DB2 підтримки XML. Але спочатку розглянемо питання, чому так важливо правильно управляти XML-даними.



Потенційні переваги


Зі збільшенням кількості компаній, що звертаються до XML для реалізації сервіс-орієнтованих архітектур (service-oriented architecture – SOA) з метою обміну даними між несумісними системами та додатками і для адаптації до швидко мінливих бізнес-умов, багато розсудливі IT-лідери шукають способи ефективного спільного використання, пошуку та керування достатком XML-документів та повідомлень, які генерують їх компанії. Нова підтримка XML в DB2 призначена для мінімізації часу і зусиль, необхідних для збереження та використання XML-даних. Це, у свою чергу, може зменшити вартість розробки і поліпшити бізнес-оперативність.


Наприклад, у статті "Використання вбудованої підтримки XML в DB2 з PHP" (developerWorks, жовтень 2005) розглядається, як нова підтримка XML в DB2 зменшує складність розробки бази даних і прикладної програми для підтримки Web-сайту електронної комерції. Аналогічно, у статті "Управління XML для максимальної віддачі" (IBM, листопад 2005) розглядається накопичений досвід, включаючи порівняльні тестові сценарії, який теж показує потенційне скорочення робочого часу і поліпшення робочого циклу.


Що стоїть за всіма цими перевагами? DB2 надає користувачам можливість зберігати цільні XML-документи з повною підтримкою в DBMS їх внутрішньої структури. Це усуває або мінімізує завдання адміністрування та програмування по відношенню до інших альтернатив. Більше того, може збільшитися швидкість операцій пошуку документів і в документах, а також надається можливість більш швидкого пристосування до змін бізнес-вимог, відображених в XML-схемах.



Огляд архітектури


DB2 надає клієнтським застосуванням можливість працювати і з табличними структурами даних, і зі структурами XML-даних через мову запитів за вибором – SQL (включаючи SQL з XML-розширеннями, часто званим "SQL / XML") або XQuery. Як показано на малюнку 1, внутрішні компоненти DB2 підтримують запити, виконані на будь-якій мові.

Малюнок 1. Архітектура нової версії DB2 "Viper"


Для ефективного управління традиційними SQL-типами даних і XML-даними в DB2 є два різних механізми зберігання. Ми незабаром розглянемо нову технологію зберігання даних XML. Однак необхідно відзначити, що внутрішній механізм зберігання, використовуваний для конкретного типу даних, прозорий для програми. Іншими словами, додатка не треба явно вказувати, який механізм використовувати або керувати фізичними аспектами зберігання, наприклад розподілом XML-документів з різних сторінок бази даних. Додаток просто користується перевагами продуктивності механізмів зберігання та операцій запитів даних у форматі, ефективному для цільових даних.


Розглянемо нові XML-функції DB2 з точки зору користувача.



Логічне зберігання


Набори XML-документів зберігаються в таблицях DB2, що містять один або декілька стовпців з новим XML-типом даних. Це дозволяє адміністраторам використовувати знайомі SQL-команди мови визначення даних (Data definition language – DDL) при створенні об'єктів бази даних для зберігання даних XML. Однак цей знайомий інтерфейс приховує той факт, що DB2 зберігає XML-дані іншим способом, використовуючи нову технологію для збереження ієрархічної структури XML-даних і для підтримки операцій пошуку по всіх або частини оригінальних XML-даних.


Для полегшення інтеграції користувачами традиційних форм бізнес-даних з XML-даними адміністратори DB2 можуть створити таблиці, що містять стовпці як традиційних SQL-типів даних, так і нового XML-типу даних. Ось приклад однієї такої таблиці:


Лістинг 1. Створення таблиці з XML-стовпцем





create table items (
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
)

Перші п'ять стовпців цієї таблиці використовують традиційні SQL-типи даних для зберігання інформації про кожен товар для продажу, включаючи його ідентифікаційний номер, назва торгової марки, назва товару, одиницю зберігання (stock keeping unit – SKU) і пропоновану роздрібну ціну (suggested retail price – SRP). Стовпець "comments" містить XML-дані з відгуками користувачів про даний товар.


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


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


Вам, можливо, цікаво знати, як користувачі заповнюють таблицю DB2 XML-даними. Відповідь проста – вони використовують один з двох знайомих механізму DB2. Команди SQL INSERT і функція DB2 IMPORT розміщують XML-дані разом з іншими типами даних (DB2 IMPORT використовує команди INSERT). Якщо ви поставите питання, чому DB2 підтримує додавання даних тільки через SQL, а не через XQuery, відповідь теж досить простий – перша версія з'явився стандарту XQuery концентрувалася на читанні даних, не на запису. У відсутність загальноприйнятого стандарту IBM вирішила запропонувати користувачам два знайомих кошти для зберігання даних XML.



Фізичне зберігання


На практиці більшості користувачів не потрібно турбуватися про нову архітектуру управління фізичним зберіганням XML-даних. Однак, для кращого розуміння роботи DB2, розглянемо коротко внутрішній механізм зберігання даних XML.


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


Маючи раніше певну таблицю "items", давайте розглянемо приклад XML-документа, який потрібно зберегти у цій таблиці. Як показано на малюнку 2, цей XML-документ містить кілька елементів, представлених ієрархічно, включаючи кореневий елемент "Comments" і один або більше індивідуальних елементів "Comment", що належать даному товару. З кожним елементом "Comment" пов'язаний ідентифікатор, призначена для користувача інформація, яка може містити субелементу для імені користувача і його адреси електронної пошти, текст повідомлення або коментаря користувача та індикатор того, чи бажає користувач отримати відповідь.

Малюнок 2. Приклад XML-документа і його ієрархічне уявлення

При зберіганні DB2 буде зберігати внутрішню структуру цього документа, перетворюючи імена тегів та іншу інформацію у цілі значення. Це дозволяє зменшити використовується дисковий простір, а також поліпшити продуктивність запитів, що використовують навігаційні вираження. Наприклад, DB2 може при збереженні перетворити тег "Comments" (рисунок 2) у "0". Проте користувачам не обов'язково знати про це внутрішньому поданні.


Нарешті, DB2 автоматично розподілить частини документа (тобто, вузли дерева документа) при необхідності за кількома сторінками бази даних. Насправді DB2 при необхідності може розділити набір (або піддерево) вузлів на будь-якому рівні ієрархії документа. У таких випадках DB2 автоматично генерує і підтримує індекс "regions" для надання ефективного засобу зберігання фізичного представлення всього документа.



Індексація


Разом з новою підтримкою керування зберіганням ієрархічних структур XML-даних DB2 підтримує нову технологію індексації для прискорення операцій пошуку по XML-даних. Аналогічно їх реляційних еквівалентів ці нові XML-індекси створюються знайомими DDL-командами: CREATE INDEX. Однак, крім вказівки стовпця індексації, користувачі вказують також "xmlpattern" (по суті, XPATH-вираз без предикатів) для ідентифікації підмножини потрібного XML-документа.


Наприклад, використовуючи певну раніше таблицю "items" та відповідний приклад XML-документа, показаний на малюнку 2, адміністратор може виконати наступну команду для індексування всіх ідентифікаторів комментария (значень "CommentID"), що містяться в стовпці "comments". Елемент "CommentID" у нашому прикладі документа є нащадком елемента "Comment", який, у свою чергу, є нащадком кореневого елемента "Comments".


Лістинг 2. Створення індексу для XML-стовпця





create index myindex on items(comments) generate key
using xmlpattern “/Comments/Comment/CommentID” as sql double

Варто відзначити кілька деталей. Зазначений у виразі "xmlpattern" шлях чутливий до регістру символів. Тобто, "/ Comments / Comment / CommentID" не буде індексувати значення XML-елемента як "/ comments / comment / commentid." Більше того, оскільки DB2 не вимагає однієї XML-схеми для даного XML-стовпця, DB2 може не знати, який тип даних пов'язаний із заданим шаблоном. Користувач повинен явно використовувати один з підтримуваних SQL-типів (VARCHAR, VARCHAR HASHED, DOUBLE, DATE і TIMESTAMP).


Нарешті, хоча для створення індексу використовується DDL-команда, індекс по XML-даними не такий, як індекс по стовпцях з традиційними SQL-типами даних. І хоча деталі технології індексації XML-даних в DB2 виходять за рамки нашої статті, ви, можливо, помітили дві важливі відмінності:



Для деяких програм може бути критичним повнотекстовий пошук. IBM розширила існуючі в DB2 можливості текстового пошуку, підключивши до них дані, що зберігаються в XML-стовпцях. Розширення команди CREATE INDEX дозволяють адміністраторам створювати повнотекстові індекси для поліпшення продуктивності такого пошуку.



Мова запитів і оптимізація


Нова підтримка XML в DB2 включає в себе нові можливості мови запитів. Програмісти можуть тепер виконувати операцію пошуку даних, використовуючи SQL або XQuery – нова мова запитів, що підтримує навігаційні (Або засновані на шляху) висловлювання. У дійсності додатки можуть вільно використовувати команди з обох мов запиту, і одна команда запиту може включати в себе і SQL, і XQuery.


У нас немає часу досліджувати широту і глибину всіх цих можливостей у даній статті, тому розглянемо лише кілька основних. Якщо ви є SQL-програмістом без досвіду роботи з XML, то будете раді дізнатися про те, що простий SQL-командою можна витягти дані, що зберігаються в XML-стовпці. Наприклад, ці два знайомих запиту повернуть всі дані з таблиці "items", пов'язані з конкретної одиниці вимірювання (sku), включаючи XML-документи з одними коментарями:


Лістинг 3. Запит XML-даних за допомогою SQL





select * from items where sku = 112233

select id, brandname, itemname, sku, srp, comments from items
where sku = 112233


Тепер розглянемо трохи іншу ситуацію, в якій потрібно витягти тільки повідомлення, що містяться в призначених для користувача коментарях таблиці "items", при цьому використовувати XQuery. Ось найпростіший спосіб сформулювати запит:


Лістинг 4. Запит XML-даних за допомогою XQuery





xquery db2-fn: xmlcolumn ("ITEMS.COMMENTS") / Comments / Comment / Message

Оскільки DB2 підтримує дві мови запитів, користувачі повинні вказувати ключове слово "xquery" в якості префікса для команд XQuery. Функція "db2-fn: xmlcolumn" є одним із способів вказівки запитуваних даних. Вона має параметр, який вказує XML-стовпець бажаної таблиці – в даному випадку, стовпець COMMENTS таблиці ITEMS. Далі, ви обмежили витягають дані конкретним підмножиною XML-даних, а саме – елементом "Message", який є нащадком елемента "Comment", який в свою чергу є нащадком кореневого елемента "Comments" (див. малюнок 2).


Цей же запит може бути сформульований за допомогою виразу FLWOR, Зазвичай що з командами XQuery. Вирази FLWOR (Це неформальний спосіб посилання на вираження for, let, where, order by і return) Надає можливість програмісту виконувати ітерації за групами вузлів всередині XML-документів і пов'язувати змінні з проміжними результатами. У даному простому запиті ви можете використовувати вирази for і return для вилучення повідомлень з користувацьких коментарів, як показано нижче:


Лістинг 5. Використання виразів FOR і RETURN в XQuery





xquery for $ y in db2-fn: xmlcolumn ("ITEMS.COMMENTS") / Comments / Comment
return ($y/Message)

Варто відзначити, що DB2 Viper поставляється з Developer "s Workbench, заснованої на Eclipse програмі розробки, що включає в себе графічний конструктор XQuery і допомагає користувачам генерувати і тестувати запити.


SQL і XQuery можуть комбінуватися в одній команді для обмеження пошуку по XML і SQL-стовпцях. Наприклад, розглянемо наступну XQuery-команду:


Лістинг 6. Комбінування SQL і XQuery в одній команді





xquery db2-fn:sqlquery(“select comments from items
where srp > 100”)/Comments/Comment/Message

Вираз db2-fn:sqlquery обмежує вхідну інформацію для більш широкого вираження XQuery; а саме, в якості вхідної інформації передаються лише клієнтську коментарі, пов'язані з товарами, що мають рекомендовану роздрібну ціну (srp), Більшу $ 100. Потім, XQuery-інформація вказує, що DB2 повинен повертати тільки частина "Message" цих коментарів.


Велика кількість статей і Web-сайтів можуть допомогти вам в освоєнні розширень DB2 SQL / XML, підтримки XQuery в DB2 і з'являється стандарту за XQuery.


Нарешті, ви, напевно, хотіли б дізнатися про пов'язаної темі: оптимізації запитів. DB2 має два синтаксичних аналізатора мов запиту: один для XQuery і один для SQL. Обидва генерують загальне, незалежне від мови внутрішнє подання запитів. Це означає, що запитам, написаним на будь-якій мові, надані всі переваги цінних механізмів оптимізації запитів DB2, які включають ефективну перезапис операторів запиту і вибір найкращого плану доступу до даних. Крім того, DB2 може скористатися новими операторами запиту і з'єднання, а також новими механізмами обробки індексів, для забезпечення високої продуктивності запитів, що містять XML-документи.



XML-схеми і перевірка достовірності


Гнучка природа XML іноді турбує розробників баз даних, які дбають про якість даних. Як вже згадувалося, DB2 дозволяє користувачам зберігати будь-який "правильно сформований" XML-документ в будь-якому стовпці, визначеному з новим XML-типом даних. Таким чином, один стовпець може містити документи з різною структурою (або схемами) і з різним вмістом. Коли природа даних неясне або важка для передбачення, така гнучкість може бути абсолютною необхідністю. Але в інших випадках вона може бути джерелом неприємностей. Ось чому DB2 надає користувачам можливість реєструвати їх XML-схеми і вказувати DB2 проводити перевірку достовірності XML-документів згідно із цими схемами перед збереженням.


Для тих, хто не знайомий з XML-схемами, пояснимо, що це – просто правильно сформовані XML-документи, що описують структуру і вміст інших документів. Наприклад, XML-схеми вказують, які елементи дозволені, в якому порядку ці елементи повинні з'являтися в документі, які XML-типи даних пов'язані з кожним елементом і т.д. Створити XML-схему з існуючих XML-документів можна за допомогою різних інструментальних засобів, у тому числі IBM WebSphere Studio і продуктів Rational.


Користувачі можуть вирішити зберігати різні XML-документи, які відповідають різним зареєстрованим схемами, в одному стовпці. Це важливо, оскільки виникають бізнес-вимоги можуть впливати на структуру і вміст оброблюваних XML-даних. Розглядаючи нашу таблицю "items", припустимо, що через кілька місяців після розгортання цієї таблиці ви вирішили зібрати додаткову інформацію в XML-стовпець, наприклад, більш детальну інформацію про користувальницьких адресах для контактів, запис про вжиті заходи у відповідь на певні коментарі і т.д. DB2 може пристосуватися до цих нових поліпшень без необхідності зміни користувачем структури таблиці або будь-якої програми, її використовує. Існуючі дані (засновані на "старої" XML-схемі) можуть залишатися на своїх місцях, а нові дані можуть бути додані у відповідності з однією або декількома новими схемами. Таким способом адміністратори можуть підтримувати нові бізнес-вимоги з мінімальним часом розгортання і вартістю. Більше того, для цього їм не потрібно піддавати ризику цілісність своїх XML-даних – можна просто забезпечити DB2 новою інформацією про те, що "правильно" для XML-даних.


Реєстрація XML-схеми у внутрішньому репозиторії DB2 проста. DB2 надає збережені процедури для автоматизації процесу, або адміністратори можуть вручну виконати відповідні команди. При бажанні одна схема може бути використана для перевірки на достовірність декількох XML-стовпців в кількох таблицях.



Підтримка адміністрування


Нова підтримка XML в DB2 включає розширення знайомих інструментальних засобів і програм, що допомагають адміністраторам керувати та налаштовувати свої бази даних. Наприклад, функції резервного копіювання і відновлення (у тому числі широкодоступним реплікація даних для відновлення після відмови) підтримують документи, що зберігаються в XML-стовпцях. Аналогічним чином розширення функцій IMPORT і EXPORT тепер працюють і з традиційними SQL-даними, і з XML-даними. Тобто, ви можете виконати одну команду IMPORT для заповнення таблиці "items" повністю (читаючи XML-дані з оригінальних файлів), а також виконати команду EXPORT для запису всіх даних таблиці в зовнішні файли.


Крім того, графічна програма адміністрування DB2 (DB2 Control Center) надає адміністраторам можливість переглядати таблиці, що містять XML-дані, створювати і управляти заснованими на XML-даних індексами, виконувати команди SQL / XML і XQuery, а також велика кількість інших завдань з адміністрування. Оскільки продуктивність часто є основною метою, відповідні можливості DB2 були теж розширені для роботи з XML-даними. До них відносяться: DB2 Snapshot Monitor, що забезпечує часові зрізи, або "миттєві знімки", активності DB2; RUNSTATS, що збирає статистику про природу даних, що зберігаються в базі даних DB2; EXPLAIN, що становить звіти по тому, яким способом оптимізатор запиту вибирає дані для виконання даного запиту. Дослідження інформації від EXPLAIN дає можливість адміністратору визначити, які використовуються XML-індекси.


Розширення мови програмування


Нова підтримка XML в DB2 не була б дуже корисна, якщо б XML-дані, що зберігаються в базах даних, не були доступні для програмістів. Усвідомлюючи це, IBM реалізувала поліпшення різних інтерфейсів мови програмування для підтримки простого доступу до XML-даних. Ці поліпшення поширюються на Java ™ (JDBC), C (вбудований SQL і інтерфейс рівня викликів), COBOL (вбудований SQL), PHP і на середу Microsoft ® . NET (через провайдер DB2.NET).


Оскільки API відрізняються в залежності від використовуваної мови програмування, ми не будемо тут розглядати кожне з цих розширень. Однак ви можете ознайомитися з підсумковою інформацією по цих розширень в раніше опублікованій статті "Внутрішня підтримка XML в DB2 Universal Database", або прочитати статтю "Використання вбудованої підтримки XML в DB2 з PHP".


Висновок


Версія DB2 Viper є першою реалізацією IBM гібридної або багатоструктурна системи управління базами даних. Крім підтримки табличній моделі даних DB2 підтримує також ієрархічну модель даних, властиву XML-документів і повідомлень. Користувачі можуть вільно змішувати при зберіганні традиційні SQL-дані і XML-дані в одній таблиці. Вони можуть також запитувати й інтегрувати обидві форми даних за допомогою SQL (при бажанні з XML-розширеннями) і XQuery, розробляються стандарти для запиту XML-даних. Створюючи перевірену інфраструктуру управління базами даних, IBM забезпечує користувачів DB2 Viper розвиненою підтримкою як реляційних, так і XML DBMS технологій.


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


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

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

Ваш отзыв

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

*

*