Содержание статьи

Как бы тебе ни хотелось, MongoDB не подходит в качестве основной БД для 90% приложений. Причина банальна, и ты не раз слышал о ней — почти все данные, которыми оперирует, скажем, среднестатистический сайт, реляционны. А это значит, что даже при использовании ORM работа с Монгой со временем превратится в лапшу из запросов, популяций и ручного копания в результатах. Но что делать, если тебя все же угораздило заюзать ее в своем проекте? Остается только расслабиться и получать удовольствие. А какое удовольствие может быть без толковой админки?

Несмотря на то что на сегодняшний день MongoDB — проект далеко не новый, среди админок для нее нет явного лидера. Как по удобству работы, так и по исполнению. И это действительно удивляет, ведь есть как минимум две причины, по которым эта ниша должна быть переполнена качественными и конкурентоспособными продуктами.

Во-первых, компания, разработавшая MongoDB, — 10gen инвестировала и продолжает вкладывать в маркетинг MongoDB значительные средства. Как следствие, все больше и больше компаний и отдельных девелоперов начинают использовать ее в своих проектах. Во-вторых, Монгу, как ни крути, любят разработчики. О ней говорят, ее обсуждают и критикуют. Ни одна другая технология (ну разве что Angular c Docker’ом) не вызывала столько вопросов, дискуссий и разнообразного флейма. Весь этот хайп притягивает начинающих программистов, и сейчас уже не редкость увидеть джуниоров, которые просто не представляют, что можно работать с данными в БД, следуя какой-то другой парадигме, нежели той, что навязывает Монга.

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

 

Robomongo

Robomongo — действительно классная тулза для просмотра и модификации содержимого твоей БД. Она кросс-платформенна, поддерживает аутентификацию и в целом имеет довольно симпатичный GUI. На выбор пользователю дается несколько вариантов просмотра содержимого коллекций — в виде дерева, таблиц или plain-text JSON-документов.

robomongo-1

В плане юзабилити Robomongo довольно далеко ушла от своих конкурентов. Во-первых, у нее есть двухпанельный режим работы для различных запросов. Это очень удобно при работе с несколькими коллекциями одновременно — например, когда ты отлаживаешь результаты записи в БД своего приложения. Во-вторых, она поддерживает вкладки (каждая со своим отдельным шеллом), сохраняя результаты последнего запроса каждой отдельной сессии. Значит, всегда можно сравнить ответ БД до и после какого-то важного изменения на клиенте или в принципе работать над параллельным задачами одновременно. В-третьих, Robomongo имеет простой, но довольно функциональный автокомплит, который можно использовать при ручном составлении запросов к БД. Вдобавок ко всему у Robomongo есть небольшой набор спиппетов для наиболее частых CRUD-операций с документами, которые здорово экономят время при необходимости что-то быстро поменять в БД.

robomongo-2

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

 

Genghis

Genghis — довольно милая, но простенькая web-based админка для выполнения простых CRUD-операций с Mongo. Поставляется в виде двух скриптов — один на Ruby с Sinatra, второй — на PHP для использования с Apache или nginx + PHP-FPM. Фронтенд написан на Backbone. Верстка у приложения адаптивная, так что работать с приложением даже со смартфона довольно удобно (хотя это, прямо скажем, нетривиальный юзкейс).

genghis_1

Genghis очень проста и интуитивна. Работа с ней схожа с блужданием по древовидному сайту или по файловой системе в проводнике Windows. Она поддерживает минимум операций — посмотреть коллекцию, изменить документ, не более того. В ней невозможно запутаться, нельзя ничего сломать, зато можно за пять секунд в небольшой базе найти шорткатами любой документ, быстро отредактировать его и сохранить, не ломая голову, куда нажать, чтобы выполнить эквивалент db.find().

genghis_2

Автор Genghis вдохновлялся MongoHub, довольно известной админкой MongoDB для OS X, и старался сделать ее такой же простой. Что же, действительно получилось, правда в ущерб функционалу. Genghis подойдет, только если тебе нужны самые базовые CRUD-операции, да и то без каких-либо фильтров в запросах.

 

RockMongo

RockMongo — весьма популярная web-based админка, очевидно написанная под впечатлением от старого доброго phpMyAdmin. Исполнена в виде приложения на PHP и в своей работе использует библиотеку php_mongo, которую, скорее всего, придется установить отдельно.

