XML native-базы данных на примере Sedna::Журнал СА 4.2008
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6144
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6857
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4140
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2978
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6283
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3434
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12336
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13969
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9100
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7053
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5362
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4594
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3402
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3129
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3379
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3000
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 XML native-базы данных на примере Sedna

Архив номеров / 2008 / Выпуск №4 (65) / XML native-базы данных на примере Sedna

Рубрика: Базы данных /  Оптимизация

Александр Календарев

XML native-базы данных на примере Sedna

Сегодня бытует мнение, что использование XML для хранения данных ресурсоемко и не выгодно в плане быстродействия. Однако современные технологии ушли вперед. Разработаны более быстрые модели доступа к данным DOM-модели, которые реализованы в современных XML-базах данных. Статья рассчитана на читателя, имеющего представление об DOM XML и Xpath.

Основные черты XML native DB

Понятие native XML Database было введено для отличия, что данный тип баз данных основан на использовании внутреннего представления XML в отличие от XML-надстроек над существующими реляционными базами данных (XML enabled DB), такими как Oracle, PosgreSQL, MS SQL Server, в которых реализована XML-надстройка (XML-SQL) в соответствии со стандартом доступа SQL-2003.

Основным требованием к XML native DB (NXD) является использование внутреннего представления (иногда употребляют – бинарное) DOM XML в БД. Определены следующие признаки XML native DB:

  • Определена логическая модель XML-документа, в соответствии с которой осуществляется хранение документа. Минимальная модель включает: элементы, атрибуты, секции PCDATA и список документов.
  • XML-документ представлен как фундаментальная часть хранилища (наподобие таблицы в RMDB).
  • Для доступа к хранилищу информации XML native DB должен использоваться язык запросов XQuery.

Некоторые из направлений возможного применения NXD:

  • использование в веб-службах;
  • генерация суммарных отчетов данных из XML;
  • поиск релевантных документов в слабоструктурированных данных;
  • публикация данных для Web непосредственно в XHTML;
  • объединение нескольких XML-документов, формирование сводных документов.

На сегодняшний день имеется более десятка XML native DB. В таблице представлены сравнительные характеристики некоторых из них.

Сравнительные характеристики различных XML native DB

Наименование

Лицензия

Поддержка

Примечание

Apache XIndice

Open Source, free

Eсть

XML:DB XUpdate, JDCB, XML_RPC. Работает под Apache Tomcat

eXist

Open Source, free

Eсть

Транзакции не поддерживаются (ACID).Реализована на Java

MonetDB/XQuery

Open Source, free

Eсть

API: ODBC, PHP, Phyton, XQuery processor поверх SQL

MyXMLDB

Open Source, free

Eсть

Работает поверх MySQL

OZONE

Open Source, free

Eсть

100% поддержка, включая транзакци (ACID)

Sedna

Open Source, free

Eсть

100% поддержка, включая транзакци (ACID) API : C/C++, Perl, Java, PHP, Python mod_sedna (apache) XQuery triggers, updates, recovery and security

Software AG's Tamino

Commercial

Частично

Первая промышленная NDB, использующая XQuery. Поддерживает update-блокировки API почти на все языки

Как видно, NXD Sedna обладает наиболее полным функционалом, даже более – данная разработка предлагает дополнительные сервисы, в частности, разработано расширение к языку запросов XQuery – модуль обновления XML xUpdate. Также NXD Sedna спроектирована с учетом политики разделяемого доступа: реализованы роли и привилегии.

