Автор: Пользователь скрыл имя, 01 Мая 2012 в 17:05, курсовая работа
Цель данной работы – исследовать способы хранения XML в базах данных, выявить их достоинства, недостатки, область применения. Для достижения данной цели необходимо решить следующие задачи:
а) выявить особенности языка XML;
б) определить и проанализировать существующие способы хранения XML;
в) определить область применения способов хранения;
г) определить существующие на практике критерии выбора способа хранения;
д) реализовать один из способов хранения XML в базе данных.
Введение
1 ОБЩЕСИСТЕМНЫЙ РАЗДЕЛ
1.1 Языки разметки
1.2 Язык разметки XML
1.2.1 Особенности XML
1.2.2 Синтаксис XML
1.2.3 Структура XML
1.3 Базы данных и системы управления базами данных
1.3.1 Общие понятия о базах данных и системах управления базами данных
1.3.2 Реляционные системы управления базами данных
1.4 Хранение XML
1.4.1 Задача хранения
1.4.2 Документы и данные
1.4.3 Способы хранения XML-документов
1.4.3.1 Хранение в файловой системе
1.4.3.2 Хранение в реляционной базе данных
1.4.3.3 Хранение в БД поддерживающей XML
1.4.3.4 Хранение в специализированных xml-серверах (истинных БД)
1.4.4 Критерии выбора способа хранения
1.5 Обзор готовых продуктов
2 СПЕЦИАЛЬНЫЙ РАЗДЕЛ
2.1 Постановка задачи
2.2 Выбор способа представления XML в РСУБД
2.3 Разработка схемы базы данных
2.4 Выбор средств реализации
2.4.1 Выбор системы управления базами данных
2.4.2 Выбор языка программирования
2.5 Разработка интерфейсного ПО
2.6 Инструкция по применению
ЗАКЛЮЧЕНИЕ
Список использованных источников
Приложение
Приложение А
Приложение Б
Документо-центричными документами (обычно) являются документы, которые созданы для восприятия человеком. Примерами являются книги, сообщения электронной почты, реклама и др. Они характеризуются менее регулярной или иррегулярной структурой, крупно-зернистыми данными (то есть, самые маленькие независимые части данных имеют уровень элементов со смешанным содержимым или целого документа), и содержат много смешанного содержимого. Порядок, в котором следуют соседние элементы, почти всегда имеет значение.
Существует несколько способов хранения xml-документов (смотри рисунок 1.1.):
а) хранение в файловой системе;
б) хранение в БД:
1) реляционной БД;
- BLOB/CLOB;
- побочные таблицы;
- табличное отображение XML документа в базу данных;
- объектно-реляционное отображение XML документа;
2) реляционной БД, поддерживающей работу с xml;
3) хранение в специализированных xml-базах данных:
- текстовые;
- модельные.
Рисунок 1.1 - Способы хранения XML документов
Теперь более подробно рассмотрим каждый способ.
Данный способ представляет собой хранение xml-данных в обычных текстовых файлах с расширением *.xml. Для поиска можно использовать инструменты типа grep (Linux). Для простого контроля транзакций, можно поместить документы в систему контроля, например CVS или RCS. Этот способ обладает рядом достоинств, а именно:
простота организации;
не требует ничего, кроме библиотек для работы с XML (реализующими, например, SAX или DOM API).
К его недостаткам можно отнести:
чрезмерное усложнение доступа к данным при увеличении числа хранимых документов;
отсутствие эффективных инструментов поиска;
медленный поиск информации.
Способ подходит для небольших проектов с малым количеством пользователей [13].
При использовании в качестве хранилища XML реляционной базы данных есть четыре способа для хранения документов. Первый и самый простой – хранение в полях типа BLOB/CLOB.
При данном подходе для хранения xml документов используются столбцы типа BLOB/CLOB. При этом XML-файл сохраняется в структуре внешней памяти как полный текстовый документ с пробелами, комментариями и т.д. в нетронутом виде, при этом он запоминается просто как одна запись (строка символов) в базе данных.
Достоинства данного способа:
Файлы любого размера и глубины (уровня вложенности) могут быть сохранены, если они сформированы в формате XML;
Гарантирует побайтную сохранность исходного документа;
Более высокая по сравнению с текстовыми файлами скорость доступа к информации;
Более структурированное и упорядоченное по сравнению с текстовыми файлами хранение информации;
Контроль транзакций, многопользовательский доступ, безопасность.
Недостатки данного способа:
Сохраненными данными нельзя манипулировать или выбирать их с применением SQL-запросов;
Эффективное изменение документа ограничено, так как оно требует выборки всего файла, внесения изменений и замены документа (в базе данных).
Данный способ применяется в случаях, когда основным назначением XML-документов является инкапсуляция контента в некоторую структуру для преобразования или отображения (публикация в Web) и большинство изменений контента совершаются на уровне документа в целом, тогда данный способ – это оптимальный выбор для структур хранения XML-данных [13].
Более сложный способ хранения XML – использование побочных таблиц.
При этом подходе весь xml документ хранится в виде объекта blob/clob. Значения определенных элементов или атрибутов XML, которые часто используются приложением при поиске документов, извлекаются и заносятся в отдельные (побочные) реляционные таблицы. Для этого необходимо создать пару таблиц: индексную таблицу (известную как боковая таблица в DB2, именно оттуда происходит эта идея) и документную таблицу. Документная таблица содержит первичный ключ и колонку с типом данных BLOB, в которой хранится документ. Индексная таблица содержит колонку, в которой размещаются индексируемые значения и внешний ключ, указывающий на первичный ключ документной таблицы.
Главным улучшением данного метода по сравнению с хранением в виде BLOB/CLOB является значительное ускорение поиска.
Данный способ применим для хранения документо-центричных документов, имеющих какие-либо общие черты, которые впоследствии будут вынесены в побочные таблицы [7].
Третий способ хранения – отображение всего XML документа в таблицы базы данных. Представляет собой дальнейшую модернизацию метода побочных таблиц. При использовании данного метода, все содержимое исходного xml документа разбивается на таблицы и заносится их в базу данных. Обычно каждый элемент XML документа заносится в отдельную таблицу.
Достоинства данного способа:
возможность вставлять, изменять и уничтожать данные в XML-файле таким же образом, как если бы это были SQL-данные;
возможность изменять отдельные элементы без выборки всего документа.
Недостатки данного способа:
сохранение xml документов, в которых уровень вложенности структур велик (то есть, больше 8-10 уровней) может привести к значительной деградации производительности;
отсутствие гарантии сохранения упорядоченности документа, так как многие элементы (такие как комментарии и инструкции по обработке) исчезнут при размещении данных документа в таблицах базы данных.
необходимость приобретения дополнительного ПО для сохранения и извлечения документа;
подходит только для хранения документов со строгой структурой;
сложность обратной сборки (множество join);
большая часть таблиц может "пустовать" для документов, не имеющих регулярной структуры.
Данный способ применяется для хранения дата-центричных документов с четкой структурой [13].
При объектно-реляционном отображении данные в XML-документе моделируются деревом объектов, специфичных для данного типа документов. Затем модель отображается в реляционную базу данных. Используя данный способ, можно сохранять в базе данных XML документы сложной, изменяющейся структуры. Но, при этом невозможно предусмотреть типы данных, содержащиеся в XML документе, поэтому все объекты будут храниться в текстовых полях базы данных, что существенно снизит возможности поиска по документу. Также возникают сложности с преобразованием документа к дереву объектов, выборки дерева из базы данных.
В настоящее время многие реляционные СУБД снабжаются поддержкой xml (В англоязычной литературе такие БД называются XML Enable Database – XED).К этой группе относятся СУБД IBM DB2 версии 8, Oracle Database Server, Microsoft SQL Server, MySQL и др. В таких СУБД мы можем определять столбцы типа XML.
Документы могут быть вставлены в столбец типа XML, могут быть обновлены и в них может производиться поиск. Хотя СУБД может позволить нам манипулировать данными в этом столбце как XML-данными, из этого не обязательно следует, что она хранит и обрабатывает наш XML-документ в натуральном формате XML. СУБД может преобразовывать XML-данные в реляционный тип, a Xpath или XQuery преобразовывать в SQL. Это в основе то же самое, что и отображение документа в таблицы базы данных, выполняемое средствами СУБД. Следовательно, нам не нужно промежуточное ПО для преобразования XML . Или же тип XML может быть внутренне реализован как CLOB с разбором при каждом запросе. Такие СУБД все еще не могут считаться СУБД с натуральным XML. При использовании данного способа мы получаем:
возможность вставки данных в столбец типа XML;
доступность мощи технологий XML (XPath, XQuery и др.);
индексирование данных.
Но, при этом СУБД преобразовывает XML-данные в реляционный тип, a Xpath или XQuery преобразовывать в SQL. То есть этот метод есть ни что иное как хранение с помощью нарезки, при котором промежуточный слой встроен в СУБД, что сказывается на скорости работы, но избавляет от необходимости писать ПО для сохранения и извлечения XML документов.
Истинные БД (XML Native Database - XND) написаны специально для хранения и обработки XML. К этой группе относятся новые программные продукты, созданные специально для работы с XML-данными, такие как Content@ XML фирмы Xyvision Enterprise Solution, Tamino XML Database фирмы Software AG, X-Hive/DB фирмы X-Hive, dbXML - свободно распространяемый продукт dbXML Group и другие.
Понятие “Native XML Database” (NXD) было введено для отличия, что данный тип баз данных основан на использовании внутреннего представления XML в отличие от XML-надстроек над существующими реляционными базами данных (XML enabled DB), такими как Oracle, PosgreSQL, MS SQL Server, в которых реализована XML-надстройка (XML-SQL) в соответствии со стандартом доступа SQL-2003.
Определены следующие признаки XML native DB [22]:
Она задает (логическую) модель XML-документа - а не данных в документе - и сохраняет и извлекает документ в соответствии с этой моделью. Как минимум, модель должна включать в себя элементы, атрибуты, секции PCDATA, и порядок документа. Примерами таких моделей является модель данных XPath, XML Infoset, модели, основанные на DOM и событиях в SAX 1.0.
Фундаментальной единицей (логического) хранения в них является XML-документ, также, как в реляционных базах данных фундаментальной единицей (логического) хранения является один ряд таблицы. (Фундаментальная единица хранения - это контекст самого низкого уровня, в который встраивается данный кусочек данных.)
Не обязательно придерживаться какой-то определенной физической структуры хранения. Например, такая база может строиться на основе реляционной, иерархической или объектно-ориентированной базе данных или использовать собственный формат хранения, например, в виде индексированных и заархивированных файлов.
Архитектура истинных XML-баз данных делится на две широкие категории: текстовые и модельные.
В текстовых истинных XML-базах данных XML хранится как текст. Это может быть файл в файловой системе, BLOB в реляционной базе данных, или любой другой текстовый формат. (В этом отношении реляционная база данных, в которую встроено распознающая XML обработка колонок типа CLOB (Character Large OBject) является, фактически, текстовой истинной XML-базой данных.)
Общим для всех текстовых истинных XML-баз данных является индексирование, которое позволяет машине запросов легко переходить в любую точку любого XML-документа. Это дает таким базам огромное увеличение скорости доступа при извлечении целого документа или фрагментов документов. Причина в том, что база данных производит один поиск индекса, один раз позиционирует читающую головку на диске и извлекает целый документ или его фрагмент за один цикл чтения, поскольку необходимый фрагмент хранится в виде последовательных байтов на диске. И напротив, воссоздание документа из кусочков, как это делается в реляционной базе и некоторых модельных истинных XML-базах, требует многократных поисков индекса и многократных чтений с диска.
В модельных БД вместо хранения XML-документа как текста, в них строится внутренняя модель документа и он сохраняется в этой модели. Как именно она сохраняется - зависит от базы данных. Данный способ обладает следующими достоинствами:
операции поиска, выделения и обновления не требуют разбора XML;
операции могут выполняются с большой скоростью;
доступна вся мощь XML технологий (XQuery, XLink, XPath и др.).
Применяется для хранения XML документов со смешанным содержанием, документов со сложным смешанным составом элементов и атрибутов, и необходимо выполнять поиск по структуре XML и содержанию [12].
Сводную характеристику возможностей способов хранения приведем в таблице 1.1.
4
Способ хранения | Доступность XML технологий | Быстрое добавление и извлечение документов | Изменение отдельных элементов без извлечения документа | Хранение данных иррегулярной структуры | Транзакции, триггеры, разграничение доступа, обеспечение целостности и др. | Точное сохранение исходного документа (комментарии, CDATA) | Хранение документа с изменяющейся структурой | |
Файловая система | * |
|
| * |
| * | * | |
Реляционная база данных | Столбец BLOB/CLOB |
| * |
| * | * | * | * |
Побочные таблицы |
| * | Элементы инд. табл. | не полностью | * | не полностью | не полностью | |
Отображение на основе таблиц |
|
| * |
| * |
|
| |
Объектно-реляционное отбражение |
|
| * | * | * |
| * | |
База данных с поддержкой XML | * |
| неизвестно | * | * | * | * | |
Истинная XML база данных | * | * | * | * | * | * | * |
Информация о работе Методы хранения XML в реляционных базах данных