Сегодня я хотел бы поделится с вами опытом в работе с NoSQL базой данных GlobalsDB, а так же представить вашему вниманию недавно разработанный инструмент администрирования для неё — GlobalsDB Admin. Далее вы найдёте, в основном, разные технические подробности, и если данная тема вам интересна, добро пожаловать.
Мной разработан программный продукт, позволяющий с помощью графического интерфейса манипулировать данными внутри GlobalsDB, а также и в СУБД Caché. Про GlobalsDB уже было написано несколько полезных и обучающих статей, с которыми вы можете ознакомиться в разделе «читайте также». Сама по себе GlobalsDB достаточно проста по своей структуре, и имеет небольшой, но достаточный набор функций для реализации серверных приложений практически любой сложности. Отличительными её особенностями являются простота, свободное распространение и использование устойчивого, испытанного механизма хранения данных в так называемых глобалах.
GlobalsDB Admin
База данных Globals не имеет в пакете установки никаких инструментов для управления нею, а лишь пакет примеров и несколько утилит, например, для восстановления WIJ-файла. Но вроде как ничего больше и не нужно — установи, создай приложение и работай себе с базой данных. Но на ранних этапах ознакомления с GlobalsDB может быть не совсем очевидно, что же находится внутри и как оно расположено. К тому же, часто возникает задача заняться вопросом визуализации данных в БД. Для эффективного освоения принципов работы с GlobalsDB, как и для удобного манипулирования данными через графический интерфейс и был разработан данный продукт.
База данных в GlobalsDB состоит из набора глобалов, каждый из которых является разреженным массивом. А разреженный массив легко представить в виде дерева. Таким образом, интерфейс программы представляет визуализацию дерева глобалов, над которым можно выполнять различные манипуляции. Такой подход объясняется желанием сделать интерфейс управления универсальным как для сенсорных устройств, так и для компьютеров со своими мышками и клавиатурами. С другой стороны, хотелось заменить привычный типичный интерфейс для всех подобных инструментов чем-то более наглядным, без потерь в комфорте обращения с ним.
О возможностях
GlobalsDB Admin имеет минимально необходимый набор инструментов для манипуляции данными: удаление, добавление и изменение глобалов. Основное внимание было сконцентрировано на визуализации: можно наглядно просмотреть любую ветвь хранилища, какой бы огромной она не была и сколько узлов бы не содержала. А глобалы, которые представляют из себя многомерный ассоциативный массив данных, подаются в виде дерева, с которым достаточно удобно проводить различные операции. Каждый узел дерева содержит в себе информацию, которая хранится на определённом уровне глобала. Расположение этой информации, или измерение, в котором она находится указано на соединениях между узлами.
Сам по себе инструмент для администрирования представляет собой серверную программу и клиент, расположенный в браузере или на мобильном устройстве. Принцип работы следующий: на стороне сервера запускается программа, написанная на NodeJS, которая с одной стороны взаимодействует с GlobalsDB, а с другой ожидает подключения клиентов на определённый порт. Так же, если была включена соответствующая опция в конфигурации, запустится простой http-сервер, отдающий статику — клиент приложения. После установки соединения клиента с сервером и после процессов авторизации и логина можно приступать к работе, манипулируя всем этим как клавиатурой, так и указателем мыши или жестами на сенсорном экране.
Установка, настройка и управление
Подробный процесс установки можно найти на странице проекта, а здесь он будет описан немного проще.
- Устанавливаем NodeJS, если он не был ранее установлен;
- Распаковываем последнюю версию GlobalsDB Admin;
- Меняем в файле
config.js
абсолютный путь кmgr
каталогу вашей базы данных и другие интересующие вас настройки; - Убеждаемся, что модуль
node_modules/globalsDB/cache.node
подходит для вашей системы/базы данных. Если архив с GlobalsDB Admin был распакован не в ОС Windows, вам нужно будет отыскатьcache***.node
модуль в директории с установленной базой данных, переименовать его в cache.node и указать к нему путь в файлеconfig.js
(или переместить модуль в директориюnode_modules/globalsDB
). Так же возможен вариант скачать *.node модуль с официального сайта; - Убеждаемся, что GlobalsDB (или инстанс Caché, путь к базе данных которого был прописан в
config.js
) запущен, и NodeJS умеет выполнять команды (по крайней мереnode --version
должен давать что-то разумное); - Выполняем
node run
в директории проекта, и если сообщений об ошибках не появилось, то по умолчанию станет доступен веб-клиент на знакомом127.0.0.1
.
Если же вам потребуется запустить серверное приложение в фоновом режиме, установите forever, выполнив
npm install -g forever
, а затем запустив приложение: forever start run.js
.Что касается управления, оно оптимизировано как для настольных ПК, так и для сенсорных устройств. Пройдя успешную авторизацию, вы можете использовать такие основные комбинации:
Клавиатура
Выбор узла: стрелки вверх/вниз, выбор действия (переход, редактирование, копирование, удаление) — стрелки влево/вправо, клавиша Enter — выполнение действия над узлом, клавиша Backspace — возврат, клавиши -/+ — уменьшение или увеличения масштаба.
Указатель и сенсорный экран
Выбор действия над узлом: нажатие на соединение между узлами, нажатие на сам узел — выполнение выбранного действия, прокрутка вверх/вниз или жест двумя пальцами — изменение масштаба. Прокрутка узла с большим количеством дочерних узлов осуществляется нажатием и перемещением указателя.
Так же все подробности о том, как установить и обращаться с этим инструментом вы можете посмотреть в этом скринкасте.
GlobalsDB tips and tricks
Работая с базой данных, как и с любым другим продуктом, часто возникают какие-то трудности или открываются новые горизонты. Постараюсь описать, на мой взгляд, самое любопытное, с чем пришлось столкнуться.
При первой установке базы данных она выглядит как чёрный ящик. Бегло перелистав документацию по интерфейсу NodeJS, можно было наткнуться на первую нужную функцию global_directory
, чтобы узнать, лежит ли в базе данных по умолчанию хоть что-то. Подключившись и получив результат окажется, что там пусто, что было достаточно ожидаемым. Но на самом деле это не совсем так. В корне располагаются некоторое количество системных глобалов, а они скрыты. Например, получится достать глобал с именем "%
", или "%IS
". Чтобы отобразить этот глобал в GlobalsDB Admin, достаточно нажать на + (добавить) у корневого узла и ввести его имя, например, "%IS
" без установки значения. Нажав «add», можно будет просмотреть содержимое данного глобала:
Понятное дело, там спрятана разная служебная информация, и лучше воздержаться от её изменения. Но можно так же успешно добавлять свои глобалы, называя их с префиксом "%
". Они так же не вернуться в результате выполнения функции global_directory
.
Другим любопытным моментом есть то, что самой GlobalsDB безразлично, какие username, password и namespace будут переданы функции db.open
. С одной стороны, в GlobalsDB отсутствует такое понятие как пользователь, но с другой, документация по функции open
говорит писать именно так. Всё потому, что приложение можно очень просто перенастроить для работы с, например, самой базой данных Caché — достаточно указать соответствующий путь к папке mgr, и готово — теперь работа идёт в указанном пространстве имён от прав пользователя, под которым был выполнен вход. Таким образом, GlobalsDB Admin может взаимодействовать не только непосредственно с базой данных Globals, а и с другими продуктами InterSystems.
Заключение
У проекта есть своя домашняя страница, где вы можете подробно с ним ознакомиться, загрузить и даже опробовать. А что касается статьи, полагаю, она приглянется не только знающим, но и тем, кто только начинает работать с Globals.
Читайте также
Знакомство с GlobalsDB
Немного о GlobalsDB Node.JS API
Хорошее описание преимуществ GlobalsDB + NodeJS
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий