понедельник, 11 января 2010 г.

Сравнение реляционного и XML методов хранения данных

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 может помочь предотвратить такие ошибки. Некоторые приложения постоянно производят такие атрибуты, значения которых пусты или не определены. Данные часто содержат такие атрибуты, когда существует большое количество возможных атрибутов.
  • Компоненты объекта имеют смысл в контексте только данного объекта. То есть, компоненты принадлежат объекту. Опасность заключается в нормализации данных до такой степени, что вам приходится соединять многочисленные столбцы при выполнении каждого запроса.
  • Данные, небольших размеров, часто в высокой степени структурированы и могут быть критичными для бизнес-приложений. Однако, при нормализации данных небольших размеров легко прийти к громоздким реляционным схемами, которые требуют сложного управления базой данных.

1 комментарий: