- PVSM.RU - https://www.pvsm.ru -

Инструмент администрирования GlobalsDB и тонкости работы с этой базой данных

Здравствуйте, дорогие хабрачитатели.

Сегодня я хотел бы поделится с вами опытом в работе с NoSQL базой данных GlobalsDB [1], а так же представить вашему вниманию недавно разработанный инструмент администрирования для неё — GlobalsDB Admin. Далее вы найдёте, в основном, разные технические подробности, и если данная тема вам интересна, добро пожаловать.

Инструмент администрирования GlobalsDB и тонкости работы с этой базой данных

Мной разработан программный продукт, позволяющий с помощью графического интерфейса манипулировать данными внутри GlobalsDB, а также и в СУБД Caché. Про GlobalsDB уже было написано несколько полезных и обучающих статей, с которыми вы можете ознакомиться в разделе «читайте также» [2]. Сама по себе GlobalsDB достаточно проста по своей структуре, и имеет небольшой, но достаточный набор функций для реализации серверных приложений практически любой сложности. Отличительными её особенностями являются простота, свободное распространение и использование устойчивого, испытанного механизма хранения данных в так называемых глобалах.

GlobalsDB Admin

База данных Globals не имеет в пакете установки никаких инструментов для управления нею, а лишь пакет примеров и несколько утилит, например, для восстановления [3] WIJ-файла [4]. Но вроде как ничего больше и не нужно — установи, создай приложение и работай себе с базой данных. Но на ранних этапах ознакомления с GlobalsDB может быть не совсем очевидно, что же находится внутри и как оно расположено. К тому же, часто возникает задача заняться вопросом визуализации данных в БД. Для эффективного освоения принципов работы с GlobalsDB, как и для удобного манипулирования данными через графический интерфейс и был разработан данный продукт.

База данных в GlobalsDB состоит из набора глобалов, каждый из которых является разреженным массивом. А разреженный массив легко представить в виде дерева. Таким образом, интерфейс программы представляет визуализацию дерева глобалов, над которым можно выполнять различные манипуляции. Такой подход объясняется желанием сделать интерфейс управления универсальным как для сенсорных устройств, так и для компьютеров со своими мышками и клавиатурами. С другой стороны, хотелось заменить привычный типичный интерфейс для всех подобных инструментов чем-то более наглядным, без потерь в комфорте обращения с ним.

Инструмент администрирования GlobalsDB и тонкости работы с этой базой данных

О возможностях

GlobalsDB Admin имеет минимально необходимый набор инструментов для манипуляции данными: удаление, добавление и изменение глобалов. Основное внимание было сконцентрировано на визуализации: можно наглядно просмотреть любую ветвь хранилища, какой бы огромной она не была и сколько узлов бы не содержала. А глобалы, которые представляют из себя многомерный ассоциативный массив данных, подаются в виде дерева, с которым достаточно удобно проводить различные операции. Каждый узел дерева содержит в себе информацию, которая хранится на определённом уровне глобала. Расположение этой информации, или измерение, в котором она находится указано на соединениях между узлами.

Сам по себе инструмент для администрирования представляет собой серверную программу и клиент, расположенный в браузере или на мобильном устройстве. Принцип работы следующий: на стороне сервера запускается программа, написанная на NodeJS, которая с одной стороны взаимодействует с GlobalsDB, а с другой ожидает подключения клиентов на определённый порт. Так же, если была включена соответствующая опция в конфигурации, запустится простой http-сервер, отдающий статику — клиент приложения. После установки соединения клиента с сервером и после процессов авторизации и логина можно приступать к работе, манипулируя всем этим как клавиатурой, так и указателем мыши или жестами на сенсорном экране.

Установка, настройка и управление

Подробный процесс установки можно найти на странице проекта [5], а здесь он будет описан немного проще.

Процесс установки

  1. Устанавливаем NodeJS [6], если он не был ранее установлен;
  2. Распаковываем последнюю версию [7] GlobalsDB Admin;
  3. Меняем в файле config.js абсолютный путь к mgr каталогу вашей базы данных и другие интересующие вас настройки;
  4. Убеждаемся, что модуль node_modules/globalsDB/cache.node подходит для вашей системы/базы данных. Если архив с GlobalsDB Admin был распакован не в ОС Windows, вам нужно будет отыскать cache***.node модуль в директории с установленной базой данных, переименовать его в cache.node и указать к нему путь в файле config.js (или переместить модуль в директорию node_modules/globalsDB). Так же возможен вариант скачать *.node модуль с официального сайта [8];
  5. Убеждаемся, что GlobalsDB (или инстанс Caché, путь к базе данных которого был прописан в config.js) запущен, и NodeJS умеет выполнять команды (по крайней мере node --version должен давать что-то разумное);
  6. Выполняем node run в директории проекта, и если сообщений об ошибках не появилось, то по умолчанию станет доступен веб-клиент на знакомом 127.0.0.1.

