четверг, 26 августа 2010 г.

Часть 4: Реализация механизмов поддержки и порождения ссылок уровня хранения на базе системы хранения XML данных XSS

1 Система хранения данных XSS

Общие сведения
XSS (Xml Storage System) – это система долговременного хранения XML данных, состоящая из двух подсистем:
· Подсистемы хранения (ПСХ)
· Подсистемы обеспечения многопользовательского доступа (ПСМД)
Плюс клиентская часть XSS (CXSS).
clip_image002
Рис. 1. Схема сервера XSS.
ПСХ решает задачи хранения XML деревьев. В качестве внутреннего хранилища могут выступать РБД или файловая система. На уровне ПСХ реализуется функциональность разбора линков и построения общего XML дерева (с разобранными ссылками), над которым организуется реализация аппарата XPath.
ПСМД обеспечивает поддержку многопользовательского доступа. ПСМД отслеживает взаимодействие пользователей c ПСХ, хранит текущие занятые пользователями деревья и узлы и, в рамках объединенного протокола, помечает разрешенную/запрещенную коррекцию. Кроме того, ПСМД обеспечивает хранение всех произведенных средствами объединенного протокола изменений, поддерживает операции запроса истории и отката к предыдущим состояниям.
ПСХ может использоваться в двух вариантах – как непосредственный источник XML данных (локальный вариант), так и источник данных для ПСМД (централизованного многопользовательского хранения). В связи с чем, протокол взаимодействия с ПСМД и ПСХ должен быть объединением протоколов ПСХ и ПСМД. Причем, ПСХ должна обеспечивать взаимодействие по объединенному протоколу для использования локальной и централизованной версии XSS без адаптации взаимодействующих подсистем. При работе в локальной версии часть протокола централизованной версии должна возвращать значения в соответствии с логикой отсутствия ограничений на какие-либо операции.
Предлагаемые в рамках системы долговременного хранения XML данных XSS позволяет решить следующие задачи:
· Общая функциональность. В рамках системы XSS реализуется аппарат хранения xml-документов с поддержкой XPath запросов и запросов, реализующих CRUD операции над деревьями, поддеревьями, элементами и атрибутами документов, находящихся в хранилище.
· Взаимодействие с XSS. Работа с хранилищем организуется посредством протокола https с поддержкой удаленного взаимодействия через интернет или в локальном режиме без установки сервера для поставки XSS как части конечной системы.
· Многопользовательский доступ. Единицей, блокируемой в рамках транзакции, является элемент или поддерево, что позволяет обеспечить одновременную работу нескольких пользователей с документами хранилища.
· Работа с большими массивами данных. В рамках аппарата хранения, реализованы механизмы ссылок и операции выделения частей документов как единиц, загрузка которых осуществляется итеративно, при первом обращении. Что позволяет распределить задержки обработки больших документов по времени и увеличить производительность сервера при работе с большими объёмами данных.
· Возможности по администрированию. В рамках системы XSS поставляется подсистема CXSS, позволяющая решать административные задачи от управления пользователями до выполнения операций резервного сохранения/восстановления данных и мониторинга активности.
Подсистема хранения выполняет следующие функции:
· Получение списка дочерних элементов. В качестве параметра передается id корневого элемента. Если id = null, возвращается список корневых элементов всех XML документов ПСХ.
· CRUD[1] операции над элементом. В рамках операции создания передаётся id родительского элемента. Если id = null, генерируется новый XML документ в рамках ПСХ, а созданный узел становится корнем. В остальных операциях в явном виде передается id элемента.
· CRUD операции над деревом элементов. В рамках данного раздела производятся групповые операции над иерархиями элементов. В рамках операции создания передаётся id родительского элемента. Если id = null, генерируется новый XML документ в рамках ПСХ, содержащий передаваемое дерево. В остальных операции в явном виде передаётся id элемента-корня дерева.
· Контроль ссылочной целостности. Ссылки на элементы должны хранится в хэш-таблице, с хэш-индексом по id ссылающихся элементов. Удаление элемента, в случае наличия на него ссылок, должно быть запрещено. При загрузке элемента, с
непустым атрибутом link, должно контролироваться наличие элемента с заданным id и, в случае корректности, ссылка должна фиксироваться в хэш-таблице.
· Контроль типов. Типы элементов уникальны. При создании/коррекции элемента существующего в системе типа, должно контролироваться совпадение структуры элемента. Предлагается организовать такой контроль по средствам хэш-таблицы типов как в предыдущем разделе.
· Контроль типов-ссылок. Тип элемента, на который ссылается link, должен соответствовать типу элемента-ссылки. При этом, структура элемента-ссылки должна не содержать никаких атрибутов и элементов, кроме id и link.
· Понятие совместимости и наследования типов. Представляет собой набор иерархию наследования типов, для реализации свойств ООА над иерархией элементов. Суть – наследование и переопределение структуры элемента.
· Запрос поддерева типа по существенным типам или типам игнорирования. Операция выделяет из дерева, заданного id корневого элемента, поддерево, листья ми которого являются элементы некоторого типа. Узлы поддерева составляют элементы существенных типов (передаётся как массив типов) или элементы типов отличных от типа игнорирования (передаётся массив типов).
· Выполнение XPath запроса над поддеревом элементов. В параметрах передаётся id родительского элемента дерева, над которым выполняется запрос. Если id = null, запрос выполняется над общим деревом.

