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

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

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

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

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

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

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

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

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

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

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

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

1001 и 1 книга  
19.03.2018г.
Просмотров: 9956
Комментарии: 0
Потоковая обработка данных

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

19.03.2018г.
Просмотров: 8163
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

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

19.03.2018г.
Просмотров: 8264
Комментарии: 0
Конкурентное программирование на SCALA

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

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

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

12.03.2018г.
Просмотров: 5919
Комментарии: 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-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru