1.Введение
На современном рынке средств долговременного хранения данных, с обеспечением контроля целостности, многопользовательским доступом и развитым аппаратом запросов, выделяются два подхода – реляционный и xml-хранилища. Применение каждого имеет свои особенности и ограничения для каждой задачи. Рассмотрим их.
Реляционный аппарат хранения данных реализованный в рамках
таких мощных баз данных, как MS SQL Server, Oracle, MySql и т.д. способен удовлетворить фактически всем требованиям к аппарату сервера. На таких средствах строятся и успешно функционируют самые различные системы от интернет-магазинов до систем автоматизации деятельности банков. Высокое быстродействие, надёжность и развитые средства администрирования позволяют обеспечить функциональность и масштабируемость в пределах больших диапазонов задач. Но реляционная концепция представления данных в рамках хранилища требует приведения их к реляционной структуре, что означает выделение из хранимых данных однотипных объектов и размещение их построчно в одной или группе таблиц, то есть фиксированную и неизменяемую структуру. Как следствие, предел применимости таких систем лежит в области задач над строго структурированными данными. Существуют решения унификации реляционного объекта для хранения слабо структурированных данных. Но они, как правило, приводят к резким потерям производительности и к увеличению трудоёмкости разработки и поддержки всей системы на базе такого решения, так как усложняют структуру хранения, приводят к частичному отказу от средств контроля целостности данных сервером и сильному усложнению запросов.
Применяя как основу представления данных в рамках хранилища xml-нотацию, удаётся снять ограничения на жесткую структуризацию данных и получить аппарат хранения разнородных данных. Такой подход используется в серверах Tamino, MarkLogic Server, Sedna, Timber и т.д. Кроме того, xml стал де-факто стандартом представления данных в информационных системах. Но, эффективное использование xml при разработке прикладных систем сдерживается в настоящее время в частности ограничениями многопользовательского доступа, транзакционности и низкого быстродействия механизмов работы с большими массивами данных. В рамках данной работы реализован аппарат, позволяющий расширить область применения XML над некоторым классом задач за счёт увеличения производительности и обеспечения многопользовательского доступа с блокировками уровня XML-элемента.
2. XML и реляционные хранилища данных
XML обладает рядом преимуществ перед другими языками/форматами описания данных при обмене данными между приложениями:
- Независимость от платформ. Язык XML позволяет обмениваться данными системам, базирующимся на разных платформах. XML-документ может быть создан и разобран как текстовый файл с помощью устаревших или встроенных языков программирования, в состав которых не входят специальные библиотеки для работы с XML.
- Поддержка производителями. Библиотеки для работы с XML созданы для всех ведущих языков программирования и популярных СУБД. Использование этих библиотек позволяет существенно уменьшить объем кодирования при разработке “шлюзов” между приложениями.
- Самодокументируемость. XML-документ “читабелен” для человека. Кроме того, наличие внутри него описания данных позволяет создавать автоматические программы их обработки, например универсальные модули загрузки данных, поступающих из разных систем в единое хранилище.
- Иерархичность. Это ключевое свойство языка. В отличие, например, от формата CSV (текстового файла с разделителем “;”), XML позволяет легко описывать сложные структуры данных с неограниченной вложенностью объектов.
- Объектность. Структура данных XML отлично сочетается с объектно-ориентированной моделью программирования. Каждый тег XML-документа может быть поставлен в соответствие классу или свойству класса обрабатывающей программы. С другой стороны, есть возможность описать в XML-формате каждый прикладной объект предметной области как отдельный тег.
- Расширяемость. В процессе эксплуатации XML-формата в него можно добавлять новые теги. Это не приведет к фатальному изменению структуры данных, просто читающие и пишущие программы нужно будет дополнить классами или функциями, распознающими эти теги.
Анализ перечисленных выше преимуществ показывает эффективность и долгосрочную перспективность применения XML в качестве формата обмена данными между приложениями вместо устаревших “тяжелых” решений или примитивных текстовых файлов с разделителями. Однако гибкость языка XML позволяет совершенно по-разному подойти к описанию одних и тех же данных, к организации их обмена.
2.1. Проблематика хранения данных
Эффективное и безопасное управление большими объемами данных - непростая задача, которая традиционно решается системами управления базами данных. При хранении XML данных необходимо обеспечить надёжность, транзакционность, восстанавливаемость, высокую доступность, безопасность, эффективный аппарат поиска и модификации и масштабируемость. Все эти требования определяют необходимый инструментарий и функциональность систем хранения XML данных и ограничивают применимость существующих технологий и средств.
В общем случае различают базы данных с возможностями XML (XML-enabled) и базы данных с естественным XML (native XML). База данных называется XML-enabled, если ее модель ее ядра хранения и обработки данных - не XML модель данных. Во многих случаях ее ядро - реляционная модель и требуется отображение между моделью данных XML и реляционной моделью. Все реляционные системы баз данных могут рассматриваться, как XML-enabled базы данных, потому что они поддерживают такое отображение для управления данными XML.
Термин native XML база данных используется в различных смыслах разными группами. Native XML база данных имеет следующий три характеристики:
- Она определяет логическую модель для XML-документа. Данные хранятся и выбираются в соответствии с этой моделью. Модель должна включать в себя элементы, атрибуты, PCDATA и порядок документа.
- XML-документ является базовой единицей логического хранения.
- Не требуется никакая специфическая физическая модель хранения. Это означает, что она может быть основана на реляционных, иерархических или объектно-ориентированной базе данных.
В частности, это определение допускает преобразование данных из модели данных XML в другие модели данных для их хранения и обработки. Это то, что мы определили для XML-enabled баз данных. Таким образом, требуется, чтобы native XML база данных также имела следующие два свойства:
- модель данных XML (XML Infoset) - фундаментальная логическая модель данных, которая и используется внутри базы данных и предоставляется пользователям базы данных, если XML является типом данных.
- модель данных XML является основной единицей физического хранения всех XML-данных, без отображения в другую модель данных.
Это краткое определение означает, что XML - уже не просто расширенный тип данных, это то, как данные обрабатываются, как логически, так и физически. Данные, представленные в XML, соответствуют физической схеме хранения на диске. Эта модель является лучшей для эффективного поиска XML-данных.
2.2. Сравнение реляционного и XML подхода к хранению
Реляционные базы данных получили широкое распространение. Они инкапсулируют механизмы хранения и обработки данных, предлагая эффективные методы и для хранения структурированных данных и для быстрого выполнения запросов. С другой стороны, XML - формат данных, служащий для обмена не структурированными данными между несовместимыми системами или приложениями. Применение здесь реляционных аппаратов ограничено, но очевидные преимущества XML представления в выделенной области задач являются акутальными в современных системах.
Рассмотрим ключевые различия между реляционными и XML-данными. Ни XML, ни реляционный формат не является однозначно лучшим решением для любой задачи. Существуют различные потребности управления данными, для которых реляционная модель данных является недостаточной и применение XML позволяет улучшить характеристики решения, снизить трудоёмкость, а иногда и признать задачу реализуемой.
В современных системах существует больше возможностей, чем когда-либо прежде, при выборе способа кодирования, хранения и выборки данных. Рассмотрим и непосредственные, и долговременные последствия возможного выбора. Исследуем преимущества и недостатки реляционной и XML моделей данных. Выделим несколько важных вопросов проектирования. Рассмотрим контрастирующие характеристики реляционных и XML моделей данных, показанные в таблице ниже.
Таблица 1.
Реляционная модель | XML модель |
Табличное представление. | Иерархическое представление. |
Строгая структура. К каждой строке таблицы применяется одна и та же схема. | Статические определения схемы. Не строго структурированная структура. Гибкое определение схемы. XML-схема может существовать для всех или некоторых XML-документов. Схемы легко расширяемы. |
Все отношения определены первичными ключами и внешними ключами. | Документ содержит и данные, и информацию о связях. |
Последовательность не имеет значения. Информация организована во множества, которые неупорядочены по определению. | Последовательность имеет значение. Информация организована в последовательности, которые упорядочены по определению |
Жестко типизирована. Каждая колонка имеет строго один тип данных | Опционально типизирована. Типы могут быть определены для некоторых или для всех элементов и атрибутов в XML-схеме. |
Стандартизация ANSI/ISO. | Стандартизация W3C. |
3-значная логика: true, false, null. | 2-значная логика: true, false. |
NULL | Пустые элементы, отсутствующие элементы |
Ключевое различие между двумя моделями заключается в том, что реляционные данные жестко структурированы и типизированы, в то время как XML может быть гораздо более свободно структурирован и типизирован. XML поэтому также часто называют не строго структурированными данными. В реляционной таблице, каждая строка имеет одно и то же число колонок, и каждая колонка имеет строго определенный тип данных. Это очень строго, однако это позволяет эффективно выполнять обработку данных. Но реляционная модель может быть слишком строгой для некоторых приложений. XML - хороший выбор для этих приложений. XML гораздо более гибок. Например, XML элементы могут быть необязательными или появляться несколько раз в родительском элементе. Также может быть определена XML-схема для некоторых, но не всех XML-документов. Если есть XML схема, то она может определять структуру и типы данных только для частей документа, оставляя их неопределенными для других частей. XML-элементы и атрибуты могут иметь определения типов данных, а могут и не иметь. Кроме того, тип элемента может быть сложным или даже объединением, что трудно - если не невозможно - представить в реляционной модели.
Реляционная структура – с большой вероятностью правильный выбор, если для данных истинно один или несколько следующих утверждений:
- Данные естественным образом отображаются в табличный формат.
- Данные будут впоследствии обрабатываться совместно с другими реляционными данными или реляционными приложениями.
- Необходима высокая производительность в обработке данных. XML-данные потребляют дополнительное процессорное время для разбора и интерпретации XML.
- Данные имеют значения, которые независимы от иерархии XML, которая описывается родительско-дочерними отношениями.
Может быть лучшим хранение данных в XML, комбинируя их с реляционными данными, если для данных истинно одно или несколько следующих утверждений:
- Данные естественным образом отображаются в иерархический формат. Это противоположно данным, которые отображаются в табличном виде и удобно хранятся в реляционной базе данных. Иерархические данных может быть трудно отобразить на реляционную схему
- Схема часто трансформируется. Изменение бизнес-процессов, внедрение новых услуг или товаров или правительственные руководящие указания часто требуют обработки новых или других элементов. Поскольку XML схемы гибкие, можно посчитать практичным хранение XML-документы в их естественном формате вместе с существующими реляционными данными, чтобы избежать сложностей, которые могут возникнуть из-за частых изменений реляционной схемы.
- Преобразование схемы в общем случае легче осуществляется в XML, чем в реляционном формате. Некоторые реляционные изменения схемы просты, например, добавление колонки. Однако, некоторые довольно сложны, например, нормализация таблицы в несколько таблиц. В сложных случаях, вы можете сэкономить много времени и усилий, храня изменчивую часть данных в колонке типа XML.
- Данные имеют существенное количество атрибутов, редко имеющих значения. Такие атрибуты преобразуются в пустые ячейки в реляционной таблице. Поиск данных или другая аналитика в реляционных таблицах, которые содержат пустые ячейки, могут давать недостоверные или ошибочные результаты. Хранение данных в формате XML может помочь предотвратить такие ошибки. Некоторые приложения постоянно производят такие атрибуты, значения которых пусты или не определены. Данные часто содержат такие атрибуты, когда существует большое количество возможных атрибутов.
- Компоненты объекта имеют смысл в контексте только данного объекта. То есть, компоненты принадлежат объекту. Опасность заключается в нормализации данных до такой степени, что вам приходится соединять многочисленные столбцы при выполнении каждого запроса.
- Данные, небольших размеров, часто в высокой степени структурированы и могут быть критичными для бизнес-приложений. Однако, при нормализации данных небольших размеров легко прийти к громоздким реляционным схемами, которые требуют сложного управления базой данных.
Привели бы реальные примеры что-ли.
ОтветитьУдалить