Протокол взаимодействия
Взаимодействие с хранилищем происходит посредством объединенного протокола (ОП). Это протокол взаимодействия модуля обработки запросов и внешних систем. Он реализует действия с XML данными (работа с элементами и деревьями) и итеративную загрузку файлов.
П3 = (command, data) : (stream, err_code)
command = {“get_sublist” | “get_elem” | “set_elem” | “create_elem” | “del_elem” | “get_subtree” | “set_subtree” | “create_subtree” | “del_subtree” | “get_typedtree” | “get_xPath” }
П3.1 = (“get_sublist”, elem_id | null) : (xml_stream | null, err_code)
П3.2 = (“get_elem”, elem_id) : (xml_stream | null, err_code)
П3.3 = (“set_elem”, xml_stream) : (null , err_code)
П3.4 = (“create_elem”, parent_elem_id | null) : (xml_stream | null, err_code)
П3.5 = (“del_elem”, elem_id) : (err_code)
П3.6 = (“get_subtree”, elem_id) : (xml_stream | null, err_code)
П3.7 = (“set_subtree”, xml_stream) : (null , err_code)
П3.8 = (“create_subtree”, parent_elem_id | null) : (xml_stream | null, err_code)
П3.9 = (“del_subtree”, elem_id) : (err_code)
П3.10 = (“get_typedtree”, parent_elem_id | null, included_types, excluded_types) : (xml_stream | null, err_code)
П3.11 = (“get_xpath”, parent_elem_id | null, xpath_text) : (xml_stream | null, err_code)

Поддержка ссылок и кэширование
В рассмотренной выше иерархической модели данных одним из недостатков называлось избыточное дублирование данных, возникающее из строгого ограничения иерархической модели – у каждого элемента один родитель. Это ограничение можно было бы обойти (таким образом модифицировав саму модель данных) с помощью ссылок. В нотации XML описан механизм определения ссылок в рамках XML представления данных, но его поддержка в различных парсерах либо не реализована, либо реализована без возможности итеративной загрузки. Благодаря равномерному распределению вычислительных ресурсов разбора больших файлов по времени, итеративный разбор частей документа позволил бы работать с XML документами больших объёмов. Кроме того, это позволило бы переиспользовать данные на уровне хранения. В системе XSS поддержана итеративная загрузка документов с помощью механизма ссылок (линковки). Это позволило обойти ограничение иерархической модели, связать элементы разных деревьев и исключить при этом необходимость дублирования данных для раскрытия множественной ссылочности.
Все элементы (тэги), хранящиеся в XSS, имеют обязательный атрибут id, идентифицирующий их, и опциональный атрибут link. Непустой атрибут link содержит идентификатор элемента и таким образом указывает на узел другого дерева. На стороне приложения ссылки указываются разработчиками с помощью программного атрибута LK (Link Key), применяемого к полям или свойствам объекта. При сохранении такого объекта, XML тэг, соответствующий полю или свойству, будет содержать XML-атрибут link, указывающий на другое поддерево.
Кэш хранилища XSS позволяет оперативнее обращаться к одним и тем же документам в течение одного сеанса работы сервера. При первом обращении к документу его содержимое загружается в память, и в дальнейшем выполнение запросов к этим данным происходит быстрее. Выгрузка документов из памяти происходит по необходимости.