Если же вам потребуется запустить серверное приложение в фоновом режиме, установите forever [9], выполнив npm install -g forever, а затем запустив приложение: forever start run.js.

Что касается управления, оно оптимизировано как для настольных ПК, так и для сенсорных устройств. Пройдя успешную авторизацию, вы можете использовать такие основные комбинации:

Клавиатура
Выбор узла: стрелки вверх/вниз, выбор действия (переход, редактирование, копирование, удаление) — стрелки влево/вправо, клавиша Enter — выполнение действия над узлом, клавиша Backspace — возврат, клавиши -/+ — уменьшение или увеличения масштаба.

Указатель и сенсорный экран
Выбор действия над узлом: нажатие на соединение между узлами, нажатие на сам узел — выполнение выбранного действия, прокрутка вверх/вниз или жест двумя пальцами — изменение масштаба. Прокрутка узла с большим количеством дочерних узлов осуществляется нажатием и перемещением указателя.

Так же все подробности о том, как установить и обращаться с этим инструментом вы можете посмотреть в этом скринкасте [10].

GlobalsDB tips and tricks

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

При первой установке базы данных она выглядит как чёрный ящик. Бегло перелистав документацию по интерфейсу NodeJS, можно было наткнуться на первую нужную функцию global_directory, чтобы узнать, лежит ли в базе данных по умолчанию хоть что-то. Подключившись и получив результат окажется, что там пусто, что было достаточно ожидаемым. Но на самом деле это не совсем так. В корне располагаются некоторое количество системных глобалов, а они скрыты. Например, получится достать глобал с именем "%", или "%IS". Чтобы отобразить этот глобал в GlobalsDB Admin, достаточно нажать на + (добавить) у корневого узла и ввести его имя, например, "%IS" без установки значения. Нажав «add», можно будет просмотреть содержимое данного глобала:

Инструмент администрирования GlobalsDB и тонкости работы с этой базой данных

Понятное дело, там спрятана разная служебная информация, и лучше воздержаться от её изменения. Но можно так же успешно добавлять свои глобалы, называя их с префиксом "%". Они так же не вернуться в результате выполнения функции global_directory.

Другим любопытным моментом есть то, что самой GlobalsDB безразлично, какие username, password и namespace будут переданы функции db.open. С одной стороны, в GlobalsDB отсутствует такое понятие как пользователь, но с другой, документация по функции open говорит писать именно так. Всё потому, что приложение можно очень просто перенастроить для работы с, например, самой базой данных Caché — достаточно указать соответствующий путь к папке mgr, и готово — теперь работа идёт в указанном пространстве имён от прав пользователя, под которым был выполнен вход. Таким образом, GlobalsDB Admin может взаимодействовать не только непосредственно с базой данных Globals, а и с другими продуктами InterSystems.

Заключение

У проекта есть своя домашняя страница [11], где вы можете подробно с ним ознакомиться, загрузить и даже опробовать [12]. А что касается статьи, полагаю, она приглянется не только знающим, но и тем, кто только начинает работать с Globals.

Читайте также

Знакомство с GlobalsDB [13]
Немного о GlobalsDB Node.JS API [14]
Хорошее описание преимуществ GlobalsDB + NodeJS [15]

Автор: ZitRo

Источник [16]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/administrirovanie/63632

Ссылки в тексте:

[1] GlobalsDB: http://globalsdb.org

[2] «читайте также»: #ReadAlso

[3] восстановления: http://docs.intersystems.com/ens20102/csp/docbook/DocBook.UI.Page.cls?KEY=GCDI_wij#GCDI_wij_recovery

[4] WIJ-файла: http://docs.intersystems.com/ens20102/csp/docbook/DocBook.UI.Page.cls?KEY=GCDI_wij#GCDI_wij_process

[5] странице проекта: http://zitros.github.io/globalsDB-Admin-NodeJS/#description

[6] NodeJS: http://nodejs.org

[7] последнюю версию: http://zitros.github.io/globalsDB-Admin-NodeJS/#download

[8] официального сайта: http://globalsdb.org/downloads

[9] forever: https://www.npmjs.org/package/forever

[10] этом скринкасте: https://www.youtube.com/watch?v=ggFa_2GtXPo

[11] домашняя страница: http://zitros.github.io/globalsDB-Admin-NodeJS

[12] опробовать: http://zitros.github.io/globalsDB-Admin-NodeJS/preview/index.html

[13] Знакомство с GlobalsDB: http://habrahabr.ru/company/intersystems/blog/184882

[14] Немного о GlobalsDB Node.JS API: http://habrahabr.ru/company/intersystems/blog/145444

[15] Хорошее описание преимуществ GlobalsDB + NodeJS: http://www.slideshare.net/robtweed/globalsdb-its-significance-for-nodejs-developers

[16] Источник: http://habrahabr.ru/post/226259/