Sedna (база данных) — различия между версиями

Материал из Национальной библиотеки им. Н. Э. Баумана
(не показана одна промежуточная версия этого же участника)
Строка 11: Строка 11:
 
| website                = [http://sedna.org/ Официальный сайт Sedna]
 
| website                = [http://sedna.org/ Официальный сайт Sedna]
 
}}
 
}}
'''Sedna''' - СУБД, разработанная специально для хранения и обработки XML-данных отделом управления данными и информационных систем Института системного программирования РАН.
+
'''Sedna''' - [[Кросс-платформенное программное обеспечение| СУБД]], разработанная специально для хранения и обработки XML-данных отделом управления данными и информационных систем Института системного программирования РАН.
 
+
Sedna - прирождённая (native) XML-СУБД, она была разработана, чтобы облегчить работу с большими объемами XML-данных.Она предоставляет полный набор основных сервисов баз данных: постоянное хранение, ACID-транзакции, безопасность, индексы, "горячее" резервное копирование. Работа с XML осуществляется при помощи специального языка XML Query (XQuery). При помощи XQuery на основе извлекаемых из БД данных можно генерировать непосредственно XHTML-страницы (или фрагменты страниц).Также Sedna предоставляет API для работы с БД на множестве языков: [[C_(язык программирования) | C]], [[Java]], [[Scheme]], PHP<ref>[https://ru.wikipedia.org/wiki/PHP/ PHP (язык программирования)]</ref> , [[Python]] и др.
==О СУБД==
+
Sedna - прирождённая (native) XML-СУБД, она была разработана, чтобы облегчить работу с большими объемами XML-данных.Она предоставляет полный набор основных сервисов баз данных: постоянное хранение, ACID-транзакции, безопасность, индексы, "горячее" резервное копирование. Работа с XML осуществляется при помощи специального языка XML Query (XQuery). Этот язык стандартизирован консорциумом W3C. При помощи XQuery на основе извлекаемых из БД данных можно генерировать непосредственно XHTML-страницы (или фрагменты страниц). Для работы с Sedna используется открытый сетевой протокол Sedna Client-Server Protocol. Sedna предоставляет API для работы с БД на множестве языков: C, Java, Scheme, PHP, Python, Scheme и др.
+
 
+
Разработчики Sedna стремились объединить в ней две системы: во-первых, полнофункциональную БД с поддержкой всех традиционных механизмов (запросы, обновление данных, обработка параллельных транзакций, оптимизация запросов), во-вторых - среду для обработки XML-данных с использованием различных языков программирования. С целью наиболее эффективной реализации этого функционала, СУБД разрабатывалась с нуля, а не в качестве надстройки над существующей.
+
  
 
==Архитектура==
 
==Архитектура==
  
"Центром" системы является ''Регулятор''. Он управляет подсистемами, контролирует выполнение транзакций. ''Слушатель'' отлавливает запросы на подключение новых клиентов. После авторизации клиента, ''Слушатель'' инкапсулирует его сессию в новом компоненте ''Подключение'', и устанавливает им прямую связь. Дальнейшая работа клиента происходит через ''Подключение''. При получении запроса на начало транзакции, компонент ''Подключение'' создаёт компонент ''Транзакция'', содержащий все необходимые для выполнения запроса компоненты: ''Парсер'', ''Оптимизатор'' и ''Исполнитель''.
+
"Центром" системы является ''Регулятор'' (см рис.1). Он управляет подсистемами, контролирует выполнение транзакций. ''Слушатель'' отлавливает запросы на подключение новых клиентов. После авторизации клиента, ''Слушатель'' инкапсулирует его сессию в новом компоненте ''Подключение'', и устанавливает им прямую связь. Дальнейшая работа клиента происходит через ''Подключение''. При получении запроса на начало транзакции, компонент ''Подключение'' создаёт компонент ''Транзакция'', содержащий все необходимые для выполнения запроса компоненты: ''Парсер'', ''Оптимизатор'' и ''Исполнитель''.
  
 
В начале обработки запрос передаётся ''Парсеру'', который преобразует его в логическое представление (дерево операций). С деревом работает ''Оптимизатор'', который на его основе генерирует план выполнения запроса - дерево низкоуровневых операций над физическими структурами данных. ''Исполнитель'' взаимодействует с тем экземпляром ''Менеджера базы данных'', к которому направлен запрос, и выполняет полученный план.
 
В начале обработки запрос передаётся ''Парсеру'', который преобразует его в логическое представление (дерево операций). С деревом работает ''Оптимизатор'', который на его основе генерирует план выполнения запроса - дерево низкоуровневых операций над физическими структурами данных. ''Исполнитель'' взаимодействует с тем экземпляром ''Менеджера базы данных'', к которому направлен запрос, и выполняет полученный план.
  
 
Каждый ''Менеджер базы данных'' взаимодействует с единственной базой данных. Он содержит ''Менеджер индексов'', для работы с индексами над данной БД, ''Менеджер буферов'' для взаимодействия между реальной ОП и диском, ''Менеджер транзакций'' контролирует корректность параллельного выполнения транзакций.
 
Каждый ''Менеджер базы данных'' взаимодействует с единственной базой данных. Он содержит ''Менеджер индексов'', для работы с индексами над данной БД, ''Менеджер буферов'' для взаимодействия между реальной ОП и диском, ''Менеджер транзакций'' контролирует корректность параллельного выполнения транзакций.
 
+
[[ File: Sednastruct.png | 700px | center |thumb| {{center| Рисунок 1 – Структура СУБД Sedna}} ]]
 
==XQuery==
 
==XQuery==
XQuery - стандартизованный язык запросов для работы с документами, БД, веб-страницами и многим другим в формате XML. Он предоставляет средства для извлечения и управления данными из XML-документов, или любыми другими, которые могут быть представлены в виде XML.  
+
XQuery<ref>[https://ru.wikipedia.org/wiki/XQuery/ XQuery — язык запросов]</ref> - стандартизованный язык запросов для работы с документами, БД, веб-страницами и многим другим в формате XML. Он предоставляет средства для извлечения и управления данными из XML-документов, или любыми другими, которые могут быть представлены в виде XML.  
 
Он также позволяет создавать новые XML-документы. Он предоставляет синтаксис для работы как с элементами, атрибуты которых известны заранее, так и с динамически собираемыми узлами.  
 
Он также позволяет создавать новые XML-документы. Он предоставляет синтаксис для работы как с элементами, атрибуты которых известны заранее, так и с динамически собираемыми узлами.  
 
Язык основан на XQuery and XPath Data Model (XDM), использующей древовидную модель данных XML-документа.  
 
Язык основан на XQuery and XPath Data Model (XDM), использующей древовидную модель данных XML-документа.  
Строка 44: Строка 40:
 
* Поддерживает "горячее" инкрементальное резервное копирование
 
* Поддерживает "горячее" инкрементальное резервное копирование
 
* Поддерживает внешние XQuery функции, написанные на C.
 
* Поддерживает внешние XQuery функции, написанные на C.
Кроме того, разработчики серьёзно заботятся о поддержке своего продукта: на официальном сайте действует центр поддержки, форум, активно принимаются багрепорты и предложения. Они предоставляют множество различных драйверов: API для Java/C/PHP/Python/Ruby/Perl/Delphi/C# и др., XML драйвера для Java, модуль для интеграции с Apache HTTP сервером.
+
Кроме того, разработчики серьёзно заботятся о поддержке своего продукта: на официальном сайте действует центр поддержки, форум, активно принимаются багрепорты и предложения. Они предоставляют множество различных драйверов, XML драйвера для Java, модуль для интеграции с Apache HTTP сервером.
 +
==Организация данных==
 +
Данные организации в Седна разработаны с целью обеспечения баланса в производительности между запросами XML и выполнением обновления. Два основных проектных решений по организации данных в Седна являются:
 +
 
 +
*"Прямые указатели" используются для представления XML узлов связи , таких как родитель, ребенок, и двойники из них. В отличие от реляционных -На подходы , которые требуют исполнительское объединений для прохождения документа XML, в обход Седна выполняется просто после прямой указатель.
 +
*"Описательная схема" управляемого общества хранения стратегия разработана , которая состоит из кластерных узлов из документа XML в соответствии с их положением в описательной схеме документа. В отличии от предписывающей схемы, которая известна заранее , и, как правило , указанная в DTD или XML - схеме , описательная схема генерируется из данных динамически (и поддерживается приращение ) и представляет собой краткую и точные структуры резюме для данных. Использование описательных схем вместо предписывающих одной делает стратегию хранения применима к любому документу XML, даже тот , который поставляется без предписывающей схемы.
 +
Далее показаны общие принципы организации данных в Седна(см. рисунок 2). Описательная схема<ref group="Источник"> Bases de Datos XML Nativas //Базы данных с нативным XML : https://bbddxml.wordpress.com/category/bases-de-datos-xml-nativas/ (дата обращения: 23.06.2020).</ref> представлена в виде дерева узлов схемы является центральным компонентом в организации данных. Каждый узел схемы метят типа XML узла (например , элемент , атрибут , текст и т.д.) и имеет указатель на данные блоков , которые хранят XML - узлы , соответствующие данный узел схемы. В зависимости от их узлов типа, некоторые узлы схемы также помечены именами (например, узлы элементов, узлы атрибутов). Блоки данных , связанные с общим узлом схемы связаны через указатели в двунаправленный список . Узел дескрипторы в списке блоков частично упорядоченные в соответствии с порядком документа.
  
 +
[[ File: Sednaorganize.png | 700px | center |thumb| {{center| Рисунок 2 – Пример организации данных в Sedna}} ]]
 +
А этот скрипт - внутреннее представление в Sedna этой организации данных.
 +
<syntaxhighlight lang="XML">
 +
<library>
 +
  <book>
 +
    <title>Foundations of Databases</title>
 +
    <author>Abiteboul</author>
 +
    <author>Hull</author>
 +
    <author>Vianu</author>
 +
  </book>
 +
  <book>
 +
    <title>An Introduction to Database Systems</title>
 +
    <author>Date</author>
 +
    <issue>
 +
      <publisher>Addison-Wesley</publisher>
 +
      <year>2004</year>
 +
    </issue>
 +
  </book>
 +
  ...
 +
  <paper>
 +
    <title>A Relational Model for Large Shared Data Banks</title>
 +
    <author>Codd</author>
 +
  </paper>
 +
</library>
 +
</syntaxhighlight>
 
==Применение Sedna==
 
==Применение Sedna==
 +
У Sedna есть такие преимущества, которые делают её одной из самых комфортных СУБД для работы с XML-документами<ref group="Источник"> Sedna Documentation // Документация Sedna : https://www.sedna.org/documentation.html/ (дата обращения: 23.06.2020).</ref>
 
====Работа с иерархическими данными====
 
====Работа с иерархическими данными====
Вполне очевидное применение XML-СУБД, поскольку сам формат XML подразумевает иерархичность. При этом иерархия данных может иметь произвольную глубину, что может замедлять работу баз данных, использующих объектно-реляционные отображения. Будучи прирождённой XML-СУБД, Sedna позволяет эффективно работать с таким типом данных.
+
Вполне очевидное применение XML-СУБД, поскольку сам формат XML подразумевает иерархичность. При этом иерархия данных может иметь произвольную глубину, что может замедлять работу баз данных, использующих объектно-реляционные отображения. Будучи прирождённой XML-СУБД, Sedna позволяет эффективно работать с таким типом данных.<br/>
 +
Также, если в XML-СУБД наряду со средствами управления собственными базами данных поддерживаются средства интеграции данных, то тот же язык XQuery может быть использован для запросов внешних источников данных (например, реляционных баз данных) в терминах XML . В этом случае XQuery позволяет избежать еще одной потери соответствия – между моделью языка, на котором выражается логика приложения, и моделью данных внешнего источника данных.<br/>
 +
Из описания особенностей СУБД Sedna , приведенного в первых разделах статьи, легко увидеть, что система действительно оптимизируется в расчете на этот вариант использования. Чтобы обеспечить эффективное выполнение запросов и операций обновления наряду с эффективным выполнением “программ” XQuery , в системе хранения СУБД Sedna поддерживаются прямые указатели в 64-разрядном адресном пространстве базы данных, эффективно отображаемые в указатели 32-разрядной виртуальной памяти. При выполнении операций XQuery исполнитель динамически изменяет режим исполнения с ленивого на строгий, и наоборот в зависимости от природы исполняемой операции (связана ли эта операция с интенсивным потреблением данных, или же в основном имеет вычислительный характер).
 
====Работа с объёмными XML-документами====
 
====Работа с объёмными XML-документами====
 
Поскольку Sedna является прирождённой XML-СУБД, она будет удобна для обработки больших XML-документов. Во многих приложениях документы XML преобразуются с использованием процессоров XSLT или обрабатываются в модели DOM. Поскольку в этих случаях обычно требуется полная выгрузка рабочего элемента в память, а в той же модели DOM для этого требуется значительно больше памяти, обработка больших документов оказывается затруднительной. Использование XML-СУБД для хранения в ней узлов документа может значительно облегчить эту задачу.
 
Поскольку Sedna является прирождённой XML-СУБД, она будет удобна для обработки больших XML-документов. Во многих приложениях документы XML преобразуются с использованием процессоров XSLT или обрабатываются в модели DOM. Поскольку в этих случаях обычно требуется полная выгрузка рабочего элемента в память, а в той же модели DOM для этого требуется значительно больше памяти, обработка больших документов оказывается затруднительной. Использование XML-СУБД для хранения в ней узлов документа может значительно облегчить эту задачу.
 
====Работа с полуструктурированными данными====
 
====Работа с полуструктурированными данными====
Язык XQuery позволяет формулировать запросы без предварительного знания схемы документа. Это позволяет работать с данными, для которых характерна полуструктурированность: разреженность данных, возможность представления одного и того же вида данных разными способами, наличие произвольных дополнительных полей, что отстутсвует в реляционных системах, где структура данных задаётся жёстко.
+
XML и прирожденные XML -СУБД весьма пригодны для представления полуструктурированных данных и управления ими соответственно: наличие схемы необязательно, разреженные данные представляются эффективно.
====Платформа для веб-приложений и управления контентом====
+
У XML -СУБД имеется сильная зависимость от конкретных технических особенностей индивидуальной системы. Например, СУБД Sedna пригодна для этого варианта использования, поскольку в основе структуры хранения XML -документа и обеспечения доступа к его узлам лежит описывающая схема, которая строится вне зависимости от наличия или отсутствия предписывающей схемы. Язык XQuery позволяет формулировать запросы без предварительного знания схемы документа. Все, что потеряется в СУБД Sedna при работе с базой XML -данных без предписывающей схемы, – это возможность выполнения некоторых оптимизационных преобразований запросов , полезных, но не обязательных.
Язык XQuery обладает тьюринговой полнотой, он поддерживает определение пользовательских функций. Таким образом, на нём можно полностью реализовать веб-приложение, которое будет возвращать данные в формате XHTML и реализовывать логику приложений. Таким образом, можно создать полноценное веб-приложение, используя только функционал Sedna. <br>Этот подход решает, с одной стороны, проблему потери соответствия при использовании различных языков внутри приложения. С другой стороны, это облегчает синтаксический анализ генерируемой XHTML-страницы.
+
====Документно-центрические XML -данные====
 +
Прирожденные XML -СУБД хорошо подходят для управления документно-центрическими XML-данными, потому что в них сохраняется порядок документа, и они легко справляются с обработкой смешанного контента (чего нет в большинстве СУБД, приспособленных к XML). При управлении контентом могут оказаться востребованными развитые средства формулировки запросов.  Более развитые запросы могут быть полезны, но пользователи могут без них и обойтись.
 +
Может показаться, что при анализе этого варианта использования нельзя говорить как про полезность абстрактных прирожденных XML -СУБД вообще, так и про потребности абстрактных систем управления контентом. Если (как в случае СУБД Sedna ) в системе полностью поддерживается язык XQuery , и его средства запросов и трансформации данных хорошо оптимизированы, а приложению требуется не только формировать, но и визуализировать контент, то этот вариант использования прирожденных XML -СУБД выглядит очень заманчивым .
  
==Ссылки==
+
==Источники==
*[http://sedna.org/ Официальный сайт проекта Sedna]
+
{{reflist|group=Источник}}
*[http://sedna.org/download.html Скачать Sedna]
+
*[https://www.w3.org/XML/Query/ Официальный сайт XQuery]
+
*[http://wikixmldb.org/ Демо-версия Sedna на примере части англоязычной Википедии]
+
  
[[en:Sedna_(database)]]
+
==Примечания==
 +
{{reflist}}

Версия 03:12, 30 июня 2020

Sedna
fraimed
Разработчики: Институт системного программирования РАН
Постоянный выпуск: 3.5.11 / 28 ноября 2011 г.
Написана на: C,C++
Операционная система: Кросс-платформенное программное обеспечение
Тип ПО: СУБД
Лицензия: Apache License 2.0
Веб-сайт Официальный сайт Sedna

Sedna - СУБД, разработанная специально для хранения и обработки XML-данных отделом управления данными и информационных систем Института системного программирования РАН. Sedna - прирождённая (native) XML-СУБД, она была разработана, чтобы облегчить работу с большими объемами XML-данных.Она предоставляет полный набор основных сервисов баз данных: постоянное хранение, ACID-транзакции, безопасность, индексы, "горячее" резервное копирование. Работа с XML осуществляется при помощи специального языка XML Query (XQuery). При помощи XQuery на основе извлекаемых из БД данных можно генерировать непосредственно XHTML-страницы (или фрагменты страниц).Также Sedna предоставляет API для работы с БД на множестве языков: C, Java, Scheme, PHP[1] , Python и др.

Архитектура

"Центром" системы является Регулятор (см рис.1). Он управляет подсистемами, контролирует выполнение транзакций. Слушатель отлавливает запросы на подключение новых клиентов. После авторизации клиента, Слушатель инкапсулирует его сессию в новом компоненте Подключение, и устанавливает им прямую связь. Дальнейшая работа клиента происходит через Подключение. При получении запроса на начало транзакции, компонент Подключение создаёт компонент Транзакция, содержащий все необходимые для выполнения запроса компоненты: Парсер, Оптимизатор и Исполнитель.

В начале обработки запрос передаётся Парсеру, который преобразует его в логическое представление (дерево операций). С деревом работает Оптимизатор, который на его основе генерирует план выполнения запроса - дерево низкоуровневых операций над физическими структурами данных. Исполнитель взаимодействует с тем экземпляром Менеджера базы данных, к которому направлен запрос, и выполняет полученный план.

Каждый Менеджер базы данных взаимодействует с единственной базой данных. Он содержит Менеджер индексов, для работы с индексами над данной БД, Менеджер буферов для взаимодействия между реальной ОП и диском, Менеджер транзакций контролирует корректность параллельного выполнения транзакций.

Рисунок 1 – Структура СУБД Sedna

XQuery

XQuery[2] - стандартизованный язык запросов для работы с документами, БД, веб-страницами и многим другим в формате XML. Он предоставляет средства для извлечения и управления данными из XML-документов, или любыми другими, которые могут быть представлены в виде XML. Он также позволяет создавать новые XML-документы. Он предоставляет синтаксис для работы как с элементами, атрибуты которых известны заранее, так и с динамически собираемыми узлами. Язык основан на XQuery and XPath Data Model (XDM), использующей древовидную модель данных XML-документа.

Основные отличия XQuery от SQL заключаются в различии моделей данных, для которых они предназначены: формат XML подразумевает иерархическое хранение данных, для него характерен внутренний порядок. Реляционные таблицы, на которые рассчитан SQL, являются однородными, линейными и, как правило, неупорядоченными.

XQuery подразумевает перемещение по иерархии документа XML, для чего поддерживается выражение пути. Он, в отличие от SQL, для которого данные всегда имеют конкретный тип, поддерживает как типизированные, так и не типизированные данные. Кроме того, поскольку в XML-документах недостающие или неизвестные данные пропускаются, в XQuery отсутствуют нулевые значения.

Основные особенности Sedna

  • Написана на C/C++
  • Исходный код доступен по лицензии Apache License 2.0
  • Поддерживает транзакции (модель ACID)
  • Поддерживает полнотекстовые индексы
  • Поддерживает язык XQuery, стандартизированный консорциумом W3C.
  • Поддерживает Юникод (UTF-8)
  • Поддерживает "горячее" инкрементальное резервное копирование
  • Поддерживает внешние XQuery функции, написанные на C.

Кроме того, разработчики серьёзно заботятся о поддержке своего продукта: на официальном сайте действует центр поддержки, форум, активно принимаются багрепорты и предложения. Они предоставляют множество различных драйверов, XML драйвера для Java, модуль для интеграции с Apache HTTP сервером.

Организация данных

Данные организации в Седна разработаны с целью обеспечения баланса в производительности между запросами XML и выполнением обновления. Два основных проектных решений по организации данных в Седна являются:

  • "Прямые указатели" используются для представления XML узлов связи , таких как родитель, ребенок, и двойники из них. В отличие от реляционных -На подходы , которые требуют исполнительское объединений для прохождения документа XML, в обход Седна выполняется просто после прямой указатель.
  • "Описательная схема" управляемого общества хранения стратегия разработана , которая состоит из кластерных узлов из документа XML в соответствии с их положением в описательной схеме документа. В отличии от предписывающей схемы, которая известна заранее , и, как правило , указанная в DTD или XML - схеме , описательная схема генерируется из данных динамически (и поддерживается приращение ) и представляет собой краткую и точные структуры резюме для данных. Использование описательных схем вместо предписывающих одной делает стратегию хранения применима к любому документу XML, даже тот , который поставляется без предписывающей схемы.

Далее показаны общие принципы организации данных в Седна(см. рисунок 2). Описательная схема[Источник 1] представлена в виде дерева узлов схемы является центральным компонентом в организации данных. Каждый узел схемы метят типа XML узла (например , элемент , атрибут , текст и т.д.) и имеет указатель на данные блоков , которые хранят XML - узлы , соответствующие данный узел схемы. В зависимости от их узлов типа, некоторые узлы схемы также помечены именами (например, узлы элементов, узлы атрибутов). Блоки данных , связанные с общим узлом схемы связаны через указатели в двунаправленный список . Узел дескрипторы в списке блоков частично упорядоченные в соответствии с порядком документа.

Рисунок 2 – Пример организации данных в Sedna

А этот скрипт - внутреннее представление в Sedna этой организации данных.

<library>
  <book>
    <title>Foundations of Databases</title>
    <author>Abiteboul</author>
    <author>Hull</author>
    <author>Vianu</author>
  </book>
  <book>
    <title>An Introduction to Database Systems</title>
    <author>Date</author>
    <issue>
      <publisher>Addison-Wesley</publisher>
      <year>2004</year>
    </issue>
  </book>
  ...
  <paper>
    <title>A Relational Model for Large Shared Data Banks</title>
    <author>Codd</author>
  </paper>
</library>

Применение Sedna

У Sedna есть такие преимущества, которые делают её одной из самых комфортных СУБД для работы с XML-документами[Источник 2]

Работа с иерархическими данными

Вполне очевидное применение XML-СУБД, поскольку сам формат XML подразумевает иерархичность. При этом иерархия данных может иметь произвольную глубину, что может замедлять работу баз данных, использующих объектно-реляционные отображения. Будучи прирождённой XML-СУБД, Sedna позволяет эффективно работать с таким типом данных.
Также, если в XML-СУБД наряду со средствами управления собственными базами данных поддерживаются средства интеграции данных, то тот же язык XQuery может быть использован для запросов внешних источников данных (например, реляционных баз данных) в терминах XML . В этом случае XQuery позволяет избежать еще одной потери соответствия – между моделью языка, на котором выражается логика приложения, и моделью данных внешнего источника данных.
Из описания особенностей СУБД Sedna , приведенного в первых разделах статьи, легко увидеть, что система действительно оптимизируется в расчете на этот вариант использования. Чтобы обеспечить эффективное выполнение запросов и операций обновления наряду с эффективным выполнением “программ” XQuery , в системе хранения СУБД Sedna поддерживаются прямые указатели в 64-разрядном адресном пространстве базы данных, эффективно отображаемые в указатели 32-разрядной виртуальной памяти. При выполнении операций XQuery исполнитель динамически изменяет режим исполнения с ленивого на строгий, и наоборот в зависимости от природы исполняемой операции (связана ли эта операция с интенсивным потреблением данных, или же в основном имеет вычислительный характер).

Работа с объёмными XML-документами

Поскольку Sedna является прирождённой XML-СУБД, она будет удобна для обработки больших XML-документов. Во многих приложениях документы XML преобразуются с использованием процессоров XSLT или обрабатываются в модели DOM. Поскольку в этих случаях обычно требуется полная выгрузка рабочего элемента в память, а в той же модели DOM для этого требуется значительно больше памяти, обработка больших документов оказывается затруднительной. Использование XML-СУБД для хранения в ней узлов документа может значительно облегчить эту задачу.

Работа с полуструктурированными данными

XML и прирожденные XML -СУБД весьма пригодны для представления полуструктурированных данных и управления ими соответственно: наличие схемы необязательно, разреженные данные представляются эффективно. У XML -СУБД имеется сильная зависимость от конкретных технических особенностей индивидуальной системы. Например, СУБД Sedna пригодна для этого варианта использования, поскольку в основе структуры хранения XML -документа и обеспечения доступа к его узлам лежит описывающая схема, которая строится вне зависимости от наличия или отсутствия предписывающей схемы. Язык XQuery позволяет формулировать запросы без предварительного знания схемы документа. Все, что потеряется в СУБД Sedna при работе с базой XML -данных без предписывающей схемы, – это возможность выполнения некоторых оптимизационных преобразований запросов , полезных, но не обязательных.

Документно-центрические XML -данные

Прирожденные XML -СУБД хорошо подходят для управления документно-центрическими XML-данными, потому что в них сохраняется порядок документа, и они легко справляются с обработкой смешанного контента (чего нет в большинстве СУБД, приспособленных к XML). При управлении контентом могут оказаться востребованными развитые средства формулировки запросов. Более развитые запросы могут быть полезны, но пользователи могут без них и обойтись. Может показаться, что при анализе этого варианта использования нельзя говорить как про полезность абстрактных прирожденных XML -СУБД вообще, так и про потребности абстрактных систем управления контентом. Если (как в случае СУБД Sedna ) в системе полностью поддерживается язык XQuery , и его средства запросов и трансформации данных хорошо оптимизированы, а приложению требуется не только формировать, но и визуализировать контент, то этот вариант использования прирожденных XML -СУБД выглядит очень заманчивым .

Источники

  1. Bases de Datos XML Nativas //Базы данных с нативным XML : https://bbddxml.wordpress.com/category/bases-de-datos-xml-nativas/ (дата обращения: 23.06.2020).
  2. Sedna Documentation // Документация Sedna : https://www.sedna.org/documentation.html/ (дата обращения: 23.06.2020).

Примечания