Вы находитесь на страницах старой версии сайта.
Переходите на новую версию Interface.Ru

RDM XML 2.0

В последнее время язык XML (Extensible Markup Language) все чаще используется для хранения данных и обмена ими через Интернет. Большинству XML-приложений необходимы эффективные средства хранения и поиска содержимого XML-документов.

RDM XML предназначен для эффективного представления XML-документов и запросов по ним. RDM XML включает в себя ядро объектно-ориентированной иерархической базы данных Birdstep RDM Mobile. Такое XML-представление данных является одним из основных преимуществ RDM XML в сравнении с другими XML-продуктами для баз данных.

XML-документы хранятся в иерархических узловых структурах, приспособленных для быстрых операций поиска. В базе данных могут храниться любые правильно построенные XML-документы. RDM XML поддерживает описания DTD и пространства имен XML.

Чтобы помочь пользователю в процессе разработки и развертывания продукта, RDM XML предоставляет такие интерфейсы программирования приложений, как DOM, SAX и XPath.

Требования

XML-данные могут быть представлены последовательным или иерархическим образом.

Последовательные XML-данные представляют собой последовательность символов, т.е., поток данных или файл, удобный для обмена данными или для чтения человеком.

Иерархическое XML-представление отображает XML-документ в дерево данных, которое эффективно для хранения, обработки и поиска информации.

XML-документ называется правильно построенным, если он соответствует своей предопределенной структуре. Кроме того, XML-документ считается правильным, если в нем имеется описание внутренней структуры (например, DTD - "Описание типа документа"), которому он соответствует.

Информация, содержащаяся в XML-документе, может быть отображена в различных "информационных позициях". Полный набор таких информационных позиций, которые могут встретиться в XML-документе можно найти по адресу www.w3c.org. Информационная система, предназначенная для работы со случайными XML-документами, должна уметь обрабатывать все виды информации, определенные в документе "Информационный набор XML".

Структура XML-документов может быть определена заранее (например, с использованием DTD) или нет. Хотя априорное знание структуры документа позволяет оптимизировать хранение и поиск информации, оно не требуется стандартами XML и, следовательно, не входит в число требований к успешной архитектуре базы XML-данных.

Условия, необходимые для адаптации решения базы XML-данных:

Кроме того, предполагается, что продукт RDM XML должен реализовать преимущество использования в ядре БД объектно-ориентированного иерархического представления данных, идеально подходящего для портативных, мобильных и карманных устройств.

Архитектура

RDM XML состоит из диспетчера базы данных RDM Mobile и уровня XML. Кроме того, он обеспечивает интерфейсы программирования приложений С++ и Java.

Функциональные возможности XML в RDM Mobile реализованы с помощью четырех независимых объектов:

RDM XML включает в себя общий функциональный уровень, который улучшает выполнение некоторых операций, используемых в четырех основных объектах (рис. 1). Для упрощения использования последовательных данных (XML-файлов), RDM Mobile XML включает в себя внешний модуль ввода/вывода SAX.



User Application Пользовательское приложение
Database management Управление базой данных
XPath XPath
DOM DOM
SAX SAX
SAX I/O Ввод/вывод SAX
XML Shared functionality Совместно используемые функции XML
RDM Mobile Database Manager Диспетчер БД RDM Mobile

Рисунок 1. Архитектура XML в RDM Mobile.

Объектная модель документа (DOM)

Объектная модель документа представляет собой стандарт W3C, определяющий обобщенный интерфейс объектно-ориентированной иерархической структуры XML-документа.

DOM определяет лишь интерфейс патентованного решения базы данных и не содержит предположений о подробностях ее реализации. Тем не менее, в нее входят несколько требований, касающихся поддержки функциональных возможностей.

XML-документ, к которому выполняется обращение через DOM-интерфейс, должен находиться в фактическом состоянии в момент обращения. Другими словами, изменения, вносимые другими пользователями в содержимое базы данных, должны немедленно отображаться через DOM.

Объекты в DOM должны быть "живыми". Поэтому, при итеративном обращении к подчиненным объектам элемента модель DOM должна отразить удаление какого-либо подчиненного объекта другим пользователем, даже если это удаление произошло после начала обращения. Хотя такое поведение просто реализовать в памяти, в целом его достаточно сложно реализовать в базах данных. Причиной является трудно реализуемая поддержка согласованности между файлом и образами данных в памяти.

Интерфейсы DOM определяются с использованием синтаксиса Java и IDL. В их спецификации широко используются исключения, другие интерфейсы и множественное наследование. Эту спецификацию можно достаточно эффективно реализовать в Java, но сложно отобразить в более традиционных объектно-ориентированных языках, таких как С++.

