BaseX

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:25, 7 июня 2020.
BaseX
Basex logo.png
Создатели: Christian Grün
Разработчики: BaseX Team
Постоянный выпуск: 9.3.3
Написана на: Java
Операционная система: Кросс-платформенное программное обеспечение
Тип ПО: DBMS (Database Management System)
Лицензия: BSD лицензия
Веб-сайт Official website

BaseX — компактная DBMS (Database Management System) XML, разрабатываемая в рамках коллективного проекта на платформе GitHub [1]. Эта система преимущественно применяется для сохранения, запроса и визуализации объёмных XML-документов и XML-коллекций.[2]. BaseX может быть использован в различных операционных системах, на основании свободной Open-Source-лицензии.

BaseX предоставляет высоко-стандартную совместимость с W3C [3]-языками XPath и XQuery, а также с обновляющими и полнотекстовыми расширениями. Интегрированный графический интерфейс пользователя позволяет проводить интерактивное обследование и анализ собственных данных, предоставляя возможность выполнения команд языков XPath и XQuery.

История

BaseX был создан в 2005 году Кристианом Грюном, научным сотрудником Констанцского университета (Германия). С 2007 года BaseX распространяется в открытых исходных текстах.

Общее

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

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

Возможности администрирования в BaseX весьма просты. Можно заводить пользователей, давать им право на 4 типа действия: читать, писать, создавать базы и администрировать. Не сильно много, а другое и представить тяжело. Так как база данных представляет собой набор файлов, то дополнительную «защиту» можно организовать на уровне файловой системы.

BaseX легко поднимается как сервер. Специальные драйвера для работы не требуются, так как работа с сервером идет через порты. Чтобы поднять несколько серверов одновременно, нужно разнести их на разные порты. Они без труда могут выполнять запросы друг друга, для этого надо написать небольшое количество кода. Протокол обмена данными с сервером прекрасно задокументирован, написать клиент для разных языков не составляет никаких проблем. На данный момент времени есть готовые клиенты для следующих языков или систем: C#, VB, Scala, Java, ActionScript, Perl, PHP, Python, Rebol, Ruby, Haskell, Lisp, node.js, Qt, и C.

Модули

Данные модули не нужно подключать дополнительно и они сразу доступны из языка запросов.

  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
    1. GitHub: BaseX
    2. BaseX: Statistics
    3. W3C