2 Сравнение хранилищ данных

При исследовании существующих средств хранения данных в XML представлении и определении областей применимости каждого средства, были выявлены следующие существенные характеристики:
1. Поддержка native XML
Хранение XML документов без приведения к реляционному виду. Операции над документами хранилища выполняются с помощью XPath/XQuery запросов.
2. Поддержка реляционного представления
Хранение XML документов с приведением к реляционному виду. Операции над документами в хранилище выполняются с помощью SQL запросов.
3. Поддержка смешанного представления
Хранение XML документов возможно как с приведением к реляционному виду, так и в native XML формате. Соответственно, операции над документами в хранилище выполняются с помощью SQL и XPath/XQuery запросов.
4. Поддержка итеративного разбора ссылок XLink/XPointer
В нотации XML описан механизм определения ссылок в рамках XML представления данных. Благодаря равномерному распределению вычислительных ресурсов разбора больших файлов по времени, итеративный разбор частей документа позволил бы работать с XML документами больших объемов. Кроме того, механизм линковки должен сопровождаться контролем ссылочной целостности данных сервера.
5. Поддержка мультидоступа
Функциональность параллельной работы пользователей с документами XML. Обеспечение транзакционной целостности данных при мультидоступе.
6. Атомарный элемент блокировки
При транзакционном многопользовательском доступе большое влияние на масштабируемость и область применимости оказывает размер части документа, блокируемой при транзакционной обработке.
7. Поддержка протоколирования изменений и откатов.
Функциональность ведения протоколов операций и откатов системы к предыдущему состоянию позволяет обеспечить высокую безопасность данных не только на низком уровне хранения, но и на логическом уровне.
8. Оценка области применения
На основании проведенного анализа приводится оценка области применения системы на базе рассматриваемого хранилища.
В ходе анализа были рассмотрены следующие хранилища данных: XSS, реляционные БД (MS SQL Server 2005 и MySql 5.0), XML БД Tamino. В таблице 1-1 приведены сравнительные характеристики систем.
Таблица 1‑1. Сравнительные характеристики сервера XSS, реляционных и XML баз данных.
Файловые Реляционные XML БД
XSS MS SQL Server 2005 MySql 5.0 Tamino
1 +
Ядро
+
Тип данных
- +
Ядро
2 - + + -
3 - + - -
4 + - - -
5 + + + +
6 Любое поддерево документа XML документ - XML документ
7 + - - -
8 I II, III III IV
Оценки характеристик хранилищ:
I. Система хранения XML представления данных с поддержкой ссылок, итеративной подгрузкой частей документа, многопользовательского доступа, блокировок и поддержкой механизмов исполнения XPath запросов.
II. Организация систем на базе XML типа данных реляционной БД обеспечивает поддержку многопользовательского доступа и позволяет использовать XPath/XQuery аппарат запросов. На базе таких хранилищ возможно построение системы распределенной обработки данных. Поддержка смешанного хранения XML позволяет максимизировать производительность при чтении данных, но при модификации требует актуализации данных в обоих представлениях.
III. Приведения XML к реляционному виду обеспечивает поддержку групповых операций и всех плюсов использования реляционной модели. Но такое приведение неоптимально и имеет высокую трудоемкость реализации логики взаимодействия хранилища с частями системы и бизнес-логики обработки.
IV. XML база данных обеспечивает богатый аппарат администрирования и использования XPath/XQuery. Но из-за сложности операций над XML спектр разрешимых задач на больших объемах данных ограничен вычислительной мощностью системы.
По оценкам характеристик наиболее подходящей системой для хранения слабоструктурированных иерархических данных большого объема является сервер XSS. Его ключевые особенности – поддержка ссылок и возможность итеративной загрузки данных на уровне хранилища. Однако механизм ссылок должен быть поддержан и на уровне клиента. Также поскольку область задач предполагает изменение структуры данных во времени и изменение частоты обращения к данным во времени, то необходимо реализовать автоматическую расстановку ссылок. За счет распределения нагрузок по времени и минимизации избыточности данных это позволит добиться максимального быстродействия загрузки данных на широком классе задач различных областей применения сервера.

[1] CRUD – четверка операций: создание, чтение, обновление, удаление (Create, Read, Update, Delete)

Комментариев нет:

Отправить комментарий