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

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

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





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

    GlobalsDB Admin


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

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



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

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

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

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

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

    Процесс установки
    1. Устанавливаем NodeJS, если он не был ранее установлен;
    2. Распаковываем последнюю версию 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 модуль с официального сайта;
    5. Убеждаемся, что GlobalsDB (или инстанс Caché, путь к базе данных которого был прописан в config.js) запущен, и NodeJS умеет выполнять команды (по крайней мере node --version должен давать что-то разумное);
    6. Выполняем 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
    InterSystems 67,12
    Вендор: СУБД Caché, OLAP DeepSee, шина Ensemble
    Поделиться публикацией
    Комментарии 4
    • +1
      Потрясающий графический интерфейс. На каких технологиях он сделан?
      • +1
        Приятно узнавать, что вам понравилось, спасибо! Интерфейс был написан «вручную» на чистом JavaScript, HTML и CSS, а бэкенд на NodeJS. Тогда, как и сейчас, во многих креативных случаях я не предпочитаю использовать какие-либо графические фреймворки.
      • 0
        Как вы думаете: насколько сложно ваше приложение заставить работать на Apache без Node.JS?
        • 0
          На Apache можно разместить только клиентское приложение (или даже воспользоваться уже готовым онлайн-клиентом). В случае с Apache (если вы имеете в виду именно чистый веб-сервер, без PHP там всяких) это станет самым подходящим для Вас вариантом. Но серверная часть написанного мной приложения всё равно требует Node.JS, тут без нового кода не обойтись.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое