Содержание статьи:
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, у вас может быть доступ к этим инструментам.
![](https://habrastorage.org/getpro/habr/upload_files/a91/363/546/a9136354689c8788974ede932014d9c8.png)
Что меня интересовало еще больше, так это другие инструменты, которые в рейтинге упоминаний идут сразу за наиболее популярными. Часто именно этот набор инструментов 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 является его расширяемость. Если основное приложение не дает необходимого, что какая-то компания работает над обеспечением этой функциональности.
![](https://habrastorage.org/getpro/habr/upload_files/0a0/d63/f6e/0a0d63f6ed2aec9ad4353e972dd54806.png)
Общее количество упомянутых инструментов, как правило, подпадало под четыре категории: функции управления, мониторинг кластера, инструменты анализа плана запросов и инструменты 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 для работы с базами данных, о которых мы упоминали ранее. В обоих случаях возможности визуализации несколько ограничены, поэтому трудно точно сказать, какие именно функции используются, чтобы отнести их к категории средств визуализации.
![](https://habrastorage.org/getpro/habr/upload_files/02f/226/218/02f226218e14c9286475ab26c3ec082f.png)
Следующая группа инструментов мне более интересна, и я хотел бы выделить некоторые из них.
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.
Регистрация на занятие.