MongoDB — это NoSQL-база данных, которую в том или ином виде используют более четверти разработчиков. MongoDB и другие NoSQL-базы данных привлекают своей гибкостью: вместо жесткой схемы и вертикального масштабирования, у вас есть возможность развивать схему постепенно и масштабироваться горизонтально. Компания MongoDB вышла на биржу в 2017 году и сегодня стоит более 17 миллиардов долларов.
Документные базы данных используют вместо реляционных таблиц и столбцов вложенные пары ключ-значение. Одно из преимущество такого подхода в том, что вам не нужно преобразовать данные для взаимодействия с фронтендом — данные уже хранятся в необходимом виде (плюс-минус .map или .reduce).
Работа с MongoDB через командную строку не всегда удобна, и в этом посте мы рассмотрим доступные графические инструменты.
Mongo Shell против GUI
Самый простой способ работы с MongoDB — это mongo shell. Его можно использовать для запросов, изменения данных и администрирования.
MongoDB Shell входит в состав дистрибутива MongoDB Server, так что, если вам удобно работать с командной строкой, то у вас все готово. Но, скорее всего, обход объектов и написание длинных запросов в командной строке вам быстро наскучит, поэтому mongo shell обычно используется для административных задач и когда нужно что-то быстро посмотреть.
> use sample_analytics
switched to db sample_analytics
> db.transactions.find({})
{
"_id": "5ca4bbc7a2dd94ee581625eb",
"account_id": 50948,
"limit": 10000,
"products": [
"InvestmentStock",
"Commodity",
"Brokerage"
],
"transaction_info": [
{
"_id": "5ca4bbc1a2dd94ee58161e14",
"account_id": 50948,
"transaction_count": 6,
"bucket_start_date": "1991-05-08T00:00:00.000Z",
"bucket_end_date": "2015-10-13T00:00:00.000Z",
"transactions": [
{
"date": "2015-10-08T00:00:00.000Z",
"amount": 2311,
"transaction_code": "sell",
"symbol": "nflx",
"price": "104.9154457571513461289214319549500942230224609375",
"total": "242459.5951447767609039374292"
},
{
"date": "1995-12-15T00:00:00.000Z",
"amount": 4828,
"transaction_code": "buy",
"symbol": "aapl",
"price": "1.102632231847472166208490307326428592205047607421875",
"total": "5323.508415359595618454591204"
},
...
]
}
]
},
Безусловно, с Mongo можно работать исключительно из командной строки, но работа даже с наборами данных среднего размера становится некомфортной.
С помощью графических инструментов можно визуализировать данные и редактировать запросы без использования командной строки (или с ней — подробности ниже).
Во всех GUI-инструментах MongoDB есть сходные возможности:
Визуальный редактор запросов: возможность создания запросов с помощью drag-and-drop.
Автодополнение запроса (autocomplete): автоматические предложения для имен коллекций, полей, методов и операторов.
Aggregation framework: пошаговое создание и тестирование запросов, с последующим экспортом в код.
Аналитика сервера и запросов: анализ запросов и производительности сервера.
Импорт данных из реляционной базы данных в MongoDB: автоматизация утомительной и подверженной ошибкам передачи данных между разными типами баз данных.
Далее рассмотрим лучшие графические инструменты для MongoDB на 2021 год. У каждого из них есть свои особенности, выделяющие одни среди других. Выбор зависит от масштабов вашего проекта, необходимых функций и бюджета.
MongoDB Compass
Описание
У MongoDB есть "родной" многоплатформенный GUI под названием Compass. Он предоставляет возможность навигации по базе данных без написания запросов. Полнофункциональная версия Compass недавно стала полностью бесплатной, а исходный код доступен на GitHub.
Особенности MongoDB Compass:
Визуализация схемы: Compass визуализирует коллекции для удобного анализа данных.
Визуальный редактор для CRUD-операций: выполнение CRUD-операций без написания запросов.
Геопространственные данные: создание запросов к картографическим данным с помощью интуитивного интерфейса с представлением результатов как в виде графиков, так и в виде JSON-документов.
Валидация: удобный редактор правил JSON Schema с подсказками.
Главная фича — плагины
Одна из особенностей MongoDB Compass — API для плагинов. Комьюнити Compass написало множество классных плагинов, которые могут генерировать тестовые данные, инспектировать пользователей базы данных и даже проверять статус шардов. Если вы нужного плагина нет, то можно написать свой, используя шаблон.
TablePlus
Описание
TablePlus — это современный нативный GUI-инструмент для реляционных баз данных, таких как MySQL, PostgreSQL, SQLite, и NoSQL-баз данных, таких как MongoDB. Команда TablePlus состоит из основателя Генри Фама (Henry Pham) и разработчика Ракуна Тая (Raccoon Thai). Команда, как и сообщество пользователей, довольно активны на GitHub.
Особенности TablePlus:
Настраиваемый интерфейс: настройка конфигурации и внешнего вида.
in-line редактирование: возможность редактирования данных и структуры таблиц одним щелчком мыши.
Главная фича — безопасность базы данных
С помощью TablePlus можно подключиться к базе данных через защищенное соединение. Также TablePlus обеспечивает безопасное хранение учетных данных в хранилище ключей вашего устройства и поставляется со встроенным SSH. Помимо этого, есть поддержка многоступенчатой аутентификации и встроенный libssh.
Robo 3T
Описание
Robo 3T — это легковесный многоплатформенный GUI для MongoDB с открытым исходным кодом. Компания 3T Software Labs купила Robomongo в 2017 году и провела ребрендинг.
Проект продолжает развиваться и набрал восемь тысяч звезд на Github. Одно из преимуществ этого инструмента — большое комьюнити. Если возникнут проблемы, можно найти множество туториалов, руководств и форумов.
Особенности Robo 3T:
Автодополнение кода: хотя Robo 3T не обладает возможностями IntelliShell (см. Studio 3T ниже), у него есть полезная функция автодополнения в рантайме, которая работает через внутреннюю виртуальную машину.
Отзывчивый пользовательский интерфейс: все операции выполняются асинхронно, поэтому приложение никогда не будет зависать при длительных операциях.
Главная фича — встроенный MongoDB shell
Многие из графических инструментов MongoDB эмулируют mongo shell, но здесь он встроенный. Встроенный mongo shell обладает большей функциональностью по сравнению с эмулируемым, поскольку эмуляторы обычно работают поверх предоставленного API, тогда как встроенный shell работает напрямую с MongoDB.
Studio 3T
Описание
Studio 3T, ранее MongoChef — более мощная, профессиональная версия Robo 3T, принадлежащая той же компании 3T Software Labs. Studio 3T — это больше, чем просто графический инструмент MongoDB, это также IDE и клиент. Бесплатной версии Studio 3T нет (если не считать Robo 3T), а цены начинаются с 149$ в год на пользователя (редакция Core). В редакции Core отсутствуют функции, которые есть в более дорогих версиях, такие как импорт / экспорт SQL, SQL-запросы и schema explorer.
Особенности Studio 3T:
IntelliShell: интеллектуальный встроенный mongo shell с автодополнением, поддерживающий функции стандартной библиотеки JavaScript, коллекции, поля, операторы и методы.
Три способа представления данных:
Табличный — в виде строк и столбцов.
Древовидный — в виде иерархии.
JSON — в виде JSON-документов.
Генерация кода: экспорт запросов в Node.js, Python, Java, C #, PHP, Ruby и mongo shell.
Импорт данных: импорт из SQL-баз данных, Oracle и Sybase.
Главная фича — четыре способа написания запросов к MongoDB
Studio 3T предоставляет наибольшее количество вариантов создания запросов к базе данных. Вы можете выполнять запросы следующими способами:
SQL-запросы: можно писать запросы к MongoDB с использованием SQL (круто!).
Mongo shell: встроенная технология IntelliShell обеспечивает удобные функции автодополнения.
Редактор агрегирования (Aggregation Editor): написание сложных запросов.
Визуальный конструктор запросов: редактор с возможностью drag-and-drop для создания запросов (можно использовать вместе с IntelliShell)
Даже если вы не знакомы с документными базами данных, языками запросов и командной строкой, то все равно сможете использовать Studio 3T для работы с MongoDB.
NoSQLBooster
Описание
NoSQLBooster обладает большим набором функций в платной версии. В бесплатной многое из того, что делает этот GUI таким замечательным, отсутствует. Например, нет автодополнения кода и визуального построителя запросов. Лицензирования по подписке у NoSQLBooster нет, поэтому при покупке он останется вашим навсегда (или до тех пор, пока вы не захотите обновиться).
Особенности NoSQLBooster:
IntelliSense: аналогично IntelliShell, в Studio 3T при вводе текста отображаются подсказки, предлагая варианты завершения, методы, свойства, переменные, ключевые слова, имена коллекций, имена полей и операторы.
Интерактивные примеры: туториалы с заранее написанными запросами и описанием для изучения MongoDB.
Стоит также упомянуть встроенные сниппеты, предлагающие готовые фрагменты кода, например, для таких операций, как преобразование данных из SQL в MongoDB или для работы с диапазонами дат. Можно также создавать свои сниппеты.
Главная фича — NPM-пакеты в скриптах MongoDB shell
Особенностью NoSQLBooster является уникальная возможность добавить любой NPM-пакет в скрипт MongoDB shell. Некоторые полезные и популярные пакеты, такие как lodash, moment, bluebird, ShellJS, и math.js уже входят в его состав и готовы к использованию.
HumongouS.io
Описание
HumongouS.io — это полностью онлайновый GUI, что позволяет удобно организовать совместную работу. Он подходит как для разработки, так и для администрирования. При его использовании вам не нужно сообщать реквизиты доступа к базе данных — вместо этого вы можете предоставить доступ только к приложению. И также можно получить доступ к данным с мобильных устройств.
Особенности:
Интеллектуальный поиск (smart filters): фильтры коллекций можно сохранять, что обеспечивает быстрый доступ к ним.
Диаграммы и дашборды: очень легко создать диаграммы и дашборды для анализа нужных вам данных.
Главная фича — настраиваемые виджеты
С помощью виджетов можно настроить отображение данных и связать их с определенными коллекциями. Есть виджеты просмотра, форм и макетов. Виджеты просмотра (viewer widgets) позволяют отображать данные в более удобном виде, чем простые строки.
Виджеты форм (form widgets) — это, согласно документации HumongouS.io, "строительные блоки форм". Их можно настроить и сопоставить с любым типом данных в вашей базе данных.
Виджеты макета (layout widgets) — альтернатива стандартному табличному представлению, позволяют отображать специализированные данные.
NoSQL Manager
Описание
NoSQL Manager упрощает навигацию, просмотр и редактирование документов, а также позволяет устанавливать ограничения для максимальной производительности. Вы можете управлять коллекциями, индексами, а также пользователями, ролями и функциями. Поддерживается MongoDB Enterprise, MongoDB в Azure Cosmos DB и Amazon DocumentDB.
Особенности:
Поддержка различных конфигураций хостов: NoSQL Manager поддерживает наборы реплик (Replica Set), соединения к шардированным кластерам и автономным хостам.
Просмотр данных: просмотр и редактирование документов в виде дерева, таблиц и JSON.
SSH-туннелирование: NoSQL Manager может подключаться к MongoDB через SSH-туннель.
Импорт: импорт данных из MySQL и SQL Server.
Главная фича — автодополнение
NoSQL Manager поставляется с MongoDB UI Shell с автодополнением кода, подсветкой синтаксиса и подсказками. Автодополнение подсказывает вам имена коллекций и методов в командах MongoDB Shell по мере ввода команд.
Retool
Описание
Retool — это платформа для разработки внутренних инструментов, на базе которой вы можете создать любой GUI для MongoDB (см. шаблон). Retool позволяет использовать drag-and-drop для построения форм без кодирования и подключаться к чему угодно с помощью REST или GraphQL, что означает возможность создания полнофункционального GUI для MongoDB и реализации любых CRUD-операций.
Особенности Retool:
Производительность: настройка работы Retool с MongoDB занимает всего несколько минут.
Анализ схемы: визуальное представление данных.
Сохранение запросов: запросы можно сохранять и использовать повторно.
Быстрое превращение запросов в готовые инструменты: от запроса до готового фронтенда пара кликов без написания кода.
Главная фича — настраиваемый интерфейс для визуализации данных
Вы можете использовать готовые компоненты Retool (таблицы, кнопки, текстовые поля, поля для поиска) не только для просмотра ваших данных, но и для выполнения любых необходимых CRUD-операций. После настройки источника данных интерфейс создается с помощью drag-and-drop.
Лучший MongoDB GUI для вашего проекта
Как и выбор любого другого инструмента, выбор GUI для MongoDB зависит от ваших целей и потребностей.
Если вы хотите полностью отказаться от командной строки, то Compass будет подходящим выбором. Если простое решение с большим комьюнити — Robo 3T. Если вы знакомы с SQL и хотите продолжать писать запросы на всеми любимом языке запросов, то подойдет NoSQLBooster. А если нужно превратить ваши запросы в готовые утилиты, то попробуйте Retool.
Материал подготовлен в рамках курса «NoSQL».
Всех желающих приглашаем на открытый урок «Отказоустойчивое Key Value хранилище ETCD». На занятии познакомимся с etcd и разберем спектр ее применения.
Краткое содержание:
- алгоритм Raft;
- отличия etcd от прочих аналогичных решений;
- основные моменты установки и настройки кластера etcd;
- бэкап и репликация кластера.
В результате получим развернутый кластер.
>> РЕГИСТРАЦИЯ