Проект Sedna – это отечественная разработка группы MODIS (Management Of Data & Information Systems) Института системного программирования при Российской академии наук, который был реализован силами научных сотрудников и аспирантов под руководством Максима Гринева и Сегрея Кузнецова. Первый релиз Sedna 0.1 вышел в декабре 2004 года. И радует то, что проект постоянно развивается. Последний релиз 3.0 вышел 24 марта 2008 года и ориентирован на промышленное использование БД. Как утверждают разработчики, последний релиз вполне выдерживает объем данных долее 20 Гб без существенного снижения скорости доступа к данным. Проект Sedna распространяется под лицензией Apache License (Version 2.0, January 2004, http://www.apache.org/licenses).

Возможности XND Sedna

Разработчики NXD Sedna исходили из того, чтоб создать полнофункциональную NXD с нуля. NXD Sedna имеет весь необходимый функционал БД:

  • транзакционные операции с данными;
  • резервирование данных;
  • авторизация и разделение доступа;
  • оптимизация запросов;
  • управление внешней памятью;
  • индексирование документов;
  • полнотекстовый поиск;
  • возможность создания триггеров на определенные узлы XML-документа;

 NXD Sedna поддерживает наиболее распространенные платформы:

  • Linux x86 kernel version 2.4 or higher;
  • Windows 2000/XP/2003/Vista;
  • Mac OS X 10.4 and higher (PPC/Intel);
  • PowerPC at IBM RS6000 running Debian Sarge.

Для обеспечения обновления данных разработчики создали языковое расширение Xupdate, предложения по которому были переданы в рабочую группу W3C/XQuery.

В дистрибутиве можно найти библиотеки интерфейсов наиболее популярных языков: Java, C, а также поддерживается интерфейс на языке Schema и интерфейс ODCB. Помимо с сайта разработчиков можно загрузить интерфейсные библиотеки таких популярных языков, как PHP, Python и Perl.

NXD Sedna имеет UDF API, т.е. мы можем реализовывать собственные пользовательские функции, тем самым расширить возможности языка запросов XQuery.

Одна из интересных возможностей NXD Sedna – это SQL-соединения с RMDB, т.е. трансляция XQuery запросов в SQL-инструкции и выполнение их в RMDB, т.е. возможна тесная интеграция NXD и RMDB.

Первое знакомство

Загрузить DB Sedna можно на сайте http://modis.iisp.ru/sedna. На странице «Загрузить» традиционно представлены:

  • исходные тексты;
  • rpm-пакеты для Linux;
  • бинарные файлы для Windows;
  • бинарные файлы для Mac OS.

В комплект поставки входит довольно-таки полная документация в pdf-формате на английском языке и небольшой пример базы данных.

В директории SEDNA_ROOT/bin расположены бинарные файлы.

Дополнительно для версии Windows Энтони Скоттом (Anthony Scott) разработан удобным графическим интерфейс SDBAdmin. Также есть админ-интерфейс (SednaAdmin), реализованный на Java Карнелио Филхо (Heraldo J. A. Carneiro Filho).

Запустить сервер Sedna необходимо следующей командой:

>se_gov

При удачном запуске на терминал будет выдано следующее сообщение:

GOVERNOR has been started in the background mode

Если вы запускаете сервер БД впервые, то необходимо создать базу данных. Также необходимо создавать БД при создании нового хранилища данных. Это осуществляется командой:

>se_cdb <имя БД >

В приложении к серверу BD Sedna предлагается использовать БД для примеров – auction. Для наглядности мы будем ее использовать. При удачном создании нового хранилища XML на терминал будет выдано следующее сообщение:

The database ’auction’ has been created successfully

После создания БД необходимо запустить менеджер БД для каждого экземпляра данных:

>se_sm auction

Если экземпляр менеджера БД стартовал удачно, то на терминал будет выдано следующее сообщение:

SM has been started in the background mode

Загрузить данные можно как из терминала, так и из DBAdmin.

На терминале выдать команду:

>se_term <load_filename> <имя БД>

Файл загрузки с именем <load_filename> должен содержать строчку:

LOAD <имя документа> <путь к XML-файлу данных>

При удачной загрузке на терминале появится сообщение:

UPDATE is executed successfully

Теперь можно выполнить любой пример:

>se_term -file <query_filename> <имя БД >

Остановка сервера осуществляется командой:

>se_stop

Рисунок 1. Запуск БД Sedna

Рисунок 1. Запуск БД Sedna

Административный интерфейс

Административный интерфейс SDBAdmin представлен на рис. 2.

Рисунок 2. Административный интерфейс SDBAdmin

Рисунок 2. Административный интерфейс SDBAdmin

Сам интерфейс интуитивно понятный и простой. Справа расположены навигационные окна по объектам БД. В большом верхнем окне набирается запрос или загружается из файла. Кнопка «Evalute» осуществляет его выполнение, а результаты отображаются в среднем окне.

Кто привык использовать «горячие клавиши», то выполнение запроса – это «^E» (одновременное нажатие клавиш <ctrl> и <E>»).

Нижнее окно предназначено для вывода служебной и отладочной информации.

NXB Sedna. Администрирование

NXD Sedna конфигурируется посредством конфигурационнного файла sednaconf.xml, расположенного в SEDNA_INSTALL\etc. Данный файл является необязательным, так как все значения задаются по умолчанию. Файл sednaconf.xml имеет следующую схему DTD:

<!ELEMENT sednaconf (sedna_data, os_primitives_id_min_bound, listener_port, ping_port)>

<!ELEMENT sedna_data (#PCDATA)>

<!ELEMENT os_primitives_id_min_bound (#PCDATA)>

<!ELEMENT listener_port (#PCDATA)>

<!ELEMENT ping_port (#PCDATA)>

Пример:

<sednaconf>

<sedna_data>/var/lib/sedna</sedna_data>

<os_primitives_id_min_bound>1500</os_primitives_id_min_bound>

<listener_port>5050</listener_port>

<ping_port>5151</ping_port>

</sednaconf>

Элемент <sedna_data> содержит путь к директории, где хранятся конфигурационные файлы БД.

Элемент <os_primitives_id_min_bound> содержит минимальное значение идентификаторов ресурсов ОС, используемых в Sedna (включая семафоры).

Элемент <listener_port> – порт, на который настроен «слушатель» БД.

Элемент <listener_ ping_port > – порт, на который настроен «слушатель» ping-сервера, необходим для внутренних процессов.

Каждая БД имеет свой собственный конфигурационный файл: <db_name>_cfg.xml. Для нашей БД файл расположен в каталоге >/var/lib/sedna:

<db>

  <name>auction</name>

  <bufs_num>1600</bufs_num>

  <max_trs_num>10</max_trs_num>

  <init_phys_log_size>100</init_phys_log_size>

  <phys_log_ext_portion>10</phys_log_ext_portion>

</db>

Элемент <bufs_num> определяет количество буферов памяти для менеджера памяти.

Элемент <max_trs_num> определяет максимальное кол-во одновременных транзакций.

Элементы <init_phys_log_size> и <phys_log_ext_portion> определяют физический начальный размер файла лога и размер его приращения.

Также в директории данных содержится файл event.log, в котором отражены все транзакционные изменения в Sedna.

Как и любая СУБД, Sedna имеет механизм разделения доступа к данным. Данный механизм можно посмотреть на примере конфигурационного файла sedna_root\share\sedna_auth_md.xml (но сами данные являются лишь экспортом из внутреннего представления данных, и их изменение не повлечет влияния на функционирование БД):

<db_security_data>

<users>

<user>

  <user_name>SYSTEM</user_name>

  <user_psw>MANAGER</user_psw>

  <user_creator>SYSTEM</user_creator>

  <privileges />

  <role role_name="DBA" grantor="SYSTEM" />

  <role role_name="PUBLIC" grantor="SYSTEM" />

  </user>

  </users>

<roles>

<role>

  <role_name>DBA</role_name>

  <privileges />

  </role>

<role>

  <role_name>PUBLIC</role_name>

  <privileges />

  </role>

  </roles>

  </db_security_data>

 Каждый пользователь (user) является сквозным для всех баз (документов). Каждая база имеет владельца – это тот пользователь, который ее создал. Существует два типа пользователей:

  • Sedna database administrator (DBA user, аналог супер-пользователя root в MySQL);
  • обыкновенный пользователь (user).

 Каждому пользователю назначается роль. Формально DBA user использует роль DBA:

  • привилегия на уничтожение любого объекта в БД;
  • привилегия на уничтожение любого user в БД;
  • может назначить/отменить любую привилегию любому пользователю для любой БД;
  • может назначить роль «DBA» любому пользователю.

 Пользователь имеет привилегии:

  • может действовать в соответствии со своими привилегиями;
  • может назначить/отменить любую привелегию любому пользователю для БД, владельцем которой он является;
  • может уничтожить любой объект БД, владельцем которого является он или пользователь, которого он создал.

Для создания пользователя применяется команда:

CREATE USER "user-name" WITH PASSWORD "user-password"

После создания пользователя akalend с паролем 12345 в sedna_auth_md.xml добавится следующий элемент <user>:

<user>

  <user_name>akalend</user_name>

  <user_psw>12345</user_psw>

  <creator>SYSTEM</creator>

  <privileges />

  <role role_name="PUBLIC" grantor="SYSTEM" />

  </user>

Уничтожить пользователя можно командой:

DROP USER "user-name"

Изменить пароль командой:

ALTER USER "user-name" WITH PASSWORD "new-password"

БД Sedna после инициации имеет DBA user с именем «SYSTEM» и паролем «MANAGER». Рекомендуется пароль сразу после инсталляции сменить.

Существуют следующие привилегии:

  • CREATE-USER – возможность создавать пользователей;
  • CREATE-DOCUMENT – возможность создавать документы;
  • CREATE-COLLECTION – возможность создавать коллекции;
  • CREATE-INDEX – возможность создавать индексы в документах/коллекциях;
  • LOAD-MODULE – возможность загружать модули в БД;
  • LOAD – возможность загружать данные в БД/коллекции;
  • DROP – возможность уничтожать документы/коллекции/индексы/модули;
  • QUERY – возможность делать запросы в документах/коллекциях;
  • INSERT – возможность вставлять данные в документы/коллекции;
  • DELETE – возможность удалять данные в документы/коллекции;
  • RENAME – возможность переименовывать документы/коллекции;
  • RETRIEVE-METADATA – возможность создавать схемы данных.

Роль – это имя группы множества привилегий. С помощью ролей проще управлять привилегиями.

Роль создается оператором:

CREATE ROLE "role-name"

Назначение привилегий осуществляется командой:

GRANT "privilege" | ALL

ON [DOCUMENT|COLLECTION] "database-object-name"

TO "user-name|role-name" | PUBLIC

Ключ PUBLIC используется, когда данные привилегий должны быть назначены для всех пользователей, даже включая тех, которые будут созданы впоследствии. Если не указаны ключевые слова [DOCUMENT|COLLECTION], то считается, что привилегия назначается на весь документ БД. После выполнения команды:

GRANT ALL ON "auction" TO "akalend"

в конфигурационном файле в элементе <user><user_name>akalend</user_name> … </user> добавится элемент:

<privileges>

<privilege>

  <pr_name>ALL</pr_name>

  <database_obj type_obj="document">auction</database_obj>

  <grantor>SYSTEM</grantor>

  </privilege>

  </privileges>

После этого мы можем присоединиться к «auction» БД и производить над ней любые действия.

Отмена привилегий осуществляется командой:

REVOKE "privilege" | ALL

ON [DOCUMENT|COLLECTION] "database-object-name"

FROM "user-name|role-name" | PUBLIC

В одном из следующих выпусков будут продемонстрированы возможности языка XQuery.

  1. Особенности СУБД Sedna. XML-СУБД Sedna: технические особенности и варианты использования. //Открытые Системы, #8, 2004 г. – http://www.osp.ru/os/2004/08/185085/_p1.html.
  2. Материалы рабочей группы XQuery – http://w3c.org/xquery.
  3. Говард Кац. XQuery от экспертов. Кудиц-образ. М. 2005 г.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru