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

1. Инструменты PostgreSQL
2. Написание запросов и администрирование PostgreSQL
3. Полезные сторонние инструменты PostgreSQL для разработки приложений
4. Какие инструменты визуализации вы используете?

Опрос о состоянии PostgreSQL 2022 завершился несколько недель назад, и мы усердно работаем над очисткой и анализом данных, чтобы поделиться с сообществом PostgreSQL максимально полной информацией.

В сообществе по базам данных обычно из года в год множество дискуссий вызывают две вещи: производительность и инструментарий. В этом году мы немного скорректировали вопросы, чтобы сосредоточиться на конкретных случаях использования и инструментах PostgreSQL, которые сообщество считает наиболее полезными: написание запросов и администрирование, разработка и визуализация данных.

Инструменты PostgreSQL: как мы относимся к psql?

К psql относимся хорошо. Как показали ответы большинства респондентов (69,4 %), которые упомянули об использовании psql для выполнения запросов и администрирования, это частый выбор для очень многих пользователей PostgreSQL. Также сообщество собрало документацию и ресурсы (отличный тому пример — https://psql-tips.org/ от Leatitia Avrot).

Это заставило нас задуматься. Какие еще инструменты часто используются для взаимодействия с PostgreSQL в тех случаях использования, которые я упомянул во вступлении?

Написание запросов и администрирование PostgreSQL

Как мы только что выяснили, psql — несомненно, самый популярный инструмент для взаимодействия с PostgreSQL.

Однако многие пользователи с разным уровнем опыта доверяют также и другим инструментам.

Инструменты запросов и администрирования

Больше всего упоминаний получили IDE pgAdmin (35 %), DBeaver (26 %), Datagrip (13 %) и IntelliJ (10 %). Если вы работали с базами данных, этот результат вряд ли вас удивляет. Самые популярные GUI (pgAdmin и DBeaver) — с открытым исходным кодом и находятся в свободном доступе. Другие популярные GUI — Datagrip и IntelliJ — предусматривают получение лицензий на рабочее место. Однако если ваша компания или команда уже использует инструменты от JetBrain, у вас может быть доступ к этим инструментам.

Что меня интересовало еще больше, так это другие инструменты, которые в рейтинге упоминаний идут сразу за наиболее популярными. Часто именно этот набор инструментов PostgreSQL привлекает достаточно внимания участников сообщества, поэтому будет интересно их немного изучить. Если они могут быть полезны для моего (или вашего) процесса разработки в определенных ситуациях, я думаю, стоит копнуть немного глубже.

pgcli

Первым в списке стоит pgcli — консольный клиент для PostgreSQL. Это один из многих dbcli-инструментов, созданных для различных баз данных. У него интерактивный интерфейс с функцией автозаполнения, подсветкой синтаксиса и базовая поддержка команд с обратным слэшем. Инструменты dbcli вам подойдут, если вам нравится работать в терминале, но хотелось бы больше интерактивности. Они существуют уже довольно давно, имеют неплохое сообщество пользователей и иногда могут немного упростить исследование базы данных.

Azure Data Studio

Бета-версия была представлена в декабре 2017 г. группой разработчиков инструментов баз данных Microsoft. Она была построена на основе той же платформы Electron, что и Visual Studio Code. Хотя базовый функционал в настоящее время ориентирован на SQL Server (по понятным причинам), возможность подключения к PostgreSQL доступна с 2019 года.

В Azure Data Studio (ADS) есть несколько уникальных фичей, которые работают как с подключениями SQL Server, так и с PostgreSQL. Думаю, что их стоит упомянуть.

Во-первых, ADS позволяет создавать и запускать Jupyter Notebook на основе SQL. Обычно приходится писать на SQL внутри другой среды выполнения, такой как Python, но ADS дает возможность выбрать ядро ​​«SQL» и занимается подключением и выполнением SQL, что называется, за кадром.

Во-вторых, ADS дает возможность экспортировать результаты запроса в Excel без каких-либо подключаемых модулей. Хотя существует (по-видимому) тысяча способов быстро получить набор результатов в CSV, для создания правильно отформатированного файла Excel требуется плагин практически для любого другого инструмента. Независимо от вашего отношения к Excel, он по-прежнему является предпочтительным инструментом для многих аналитиков, и возможность быстро получить Excel файл часто помогает в работе.

Также ADS предоставляет некоторые базовые возможности построения диаграмм с использованием результатов запросов. Нет необходимости настраивать notebook и использовать библиотеку по построению диаграмм, такую, как plotly, если вам просто нужно быстро визуализировать данные. У меня было несколько загвоздок со встроенным инструментов возможностями (ADS нельзя назвать серьезным инструментом анализа данных), но иногда в работе полезно быстро получить несколько изображений диаграмм, которыми можно поделиться при изучении данных запроса.

Postico

Postico — это приложение с GUI для тех, кто использует MacOS. Многие предпочитают родной интерфейс MacOS, а также уникальные возможности редактирования, которые делают работу с PostgreSQL простой и интуитивно понятной.

Подающие надежды инструменты

Вы можете посмотреть сами, какие еще инструменты GUI/запросов используют другие пользователи PostgreSQL. Некоторые из них бесплатны и имеют открытый исходный код, в то время как другие требуют приобретение лицензии. Они предлагают интересные функции, такие как встроенные возможности анализа данных. Вне зависимости от того, станете ли вы использовать их или нет, приятно видеть постоянные инновации на рынке инструментов.

Полезные сторонние инструменты PostgreSQL для разработки приложений

Одной из наиболее важных особенностей PostgreSQL является его расширяемость. Если основное приложение не дает необходимого, что какая-то компания работает над обеспечением этой функциональности.

Общее количество упомянутых инструментов, как правило, подпадало под четыре категории: функции управления, мониторинг кластера, инструменты анализа плана запросов и инструменты DevOps для баз данных. В этом статье мы сосредоточимся на первых трех областях.

Функции управления

Неудивительно, что самые популярные сторонние инструменты PostgreSQL, как правило, сосредоточены на тех или иных повседневных задачах управления. Два самых популярных инструмента в этой области являются опорой для большинства self-hosted PostgreSQL инсталляций.

pgBouncer

PostgreSQL создает один новый процесс (не поток) для каждого соединения. Без надлежащей настройки и подходящего сервера из-за незапланированных всплесков использования база данных может быстро стать перегруженной. pgBouncer — это приложение с открытым исходным кодом для поддержки пула соединений, которое помогает управлять соединениями для приложений с высоким трафиком.

Если база данных размещена на собственном хосте или ваш DBaaS не предоставляет вам какое-либо управление пулом соединений, pgBouncer можно установить в любом месте, которое имеет смысл с точки зрения вашего приложения, чтобы обеспечить лучшее соединение.

pgBackRest

Бэкапы баз данных, безусловно, необходимы, и PostgreSQL всегда имел стандартные инструменты для резервного копирования и восстановления. Но по мере роста размеров баз данных и усложнения архитектуры приложения использование pg_dump и pg_restore может затруднить качественное выполнение этих задач.

Команда Crunchy Data создала pgBackRest, чтобы предоставить полнофункциональную систему резервного копирования и восстановления со множеством необходимых функций для нагрузок промышленного уровня. Поддержка многопоточного резервного копирования и сжатия, нескольких репозиториев c бэкапами, возобновление бэкапа (в случае ошибки предыдущего) — это лишь некоторые функции, которые делают этот инструмент распространенным и ценным для любого администратора PostgreSQL.

Кластерный мониторинг

Вторая область сторонних инструментов PostgreSQL часто фокусируется на улучшенном мониторинге базы данных, который в большинстве случаев включает мониторинг запросов. Есть много людей, которые решают эту проблемную область с разных точек зрения, что демонстрирует постоянную потребность многих разработчиков и администраторов в управлении PostgreSQL.

pgBadger

PostgreSQL имеет множество тонких настроек, множество деталей работы postgresql могут быть получены из логов, но нет встроенных функций для комплексного анализа этих данных. Здесь в дело вступает pgBadger, который помогает создавать полезные отчеты на основе всех данных, записываемых сервером в логах.

pgBadger — один из немногих популярных инструментов PostgreSQL, написанных на Perl (что меня почему-то удивляет), но разработчик приложил немало усилий, чтобы не было зависимостей на множество Perl модулей для отображения диаграмм и графиков, полагаясь вместо этого на базовые JavaScript библиотеки.

В pgBadger есть на что посмотреть, и большое сообщество PostgreSQL часто рекомендует его как полезный инструмент для отладки проблем с производительностью сервера.

pganalyze

За последние несколько лет значительно выросла популярность pganalyze. Лукас Фиттл проделал отличную работу, добавив новые функции и возможности, а также сделал ряд замечательных ресурсов сообщества PostgreSQL по разным платформам.

pganalyze — это платный продукт, использующий данные, предоставленные стандартными плагинами (например, pg_stat_statements), которые затем собираются сборщиком и отправляются в облачный сервис. Если вы также используете pganalyze для получения информации из логов (например, длительные запросы), то такие функции, как возможные проблемные запросы, а также index advisor, могут быть действительно полезны для процесса разработки и взаимодействия с пользователем.

Анализ плана запроса

Обсуждение PostgreSQL было бы неполным без упоминания инструментов, помогающих лучше понять вывод EXPLAIN. Это одна из областей, с которой многие сталкиваются, особенно в связи с их предыдущим опытом работы с другой базой данных. Поэтому и растет популярность небольшого набора полезных инструментов, помогающих в решении этой важной задачи.

Depesz EXPLAIN и Dalibo EXPLAIN 

И Depesz EXPLAIN, и Dalibo EXPLAIN предоставляют быструю бесплатную платформу, которая берет план запроса PostgreSQL и выдает полезную информацию о том, какие операции вызывают медленный запрос, а в некоторых случаях также дает и полезные советы для ускорения работы. Кроме того, если вы того захотите, оба инструмента дадут постоянную ссылку на результат своей работы, которой вы в случае необходимости можете поделиться с другими.

pgMustard

Одним из моих любимых инструментов EXPLAIN является pgMustard, созданный и поддерживаемый Майклом Кристофидесом (Michael Christofides). Это платный инструмент, но он включает множество уникальных идей и функций, которых в настоящее время нет у других. Майкл также вносит большой вклад в сообщество. Например, недавно запустил подкаст PostgreSQL с Николаем Самохваловым, с которым мы недавно говорили обо всем, что связано с SQL.

Какие инструменты визуализации используете вы?

Последний вопрос об инструментах в опросе State of PostgreSQL касался инструментов визуализации. Без сомнения, Grafana набрала наибольшее количество голосов, но мы об этом догадывались.

Удивился же я тому, что следующие два лидера по количеству голосов были за pgAdmin и DBeaver — популярные инструменты с GUI для работы с базами данных, о которых мы упоминали ранее. В обоих случаях возможности визуализации несколько ограничены, поэтому трудно точно сказать, какие именно функции используются, чтобы отнести их к категории средств визуализации.

Следующая группа инструментов мне более интересна, и я хотел бы выделить некоторые из них.

QGIS

QGIS — это десктопное приложение, которое используется для визуализации пространственных данных, будь то запросы PostGIS или другие источники данных. Поскольку за последние несколько лет я имел удовольствие изучать GIS данные и запросы от Райана Ламберта (Ryan Lambert), я видел, как он использовал этот инструмент для множества ценных и интересных запросов. Если вы в приложении используете PostGIS и храните пространственные данные, посмотрите, как QGIS может помочь в вашем рабочем процессе анализа.

Superset

На рынке существует ряд альтернатив визуализации данных и дашбордов, и поддержка PostgreSQL ожидается повсеместно, независимо от инструмента. Superset — это вариант с открытым исходным кодом, который также имеет коммерческую поддержку и варианты хостинга, доступные через Preset.io. Благодаря более чем 40 типам диаграмм и активному сообществу в экосистеме Superset есть, что исследовать.

Streamlit

Для разработчиков, которые используют Python для анализа данных и визуализации, еще одним популярным выбором является Streamlit, который может легко вписаться в существующий рабочий процесс. Streamlit — это не drag-and-drop интерфейс для создания дашбордов, а скорее программный интерфейс для создания и развертывания приложений для анализа данных с использованием Python. А с июля 2022 года вы можете развертывать приложения для общедоступных данных с помощью Streamlit.io.

Ознакомиться с отчетом

Если вы хотите узнать больше о состоянии PostgreSQL 2022, в том числе о том, почему респонденты выбрали PostgreSQL, их мнение об отраслевых событиях и о том, какие источники информации они рекомендуют друзьям и коллегам, читайте наш полный отчет


Приглашаем всех желающих на открытое занятие «Как выпустить GINа из PostreSQL?», на котором рассмотрим:

— GIN индекс;
— Особенности построения;
— Области его применения (полнотекстовый поиск, JSONB)Обслуживание индекса (причины, методы);
— Практические примеры применения GIN.

Регистрация на занятие.

Комментарии (10)


  1. MixaSg
    27.09.2022 06:56

    Похоже, я один использую EMS SQL Manager.


  1. dbubb
    27.09.2022 10:48
    +7

    Для анализа планов запросов есть такой сервис:
    https://explain.tensor.ru/


    1. debagger
      27.09.2022 11:02
      +1

      Интересный сервис, спасибо за наводку!


  1. K_Chicago
    27.09.2022 18:38
    +2

    Кстати об инструментах. Стоит задача изготовить веб-приложение для пользователей для работы с несколькими основными таблицами базы. Ничего супер-сложного, поиск, выборка, изменение и создание записей. Как и на чем писать - неизвестно. Ограничение - это должно быть "безвозмедно то есть даром." Если бы это был Oracle, то идеальная задачка для APEX. Но это ни разу не Oracle, это "oracle для бедных". Я ни разу не веб-программист, потыкался в django, node.js, vue - извините, полностью обалдел от примитивности IDE для программирования и бессзвязной бредоподобной логики всех этих супер-дупер крутых инструментов. Попадаются вроде визуальные конструкторы, но от малоизвестных фирм за совершенно дурацкие цены. Коммерция погубит этот мир, господа!

    Совсем было отчаялся, но случайно знакомый упомянул...язык R. Казалось бы, где имение, а где вода. Это какой-то специализированый язык для статистических расчетов...каким боком?

    Оказывается.

    У R существует фреймворк(?) под названием Shiny.

    И при нём миленькое IDE под названием RStudio. Всё бесплатно (хотя если очень хочется, можно и заплатить). Он задуман для предоставления сложных графиков и диаграмм, как я понимаю. И как побочный эффект, к моему удивлению - вот это Shiny предоставляет простой, понятный способ довольно быстро сваять веб-приложение работающее с Postgres, есть куча пакетов с готовыми GUI компонентами, с датагридами, он поддерживается амазоновским AWS. У R есть странная заморочка называемая reactivity, какой-то извращенный способ вызова и передачи данных, но если напрячься его можно наполовину как-то заставить работать, наполовину проигнорировать. Откровенный бред, но не смертельный. Приложения получаются простенькими, но быстренько, вид вполне цивильный, очень большое и доброжелательное коммьюнити, можно найти помощь почти по любому вопросу, и вообще - вот как-то чувствуется всё исполнено без этого новомодного жлобства с крикливой рекламой и дебильными "видео презентациями" - "чего тебе еще надо, собака?"
    Вот пример внешнего вида того что удалось наваять за месяц с полного нуля:

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

    Как говорится, бедненько, но чистенько.

    У меня такое ощущение что еще остается несколько оплотов "софта с человеческим лицом", я бы сказал , "в стиле MIT" - это такой оазис в мире монетизаторов, который до сих пор делает простые, бесплатные и эффективные вещи для программирования, например мой любимый MIT Inventor. И вот кажется что R - один из таких утёсов в горьком океане новомодных смузи-блогеров.

    Для заинтересовавшихся - https://shiny.rstudio.com/tutorial/written-tutorial/lesson1/


  1. edo1h
    28.09.2022 07:32

    Какие инструменты визуализации используете вы?

    гхм, а что понимается под визуализацией? как в одном разделе оказались dbeaver и graphana — на мой взгляд ну очень разные инструменты


  1. ZeroBot-Dot
    28.09.2022 09:15

    Спасибо за подборку. Нашел для себя пару новых инструментов.

    Нет в планах такой же статьи, но по Redis`у?


  1. k-semenenkov
    29.09.2022 06:58

    Спасибо за подборку!
    В скромное дополнение, вдруг кому пригодится -
    https://db-merge-tools.net/for-postgresql
    Гуи для сравнения/синхронизации PostgreSQL, есть бесплатная версия которая может быть вполне полезна для некоторых задач сравнения данных и основных параметров схемы. Я автор (сорри за рекламу).


  1. Basil155
    29.09.2022 07:04

    pgModeller - замечательная тулза для визуализации схемы БД. Для бесплатного использования надо собирать самому из исходников


    1. edo1h
      29.09.2022 07:22

      в debian просто apt install pgmodeler


    1. fiego
      29.09.2022 16:50

      Или поставить Wsl2, в ней линукс по выбору, а там уже, как правило, есть собранный пакет для pgmodeller