[Из песочницы] Новый GUI для Postgresql
Хочу поделиться новым продуктом со всеми пользователями замечательной базы данных Postgresql. Встречайте — SQL Tabs — графическая SQL консоль для Postgresql. Это новый GUI клиент, в котором можно просматривать объекты базы данных, писать SQL запросы и строить графики.
На сегодняшний день можно скачать версии для OSX и Ubuntu. Пользователи других linux-дистрибутивов могут запустить приложение из исходников. К сожалению, версии для Windows пока нет. Хочется надеяться, что приложение понравится сообществу, и найдутся разработчики, способные помочь в выпуске пакетов под разные платформы: rpm, debian, windows.
Немного информации для разработчиков: SQL Tabs написано на стэке javascript, electron, react
и использует native libpq драйвер для работы с базой. Выпускается под лицензий GPL3.
Теперь об основных особенностях SQL Tabs, отличиях от других похожих продуктов и основной мотивации, которая стоит за разработкой.
Начнем с процесса создания соединения, который сделан максимально просто: нужно ввести URL в адресной строке. Так сделано для экономии времени при переключении между серверами, особенно при работе с шардированными базами.
Наверное самым большим отличием от подобных приложений будет отсутствие привычного дерева объектов БД в левой боковой панели. Вместо него там расположен навигатор по файловой системе в духе Project Window. Это делает SQL Tabs больше похожим на текстовый редактор а ля Sublime. Как никак, разработка баз данных ничем принципиально не отличается от любой другой разработки: SQL скрипты нужно хранить в файлах, а файлы в git или любой другой scm. При этом, редактируя файл, можно тут же выполнять запросы, переключаясь между разными базами данных на лету.
Тем не менее, навигатор по объектам таки существует, вызвать его можно из меню, выбрав пункт Database Info. Список поддерживаемых объектов пока далеко не полный, это как раз та область, где еще предстоит поработать. Такое решение позволяет получать быстрый доступ к описанию объектов прямо в время написания кода. Например, набрав имя таблицы в редакторе, можно нажать CTRL+I (CMD+I на маке) и увидеть структуру таблицы и наличие индексов, не переключаясь на другое окно.
Из плюшек еще имеются история выполненных запросов с поиском, светлая и темная темы оформления, автодополнение ключевых слов и имен объектов. Для гиков есть Vim-мод.
Теперь моя любимая фишка — визуализация результата запроса. Смысл в том, чтобы по данным из таблицы построить график, не покидая контекста SQL. Очень полезно при поверхностном анализе данных. Работает это следующим образом.
SQL Tabs может использовать в скриптах дополнительную семантику: блоки SQL команд, которые разделяются при помощи строки комментария, начинающейся с трех дефисов:
--- 1st SQL block
SELECT 1;
SELECT 2;
--- 2nd SQL block
SELECT 3;
SELECT 4;
Такая строка может содержать в себе дополнительно аннотацию, т.е. пояснять каким образом нужно интерпретировать вывод SQL команд текущего блока.
Например, вот такой запрос, возвращающий количество сотрудников по городам:
SELECT city, COUNT(*) FROM employees GROUP BY city
city | count
---------|---------
London | 245
Paris | 153
New York | 323
Для визуализации таких данных сам собой напрашивается pie-chart (пусть это и не самый удачный вариант графика). Для того, чтобы построить график в SQL Tabs, добавляем перед запросом аннотацию и нажимаем Execute Block.
--- chart pie
SELECT city, COUNT(*) FROM employees GROUP BY city
Для меня самыми полезными оказались обычные timeseries графики для анализа роста таблиц и распределения данных во времени. Вот синтетический пример такого графика:
--- chart area-spline x=1
SELECT d::date, random() FROM generate_series(now()-interval '1 month', now(), interval '1 day') d
А вот картинка из реального примера. Размер дневных партиций и их индексов:
И в завершении немного о планах. SQL Tabs — очень молодой продукт, всего лишь 4 месяца от роду. За это время ритм разработки удавалось держать на уровне примерно двух релизов за месяц. Каждый релиз, как правило, содержал одну или несколько относительно завершенных фич. На сегодняшний момент основная концепция, которая должна быть в первой версии, реализована. Следующие релизы скорее всего будут направлены на доработку и отладку заявленной функциональности.
Если есть какие-то замечания по продукту — обязательно оформите issue в официальном репозитории github.com/sasha-alias/sqltabs. Я уверен, ваши отзывы очень помогут сделать SQL Tabs лучше и в семействе инструментов для Potgresql прибудет.