Цель данной статьи — познакомить читателей Хабра с СУБД MarkLogic (ML) NoSQL. Беглый поиск показывает, что он малоизвестен среди русскоязычных ИТ-специалистов.
Этим обзором я постараюсь исправить эту ситуацию.
1) Основное назначение – хранить большие объемы информации, не имеющей жесткой структуры (в отличие от СУБД, основанных на таблицах), и эффективно осуществлять поиск по ней.
При этом MarkLogic — это «самодостаточный» сервер, а не надстройка к другому серверу базы данных (любому SQL например).
2) Модель базы данных — файл-папка.
Фактически любая база данных в ML представляет собой виртуальную файловую систему с каталогами, контролем доступа, временными метками и т. д. Каждый файл представляет собой XML-документ, индексируемый сервером; поиск осуществляется внутри любого XML с учетом его разметки.
Также можно хранить текстовые и двоичные документы, а последние можно использовать для индексации и поиска метаинформации.
Встроенная обработка PDF, изображений, архивов, документов MS Office и т.д. Для больших бинарников можно настроить прозрачное сохранение не в базе данных, а в файловой системе хоста.
3) Язык запросов: 3.1) Базовый — XPath (с некоторой натяжкой можно считать SQL, только применительно к XML); хотя чаще используют его расширенные возможности, описанные в стандарте XQuery и известные как «FLWOR».
Запросы XQuery могут быть получены сервером на лету из программы, запускающей соединение с базой данных; а также взяты из самой базы данных или из файловой системы хоста (подробнее об этом ниже).
3.2) Помимо XPath запрос можно построить с помощью встроенных функций ML, что позволит быстро выполнять поиск по индексам и соответственно возвращать результаты.
с актуальностью.
Результатом любого запроса является набор строк в XML, текстовом или двоичном формате.
4) Запросы выполняются либо через встроенный HTTP-сервер, либо через XDBC/ODBC. 4.1) Использовать HTTP можно как путем запроса документов из базы данных по пути и имени, так и путем выполнения сохраненных запросов XQuery. Результат можно вывести в любой форме (XML/HTML, json, двоичный и т. д.).
В этом случае можно получать заголовки запросов и управлять заголовками ответов.
В последней версии ML появилась возможность создавать сервисы RESTful. 4.2) Запрос можно выполнить через XDBC, для чего есть модули коннектора для Java, C# и Perl. При разработке сложного XQuery есть возможность пошаговой отладки.
(Я использую для этого Oxygen IDE, но по некоторой информации есть плагин для Eclipse.) 5) Сохранение и изменение документов осуществляется встроенными функциями ML. (XQuery по-прежнему является чистым языком запросов, в отличие от SQL.) Каждый запрос XQuery представляет собой транзакцию, и изменения по умолчанию вносятся в базу данных после успешного завершения сценария.
MarkLogic может проверять данные с использованием схемы XML, если вызывается соответствующий оператор XQuery. 6) Загрузку данных можно осуществить, выполнив соответствующие действия.
XQuery через XDBC, через службу RESTful или через встроенный WebDAV. 7) Отдельно хотелось бы отметить возможность выполнения XSL-преобразований с помощью ML. Затем сценарий XSL получает доступ ко всем функциям и данным сервера.
Сам XSL может быть выбран из базы данных (или из файловой системы хоста) или получен извне.
8) Настройка осуществляется через встроенный Web-интерфейс, хотя редактировать файлы конфигурации можно и напрямую.
На мой взгляд, встроенных возможностей работы из командной строки нет. Я использовал сценарии Perl. 9) ML содержит огромный набор функций, как для самого администрирования, так и для управления данными, хранящимися в его базе данных, для поиска по индексам и т.д. Также есть функции для работы с файловой системой хост-сервера, на котором установлена СУБД.
бег; для работы с сетевыми ресурсами; с транзакциями, расписанием, событиями и т. д. По сути, ML можно рассматривать как своего рода виртуальную ОС по отношению к выполняемым на ней скриптам (с учетом пункта 2).
В этом, на мой взгляд, главное преимущество данной СУБД, ведь серверную часть проекта любой сложности можно сделать на любой аппаратной платформе (ML доступен для всех более-менее известных), используя один язык — XQuery и понимание только одного API. 10) Условия лицензирования: это коммерческий продукт, но имеется лицензия на коммерческое использование бесплатной версии СУБД (правда, с урезанными возможностями, например: объем хранимой информации ограничен 40ГБ; количество используемых процессоров равен 2; опция кластеризации отсутствует).
До недавнего времени это была промышленная СУБД, используемая преимущественно в крупных компаниях, проектах и государственных учреждениях (например, Библиотека Конгресса США).
Однако наличие бесплатной лицензии сделало ее удобной для стартапов.
Такой подход к лицензированию логичен: большинство проектов на ранних стадиях своего существования редко испытывают высокую нагрузку и не требуют определенного функционала.
Но по мере развития бизнеса и получения прибыли приобретение «полноценной» версии становится оправданным.
В дальнейшем планирую публиковать свои заметки, связанные с разработкой скриптов для этой СУБД и исследованием ее возможностей; Не оставлю без внимания и другие СУБД этого уровня.
Теги: #NoSQL #MarkLogic #база данных #xml #xquery #xml #NoSQL
-
Шпионтрек
19 Oct, 24 -
Индукция
19 Oct, 24 -
Иконки: Растровые И Векторные
19 Oct, 24 -
Википедия Умрет?
19 Oct, 24