- PVSM.RU - https://www.pvsm.ru -
Здравствуйте, дорогие хабрачитатели.
Сегодня я хотел бы поделится с вами опытом в работе с NoSQL базой данных GlobalsDB [1], а так же представить вашему вниманию недавно разработанный инструмент администрирования для неё — GlobalsDB Admin. Далее вы найдёте, в основном, разные технические подробности, и если данная тема вам интересна, добро пожаловать.
Мной разработан программный продукт, позволяющий с помощью графического интерфейса манипулировать данными внутри GlobalsDB, а также и в СУБД Caché. Про GlobalsDB уже было написано несколько полезных и обучающих статей, с которыми вы можете ознакомиться в разделе «читайте также» [2]. Сама по себе GlobalsDB достаточно проста по своей структуре, и имеет небольшой, но достаточный набор функций для реализации серверных приложений практически любой сложности. Отличительными её особенностями являются простота, свободное распространение и использование устойчивого, испытанного механизма хранения данных в так называемых глобалах.
База данных Globals не имеет в пакете установки никаких инструментов для управления нею, а лишь пакет примеров и несколько утилит, например, для восстановления [3] WIJ-файла [4]. Но вроде как ничего больше и не нужно — установи, создай приложение и работай себе с базой данных. Но на ранних этапах ознакомления с GlobalsDB может быть не совсем очевидно, что же находится внутри и как оно расположено. К тому же, часто возникает задача заняться вопросом визуализации данных в БД. Для эффективного освоения принципов работы с GlobalsDB, как и для удобного манипулирования данными через графический интерфейс и был разработан данный продукт.
База данных в GlobalsDB состоит из набора глобалов, каждый из которых является разреженным массивом. А разреженный массив легко представить в виде дерева. Таким образом, интерфейс программы представляет визуализацию дерева глобалов, над которым можно выполнять различные манипуляции. Такой подход объясняется желанием сделать интерфейс управления универсальным как для сенсорных устройств, так и для компьютеров со своими мышками и клавиатурами. С другой стороны, хотелось заменить привычный типичный интерфейс для всех подобных инструментов чем-то более наглядным, без потерь в комфорте обращения с ним.
GlobalsDB Admin имеет минимально необходимый набор инструментов для манипуляции данными: удаление, добавление и изменение глобалов. Основное внимание было сконцентрировано на визуализации: можно наглядно просмотреть любую ветвь хранилища, какой бы огромной она не была и сколько узлов бы не содержала. А глобалы, которые представляют из себя многомерный ассоциативный массив данных, подаются в виде дерева, с которым достаточно удобно проводить различные операции. Каждый узел дерева содержит в себе информацию, которая хранится на определённом уровне глобала. Расположение этой информации, или измерение, в котором она находится указано на соединениях между узлами.
Сам по себе инструмент для администрирования представляет собой серверную программу и клиент, расположенный в браузере или на мобильном устройстве. Принцип работы следующий: на стороне сервера запускается программа, написанная на NodeJS, которая с одной стороны взаимодействует с GlobalsDB, а с другой ожидает подключения клиентов на определённый порт. Так же, если была включена соответствующая опция в конфигурации, запустится простой http-сервер, отдающий статику — клиент приложения. После установки соединения клиента с сервером и после процессов авторизации и логина можно приступать к работе, манипулируя всем этим как клавиатурой, так и указателем мыши или жестами на сенсорном экране.
Подробный процесс установки можно найти на странице проекта [5], а здесь он будет описан немного проще.
config.js
абсолютный путь к mgr
каталогу вашей базы данных и другие интересующие вас настройки;node_modules/globalsDB/cache.node
подходит для вашей системы/базы данных. Если архив с GlobalsDB Admin был распакован не в ОС Windows, вам нужно будет отыскать cache***.node
модуль в директории с установленной базой данных, переименовать его в cache.node и указать к нему путь в файле config.js
(или переместить модуль в директорию node_modules/globalsDB
). Так же возможен вариант скачать *.node модуль с официального сайта [8];config.js
) запущен, и NodeJS умеет выполнять команды (по крайней мере node --version
должен давать что-то разумное);node run
в директории проекта, и если сообщений об ошибках не появилось, то по умолчанию станет доступен веб-клиент на знакомом 127.0.0.1
.
Если же вам потребуется запустить серверное приложение в фоновом режиме, установите forever [9], выполнив npm install -g forever
, а затем запустив приложение: forever start run.js
.
Что касается управления, оно оптимизировано как для настольных ПК, так и для сенсорных устройств. Пройдя успешную авторизацию, вы можете использовать такие основные комбинации:
Клавиатура
Выбор узла: стрелки вверх/вниз, выбор действия (переход, редактирование, копирование, удаление) — стрелки влево/вправо, клавиша Enter — выполнение действия над узлом, клавиша Backspace — возврат, клавиши -/+ — уменьшение или увеличения масштаба.
Указатель и сенсорный экран
Выбор действия над узлом: нажатие на соединение между узлами, нажатие на сам узел — выполнение выбранного действия, прокрутка вверх/вниз или жест двумя пальцами — изменение масштаба. Прокрутка узла с большим количеством дочерних узлов осуществляется нажатием и перемещением указателя.
Так же все подробности о том, как установить и обращаться с этим инструментом вы можете посмотреть в этом скринкасте [10].
Работая с базой данных, как и с любым другим продуктом, часто возникают какие-то трудности или открываются новые горизонты. Постараюсь описать, на мой взгляд, самое любопытное, с чем пришлось столкнуться.
При первой установке базы данных она выглядит как чёрный ящик. Бегло перелистав документацию по интерфейсу NodeJS, можно было наткнуться на первую нужную функцию global_directory
, чтобы узнать, лежит ли в базе данных по умолчанию хоть что-то. Подключившись и получив результат окажется, что там пусто, что было достаточно ожидаемым. Но на самом деле это не совсем так. В корне располагаются некоторое количество системных глобалов, а они скрыты. Например, получится достать глобал с именем "%
", или "%IS
". Чтобы отобразить этот глобал в GlobalsDB Admin, достаточно нажать на + (добавить) у корневого узла и ввести его имя, например, "%IS
" без установки значения. Нажав «add», можно будет просмотреть содержимое данного глобала:
Понятное дело, там спрятана разная служебная информация, и лучше воздержаться от её изменения. Но можно так же успешно добавлять свои глобалы, называя их с префиксом "%
". Они так же не вернуться в результате выполнения функции 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/
Нажмите здесь для печати.