Вследствие ориентированности своей спецификации на язык Java, стандарт устанавливает, что для всех текстовых строк, передаваемых методам DOM в качестве параметров, должна использоваться кодировка UTF-16.

Что было сделано

Очевидно, что интерфейс DOM можно эффективно применить в базе данных RDM Mobile, которая по своей природе является иерархической и объектно-ориентированной. В RDM Mobile определено и соблюдается отображение между интерфейсами DOM и внутренними объектами базы данных.

Метод доступа к содержимому базы данных RDM Mobile (механизм курсора) использует преимущество системы отображения памяти RDM Mobile и отображает динамические изменения этого содержимого. Таким образом, реализация RDM DOM является новой уникальной технологией в области баз XML-данных.

Целевые платформы для RDM Mobile могут не поддерживать виртуальную машину Java или интерфейс JNI (Java Native Interface), которые нужны для интеграции ядра RDM Mobile в среду Java. Чтобы устранить необходимость использования Java, в DOM были реализованы интерфейсы С++. Хотя интерфейс С++ для DOM является отдельной разработкой, он сохраняет однозначное отображение, определенное в стандарте DOM. Для платформ, поддерживающих Java и JNI, предоставляется интерфейс Java.

Поскольку требование кодировки UTF-16 подразумевает программную среду Java, оно может иметь отрицательный эффект в среде С++. Например, UTF-8 является кодировкой, принятой по умолчанию для XML-документов, и внутренней кодировкой RDM Mobile. Поэтому RDM Mobile XML позволяет использовать как кодировку UTF-8, так и UTF-16, а также ряд других кодировок, поддерживаемых ядром базы данных.

Язык путей XML (XPath)

Сердцем любой базы данных является подсистема поиска и получения данных БД. Ее гибкость и эффективность часто является основным показателем производительности всей базы данных.

Используемый в базе XML-данных язык запросов XPath охватывает ту же функциональную сферу, что и язык SQL в реляционных БД. Согласно стандарту W3C, его синтаксис позволяет определить запросы, необходимые для оценки выражений с использованием содержимого базы данных.

Выражения XPath обычно используются для фильтрации узлов какого-либо набора, генерации нового набора узлов в виде функции исходного набора или преобразования набора узлов в текстовое представление.

Основные операции

В число основных параметров, необходимых для оценки выражения XPath, входит строка с самим выражением и контекстный узел, откуда берется оцениваемое выражение. Выражение записывается в виде "пути" подвыражений. Каждое подвыражение содержит "ось" (спецификацию части дерева XML, в которой хранятся нужные результирующие узлы), метку (например, имя элемента) и необязательный предикат (т.е., выражение, использующее операторы и функции языка XPath). Результат выражения получается путем последовательного выполнения подвыражений. Возможны следующие четыре типа результатов: логический, целый, строка или набор узлов.

Что было сделано

RDM XML содержит новейшее ядро XPath, являющееся интегральной частью системы, доступ к которому осуществляется через набор интерфейсов DOM. Выражение XPath разбирается на составляющие и преобразуется в абстрактное синтаксическое дерево. Это дерево сохраняется в объекте памяти, что значительно ускоряет последовательное выполнение одного и того же выражения в различных контекстах (т.е., в различных узлах документа).

С точки зрения программиста, функциональность XPath реализуется через расширение стандарта DOM "Document Object Model (DOM) Level 3 XPath Specification". Поэтому программисты могут легко реализовать такие операции, как навигация по XML-документам, выполнение выражений XPath в выбранном узле, перенос результирующего набора узлов в узлы DOM и использовать поддержку имен XML.

Простой API для XML (SAX)

Интерфейс SAX (SAX Project Pages, www.saxproject.org) связывает последовательное и иерархическое представления XML-документа. Он является свободным стандартом, который определяется общедоступной реализацией языка Java, и одним из наиболее широко используемых интерфейсов программирования XML-приложений.

SAX представляет собой набор абстрактных программных интерфейсов, которые проецируют документ на поток общеизвестных вызовов методов. Другими словами, SAX следует программной логике обработки документа (последовательный "файл" или иерархическое дерево) и вызывает четко определенные методы в тех случаях, когда он встречает известные структуры XML, такие как тег начала элемента, определение атрибута и т.д. С помощью этих методов реализуются нужные операции над содержимым XML-документа, например, запись информации об узле в файловый поток.

Что было сделано

Компонент SAX в RDM Mobile реализуется в виде двух частей. Первая часть интегрируется в продукт и содержит функции работы с БД, необходимые для хранения и чтения данных, а также для создания символьного потока XML (или его записи в файл). Другая часть ("Ввод/вывод SAX" на рис. 1) основана на общедоступном синтаксическом анализаторе XML под названием Expat и используется для импорта XML-документов в базу данных.

Таким образом, реализация SAX в RDM Mobile может быть использована как для импорта

XML-файла в базу данных, так и для экспорта содержимого базы данных в файл.

Рисунок 2. Пример работы SAX.

В примере на рис. 2 изображено, как считывающий компонент SAX обрабатывает входной файл с помощью синтаксического анализатора XML. В изображенной ситуации курсор устанавливается в начале элемента "ядра". В обрабатывающий интерфейс передается событие SAX типа " startElement" вместе со связанной информацией. Выполняется связанное с событием startElement действие, которое заключается во внесении в базу данных нового элемента с меткой "engine". Впоследствии добавляются еще два атрибута - "size" и "power". После считывания тега "</car>" генерируется событие endElement, получив которое ядро базы данных закрывает объект "engine", обновляет его состояние и продолжает работу.

SAX также используется в обратных процедурах. Начав с выбранного узла, SAX может прочесть содержимое БД в последовательности, заданной документом, и преобразовать информацию в текстовый вид. Для этого действия не требуется модуль "Ввод/вывод SAX".

Диспетчер базы данных

DOM, XPath и SAX определены, как общие XML-интерфейсы со своим соответствующим предназначением, однако для RDM Mobile XML требуются дополнительные функциональные возможности, не охватываемые этими интерфейсами. Компонент диспетчера базы данных предоставляет API для:

Диспетчер базы данных также служит в качестве входа интерфейсов DOM/XPath и SAX.

С точки зрения пользователя, база данных создается или открывается с помощью вызова глобальной функции. В число параметров этого вызова входят желаемая кодировка (например, UTF-16 вместо принятой по умолчанию UTF-8) и выбранный метод обработки транзакции. Этот вызов возвращает интерфейс объекта базы данных, который используется для последующих операций, например, создания нового или просмотра существующего документа, либо для получения дескриптора DOMImplementation. Интерфейс базы данных может также использоваться для группировки фрагментов кода БД в элементарные транзакции.
База данных закрывается простым освобождением ее интерфейса.

Внутреннее представление данных

Хранение данных в RDM XML осуществляется с помощью объектно-ориентированного иерархического ядра БД, которое адаптировано для максимальной эффективности получения XML-данных. Все объекты данных определяются через объявления их классов. Разработчики приложений получают доступ к объектам через их внешний интерфейс. Ядро базы данных поддерживает механизмы наследования и полиморфизма классов.

Структурированные и неструктурированные данные

RDM XML предоставляет возможности для хранения как неструктурированных, так и структурированных XML-данных. Неструктурированные данные хранятся в объектах предопределенных классов. Диапазон предопределенных классов приблизительно соответствует информационным позициям, описанным в рекомендациях W3C "Информационный набор XML".

Для повышения эффективности методов хранения и поиска данных RDM XML с помощью определений типа документа (DTD) создает соответствующие подклассы элементов. В принадлежащих этим подклассам объектах данных сохраняются атрибуты, что повышает эффективность хранения и поиска данных.

Например, на рис. 3 XML-документ содержит два элемента. Элемент "task-description" ("задача-описание") определен через DTD, а его данные хранятся в объекте класса "t-d", который адаптирован к этому типу элемента. Элемент " vacation" не описывается в DTD и хранится в виде объекта, принадлежащего обычному классу "element".

Рисунок 3. Представление текстовых XML-данных. Элемент "task-description" определен через DTD и представлен объектом класса "t-d", который является подклассом предопределенного класса "element".

Важно заметить, что в примере на рис. 3 объекты "task-description" включают в себя предварительно выделенное пространство для значения связанного атрибута. Элемент "vacation" не включает в себя свои атрибуты, а имеет лишь указатель на их связанный список.

Поддержка пространства имен

RDM XML поддерживает пространство имен XML. Описания пространства имен ведутся в специальных объектах, которые связывают идентификационный номер с парой URI/префикс. Каждый элемент включает в себя идентификационный номер пространства имен, который определяет связи его пространства.

Имена атрибутов могут принадлежать другим пространствам имен, отличным от пространства имен соответствующего им элемента. Ядро базы данных выявляет префиксы имен атрибутов путем рекурсивной проверки объявлений пространств имен для родительских узлов.

Дополнительная информация

За дополнительной информацией обращайтесь в компанию Interface Ltd.

Обсудить на форуме Borland

Рекомендовать страницу

INTERFACE Ltd.
Телефон/Факс: +7 (495) 925-0049
Отправить E-Mail
http://www.interface.ru
Rambler's Top100
Ваши замечания и предложения отправляйте редактору
По техническим вопросам обращайтесь к вебмастеру
Дата публикации: 15.01.03