rockmongo_1

Интерфейс RockMongo умудрился переплюнуть по отвратности даже свой прообраз — phpMyAdmin. Жуткие шрифты, layout в стиле чата «Кроватка» явно не улучшают юзабилити продукта. Первое впечатление — словно ты попал на форчан трехлетней давности (странно, автор вроде китаец :)). Однако все недостатки интерфейса с лихвой переплевывает неплохой функционал приложения. Несмотря на то что RockMongo и не может похвастаться двухпанельным режимом и вкладками, он добротно (хотя и довольно топорно) предоставляет тебе всю информацию, необходимую для работы с Mongo в dev-режиме. Тут тебе простой, но функциональный лист документов в коллекциях с возможностью быстро отредактировать любой из них, не теряя контекста, простой шелл с несколькими подготовленными шаблонами, пагинация и статистика. Кстати, RockMongo также поддерживает импорт и экспорт документов в твою БД и даже имеет свой небольшой набор плагинов.

rockmongo_2

В общем, RockMongo — неплохой выбор, если тебе нужна простая, но функциональная админка, тебя не отпугивает отсутствие юзабилити и ты ностальгируешь по phpMyAdmin. В остальных случаях смотри п. 1.

 

UMongo

UMongo — очень функциональное, но несколько запутанное приложение для администрирования кластера MongoDB. Распространяется в виде бинарников под Windows, OS X и Linux, исходники, как и у всех остальных тулз из этого списка, доступны на GitHub. Написано на Java.

umongo-1

UMongo поддерживает работу как с одиночными инстансами MongoDB, так и с набором реплик. Естественно, из приложения в два счета ты сможешь выполнить любую CRUD-операцию или исполнить кастомный запрос на выборку с помощью встроенного шелла. Доступны операции с шардами MongoDB, поддерживаются ditinct, group, aggregate, map reduce. Есть возможность работы с геоиндексами Монги.

umongo-2

UMongo также позволяет тебе получить всю необходимую статистику о конкретной базе данных — о коллекциях, наборах документов, размере, ключах, а также позволит мониторить статус инстансов в твоем кластере.

Из приятных особенностей можно отметить поддержку импорта и экспорта в CSV, JSON, BSON и выполнение всех операций в фоновом режиме (приложение не застывает во время выполнения тяжелых запросов к БД).

UMongo — действительно навороченная админка, но использовать ее стоит только в том случае, если ты не первый день знаком с MongoDB. Для простых CRUD-операций (а в процессе девелопа зачастую нужны преимущественно они) она далеко не самый оптимальный выбор.

 

mViewer

«А MongoDB tool that understands comfortability» — так гласит первый коммент под презентационным видео этой админки на YouTube. И это действительно так. За три года разработки под MongoDB я так и не нашел ничего более удобного для повседневной работы, чем эта web-based тулза. Несмотря на то что проект уже больше года не обновляется, весь функционал абсолютно рабочий.

mViewer-1

Все в интерфейсе этого приложения продумано, любая операция не занимает больше двух кликов. В mViewer нет ничего специфического, она поддерживает базовые CRUD-операции без потери контекста, имеет свой шелл и поддерживает пагинацию. Также доступны базовые CRUD-операции с коллекциями и минимальный вывод статистики о БД. Из приятных фич можно отметить возможность в реальном времени строить графики активности read/write.

mViewer-2

Кстати, на Гитхабе лежит не самый свежий бинарник. К несчастью, он содержит глупый баг, приводящий к невозможности аутентификации. В последней доступной версии 0.9.2 его пофиксили, но, видимо, на разработку забили, так что собирать придется самому (только не забудь предварительно установить Maven):

git clone https://github.com/Imaginea/mViewer.git
cd mViewer
mvn clean package -Prelease -DskipTests
cd target
ls mViewer-0.9.2.*

Подводя итоги, можно сказать, что mViewer — это отличная повседневная тулза. Без наворотов, без зависимостей (кроме Java, разумеется). Она не пытается охватить все возможности MongoDB, а фокусируется на юзабилити. И этим она и подкупает.

 

Оставить мнение

Check Also

Безопасность превыше всего. 9 простых трюков, которые сделают жизнь линуксоида секьюрнее

Жизнь обычных людей складывается из мелочей. Жизнь линуксоида складывается из множества ма…