BaseX

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:44, 28 июня 2016.
BaseX
Basex logo.png
Разработчики: Кристиан Грюн
Написана на: Java
Операционная система: кросс-платформенная
Тип ПО: База данных
Лицензия: BSD License
Веб-сайт Official website

BaseX - нативная система управления базами данных для SQL и обработчик запросов XQuery, написанная на Java. Cоздан в 2005м году Кристианом Грюном. Эта система преимущественно применяется для сохранения, запроса и визуализации объёмных XML-документов и коллекций. BaseX может быть использован в различных операционных системах, на основании свободной open-source лицензии.

Общее

В BaseX базой данных называется папка, в которой хранятся некие ресурсы. Ресурсом может выступать как обыкновенный файл, так и XML-документ. Файлы хранятся в исходном виде в файловой системе, а XML-документы трансформируются во внутреннее представление. База может хранить как XML документы, так и прочие ресурсы одновременно. Такой способ хранения данных позволяет легко переносить базы простым копированием. База данных может содержать в себе как отдельные документы, так и коллекции документов. BaseX обладает многочисленными индексными структурами, которые увеличивают скорость запросов XPath-операций, сравнения атрибутов и текстов, а также полнотекстового поиска.

Понятия транзакции, к которому все привыкли в мире реляционных СУБД, в BaseX нет. Нельзя явно начать транзакцию, выполнить несколько действий, а потом завершить. Транзакцией считается команда сервера или выполняемый скрипт. Транзакции записи блокируют базу. С версии 7.6 управление блокировками было перенесено на уровень сервера, а не файловой системы, что существенно ускорило выполнение запросов.

Модули

  1. JSON Module
  2. Higher Order Functions Module
  3. Full Text Module
  4. Unit Testing Module
  5. Geospatial Module

Особенности

  1. Эффективное хранение текстов, атрибутов, полно-текстовых и путевых индексов.
  2. Эффективная поддержка W3C XPath/XQuery Recommendations, расширенные обновления.
  3. Одно из лучших соответствий используемым технологиям.
  4. Архитектура клиент/сервер, с поддержкой безопасных транзакций, принципов ACID, управлением пользователями, логгированием.
  5. Интерактивные визуализации, поддержка очень больших XML-документов.
  6. Единственный редактор XQuery в реальном времени, с подсветкой синтаксиса и обработкой ошибок.
  7. Широкий выбор интерфейсов: REST/RESTXQ, WebDAV, XQJ, XML: DB; мультиязычность.

Технологии

  1. XPath – язык запросов
  2. XQuery 3.1 - XQuery Update Facility 3.0 (W3C), XPath/XQuery Full Text 3.0 (W3C)
  3. Поддержка EXPath-модулей и Packaging-систем
  4. Клиент-серверная архитектура с администрированием пользователей и транзактивным управлением
  5. APIs: REST, WebDAV, XML:DB, XQJ; Java, C#, Perl, PHP, Python и другие языки программирования
  6. Поддерживаемые форматы данных: XML, HTML, JSON, CSV, Text, бинарные данные
  7. Графический интерфейс пользователя с иерархичными визуализациями: Treemap, табличное отображение, диаграмма рассеяния

Область применения

  1. Аналитические системы. Так как BaseX работает с XML, у которого нет жесткой структуры, да еще и использует XQuery в качестве языка запросов, это делает его идеальным инструментом для аналитики и датамайнинга.
  2. Standalone продукты. Потому что из коробки мы получаем очень сильно много всего. Можно поднять даже веб-сервер.
  3. Обучающие системы. Для этого есть все предпосылки и полный набор функциональных возможностей.
  4. Системы по хранению неструктурированных данных. XML стерпит все.

Пример работы

Подключение к серверу через консоль, основные команды.

$ basexclient
Username: admin
Password: *****
BaseX [Client]
Try "help" to get more information.
> _

$ basexclient -h
BaseX [Client]
Usage: basexclient [-bcdiLnopPqrRsUvVwxXz] [input]
  [input]     Execute input file or expression
  -b<pars>    Bind external query variables
  -c<input>   Execute commands from file or string
  -d          Activate debugging mode
  -i<input>   Open XML file or database
  -I<input>   Assign input string to context
  -n<name>    Set server (host) name
  -o<output>  Write output to file
  -p<port>    Set server port
  -P<pass>    Specify user password
  -q<expr>    Execute XQuery expression
  -r<num>     Set number of query executions
  -R          Turn query execution on/off
  -s<pars>    Set serialization parameter(s)
  -U<name>    Specify user name
  -v/V        Show (all) process info
  -w          Preserve whitespaces from input files
  -x          Show query execution plan
  -X          Show query plan before/after compilation
  -z          Skip output of results

Источники

  1. Wiki
  2. Официальный сайт
  3. Habr