Топ инструментов разработки для PostgreSQL

    Конференция PG Day Russia растет и масштабируется: этим летом мы готовим для вас доклады и тренинги по всем наиболее популярным базам данных, а также по администрированию и хранению данных. в рамках подготовки мы запустили корпоративный блог, где планируем делиться ценной информацией о происходящем в мире баз данных. Первый пост посвящен инструментам разработки для PostgreSQL, его автор varanio будет рад ответить на ваши вопросы и комментарии!


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


    Это, конечно, не строго математическая выборка, но тем не менее получился некоторый список инструментов на слуху, которые достойны того, чтобы их "пощупать", что я и собираюсь сделать в этой статье.


    Если вашего инструмента нет в списке, или у вас просто есть что сказать, добро пожаловать в комментарии.


    Итак, вот неформальный топ и субъективное описание.


    psql


    На первом месте psql, и это неудивительно. Надежный как автомат калашникова, бесплатный, стоит из коробки, что еще надо для счастья? Для редактирования запросов используется редактор, указанный в переменной окружения EDITOR, обычно ставят vim, nano или что-то в этом духе. Ну и вообще, psql — это unix-way, т.е. можно его запускать со своим редактором, своим пейджером для отображения результатов, ему можно на вход подавать sql-запрос через пайп, и вывод направлять куда надо.


    Из минусов можно отметить слабенький автокомплит, а также то, что приходится заучивать неинтуитивные команды из серии \d \dt+ \sf и т.д. (впрочем, все описания команд доступны через команду \?)


    Ну, и работа в консоли и в виме — это не всех устраивает почему-то :)


    На самом деле, иногда хочется иметь где-нибудь слева полный список таблиц/вьюх и иметь возможность щелкнуть мышкой по нужной, чтобы посмотреть, что там вообще. Т.е. хоть какой-то GUI. Работа в psql хоть и эффективна, но напоминает работу в темной комнате с маленьким фонариком, освещающим лишь только один объект за раз.


    datagrip


    IDE для баз. Несмотря на то, что продукт относительно свежий, он уже используется повсеместно. В основном за счет того, что сразу встроен в мегапопулярные продукты от компании JetBrains: IntelliJ IDEA, PyCharm, PhpStorm и т.д.


    Собственно, эта его встроенность одновременно является и главной киллер-фичей продукта: вы редактируете, например, php-код, в котором есть строка с sql-запросом, и внезапно понимаете, что IDE вам подсказывает (прямо в вашем коде) синтаксис SQL, названия таблиц и их полей, подчеркивает красненьким, если что-то написано не так, форматирует SQL и многое-многое другое. Конечно, в этом же IDE можно делать и то, что умеют другие GUI для баз: просматривать списки таблиц и других сущностей, отдельно делать запросы, экспорт таблиц в разные форматы и многое другое.


    Из особенностей я бы отметил следующие вещи:


    • можно выделить несколько insert'ов и нажать "Edit as table" (см. картинку). После чего отредактировать это в удобном табличном виде вместо sql-синтаксиса, причем там же можно добавлять строки, колонки, экспортировать в csv и т.д.
    • Можно сравнивать результаты двух запросов. Это полезно, когда пытаешься упростить сложный запрос, и при этом ничего не сломать.
    • встроенность в код проработана не до конца. К примеру, при переименовывании в каком-либо интерфейсе колонки таблицы, IDE не находит нужные строки с SQL в коде (при этом автокомплит в этих строках работал), и наоборот, находит какую-то чушь.
    • Визуальной разработки не очень много. Т.е. вы можете сделать таблицу, но view уже не можете. Если таблица содержит какие-то id с foreign key (допустим, ссылка на некий словарь), хотелось бы при в вводе данных в таблицу выбирать значения из словаря, а не вбивать айдишки.
    • Если посмотреть таблицу в какой-нибудь из схем, то Datagrip посылает запрос set search_path = имясхемы, что приводит к плохим последствиям, если используется pgbouncer (а он используется почти всегда в случае с php или когда много серверов), так что для dev-разработки лучше использовать разные подключения: для работы кода — через pgbouncer, для ide — напрямую к базе.

    Datagrip активно развивается, в частности, исправлены некоторые раздражающие баги с подсветкой синтаксиса.


    В целом хороший современный инструмент, рекомендую.


    pgAdmin



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


    Как его использовать для администрирования — не очень понятно. pgAdmin'ом нельзя "заинитить" новый сервер, нельзя подправить pg_hba.conf или postgresql.conf. Видимо, имеются в виду скудные графики запросов в секунду, вывод подробностей конфигурации сервера и статистика в таблицах. Не уверен, в общем. Как вы испольуете pgAdmin для администрирования?


    Как его использовать с точки зрения разработки — еще менее понятно. Субъективно, интерфейс в целом не удобен для разработки. Несмотря на то, что четвертую версию переписали на python + JS с jQuery, по сути, осталось всё то же самое.


    Чтобы немного пояснить ситуацию, в голове разработчика такая картина: есть база на каком-то серваке, в ней — схемы, в схемах — таблицы и вьюхи. Т.е. таблица — максимум, 3-й уровень. А если база одна, то вообще второй уровень. Ткнул по таблице — увидел несколько первых строк.


    В голове разработчика pgAdmin как-то так: "Смерть Кощеева на конце иглы, та игла в яйце, то яйцо в утке, та утка в зайце, тот заяц в сундуке, а сундук стоит на высоком дубу, и то дерево Кощей как свой глаз бережёт", а именно (см. картинку):


    Есть группа серверов, в ней есть сервер, на сервере существуют базы, роли и т.д., из баз можно выбрать конкретную базу, в ней видно схемы, языки, еще бог знает что. В схемах можно выбрать нужную схему, в схеме 100500 всего, и где-то в конце списка "таблицы". В таблицах можно выбрать нужную таблицу, по ней надо кликнуть правой кнопкой мыши, там в большом списке выбираешь "view data", в этой "view data" есть "view first 100 rows" и уже там наконец-то смерть кощеева несколько строк для ознакомления.


    Киллер-фичей pgAdmin является возможность дебажить хранимые процедуры pl/pgsql. Других бесплатных программ с этой возможностью я не встречал.


    EMS Studio


    EMS Studio, похоже, работает только под Windows. Это его главный недостаток, потому что, как известно PostgreSQL очень редко используют под виндой.


    Я этот софт посмотрел только один раз под Wine, поэтому могу ошибаться, но вообще мне жутко не понравилось. Бешенное нагромождение непонятных иконок, невнятный интерфейс. Кстати, у меня под Wine заглючили всплывающие подсказки, и я играл в "угадай функциональность по картинке". Очень тяжело.


    До кучи там зачем-то сделан визуальный конструктор запросов. Где вместо того, чтобы текстом написать where id = 5, надо нажать мышкой несколько кнопок и понавыбирать из выпадающего списка. Тем, кто знает SQL — это не нужно, тем кто не знает — это не поможет.


    Фичи, которые называют как удобные: auto-complete с алиасами, экспорт результата выполнения запроса в SQL формате (insert), удобный GUI для экпорта базы, возможность выполнять только выделенную часть SQL.


    Умеет дебаг pl/pgsql. В общем, много чего умеет, но какой-то выдающейся особенности, что отличало бы от других, я не могу назвать.


    NAVICAT


    Navicat — это, наверное, самая богатая фичами программа. Она умеет всё, что умеют другие GUI для БД: дизайнер объектов, просмотрщик таблиц, автокомплит, инструменты проектирования базы, отладка pl/pgsql, импорт/экспорт и так далее.


    Поистине всеобъемлющий софт, который работает практически на любой ОС. Навскидку, намного удобнее EMS Studio.


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


    Ценник, правда, что называется, "конский" — в два раза дороже, чем EMS. Но тут, похоже, это полностью оправдано.


    PGCLI


    Те, кто пробует работать с psql, сразу начинают мечтать о более богатом функционале, например, автодополнении. Для реализации этих хотелок существует pgcli.


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


    Короче, pgcli — это, по сути, psql на стероидах.


    phppgadmin


    Многие из тех, кто перешел с MySQL, инстинктивно ищут аналоги phpmyadmin, и натыкаются на phppgadmin. К сожалению, phppgadmin не развивается уже несколько лет, так что о мертвых или хорошо, или ничего. В общем, промолчим, пожалуй.


    Итог


    Не по всем из этих инструментов у меня есть опыт использования, поэтому прошу высказаться в комментариях. Что используете вы?


    Также надо отметить, что на конференцию pgday приедут разработчики популярных инструментов не только для постгреса, но и других бд, можно будет их помучать вопросами и высказать какие-то пожелания по фичам. В любом случае, приглашаем всех посетить это полезнейшее мероприятие, которое пройдет в Санкт-Петербурге 5-7 июля!

    PG Day'17 Russia
    39.10
    Компания
    Share post

    Comments 71

      +4
      При работе с БД использую pgAdmin4 — работать можно, но совсем не торт. Тем более после того, как работал с Oracle в TOAD. Даже SQL Developer будет получше pgAdmin4 (3 тоже :)).
        +4
        Извините, но после пары лет работы с pgAdmin3 — переход на новую версию так для меня и не состоялся. Уж больно она «подтормаживает» местами. Хотя это сугубо только мое мнение.
          0
          Она очень сильно подтормаживает по сравнению с третьей версией. Стильно, модно, молодежно, но уж очень раздражают эти тормоза. И это на довольно неслабой машине (десктопный Core i5, 16 Gb оперативы).

          Поэтому да, остаёмся пока на pgAdmin3.
            0
            Согласен, но как то привык уже. Но вроде pgAdmin3 не работает с 9.6, что печально, если не ошибаюсь конечно.
              +1

              Работает.

                +1
                Ну как сказать не работает. При подключении, предупреждающий месседж + иногда вываливают сообщения про ошибки, если по свойствам таблиц лазить/править, которые не мешают вносить изменения.
                Так что совсем не критично. После ознакомления с pgAdmin4, остался на тройке и работаю с 9.6 нормально
                  +4
                  У меня форк есть pgadmin с поддержкой политик, методов доступа и некоторыми исправлениями ошибок. см. https://github.com/dimv36/pgadmin3

                  Пользуйтесь на здоровье
                    0
                    и он совместим с 9.6
                      0
                      Скомпиленные бинари есть где-то?
                        0
                        Пока нет. А под что Вам нужно?
                          0
                          Присоединюсь)) По 64 битную винду качнул бы с удовольствием
                  0
                  Попробовал DBeaver. С первого взгляда достойная вещь, может быть в дальнейшем и вылезут какие-либо подводные камни, но в целом очень удобно. Особенно построение ER-моделей выбранной таблицы — просто бомба.
                    0
                    На днях зарелизилась новая тула dbForge Studio for PostgreSQL от Devart для работы с постгре, наконец-то скоро дождемся полноценный инструмент для работы с этой БД.
                    0

                    psql и pgAdmin III для администрирования и PhpStorm для разработки и поддержки.

                      0
                      PhpStorm содержит, собственно, Datagrip
                        0
                        А третий пгАдмин кто-то пилит под новые версии сервера?
                          0
                          https://habrahabr.ru/company/pgdayrussia/blog/325642/#comment_10159324
                        +1

                        Postico весьма удобный клиент под мак. Бесплатная версия довольно обрезанная.

                          0

                          Удобный для админов да разработчиков внешних приложений к БД, а вот для разработчиков именно pgplsql — не очень. Попробуйте-ка набросать на скорую руку в Postico не просто запрос, а пару-тройку триггеров/функций?

                            0

                            Не смотря на то что я разработчик мне этот функционал обычно вообще не нужен, мне бы просто в пару кликов смотреть\редактировать содержимое и структуру таблиц. Не могу ничего сказать по поводу удобства встроенного редактора, итд так как редко им пользуюсь.

                              0
                              разработчиков внешних приложений к БД

                              Не обратил внимание, да, это про меня

                                0
                                ну вот я как раз о разработке кода непосредственно для БД.
                          +1

                          Для себя недавно открыл DBeaver. Удобно, что можно использовать для разных СУБД: PostgreSQL, Oracle, Cassandra etc.

                            0
                            А что там, какая, так сказать, киллер фича?
                              +1

                              Ну как же? Один клиент для разных СУБД: как SQL, так и NoSQL

                                0
                                Окей, спасибо
                                0
                                В DBeaver часто использую:
                                — удобные ERD диаграммы с возможностью перехода между таблицами
                                — удобную выгрузку данных в файлы и экспорт в другую БД
                                — автозаполнение по внешнему ключу при ручном редактировании данных
                                  0
                                  Простой, понятный, работоспособный и бесплатный этот бобёр.
                                  0
                                  Не слышал о такой, спасибо. А по юзабилити как? Лучше, чем pgAdmin(3|4) на ваш взгляд?
                                    0
                                    Да, лучше.
                                      0
                                      Интересно. Установил попробовать. Неудобно только, что pgAdmin показывает все базы на сервере, а эта только ту, что указал, как то можно все увидеть?
                                        0
                                        Всё — разобрался: Show non default databases.
                                      0
                                      А pl/pgsql дебажить он не может случайно?
                                      0

                                      Есть ли красивый клиент для os x?

                                        0
                                        postico и seuel for postgresql, ценник бы им еще адекватнее.
                                          0

                                          psequel

                                          0
                                          гайз, а как же Electron.js? DBglass не самая мощьная утилита, зато очень удобная https://github.com/web-pal/DBGlass
                                            0
                                            А почему в обзор не попала классная утилита Squirrel ? Пользуюсь уже не один год, доволен…
                                              0
                                              Я даже не слышал о такой ни разу. А в чем именно классность?
                                                0
                                                Работает на всех распространенных платформах, можно настроить на любую БД для которой есть jdbc driver, очень продвинутый Sql editor, можно (с помощью плагина) строит диаграмму для таблиц БД. Кстати плагинов разных много… Хотя вот посмотрел DBeaver и очень понравился тоже.
                                                  0

                                                  Использовал Squirrel пару лет назад, сначала все были ок, потом полезли баги. Перешёл на Dbeaver. Удобнее чем Squirrel, функционала больше, как мне показалось. Например есть автоматическое скачивание дров.
                                                  Кстати, создатель DBeaver есть на Хабре :)

                                              0
                                              Есть еще ems sql manager lite. Мы поскольку живем сьораклом в тоаде большую часть времени, это единственное что я могу переваривать. Что радует — есть кнопки коммит и роллбек. Есть проверка синтаксиса при создании процедур (и кнопка коммит !!!!!)
                                                –1

                                                Использовал все кроме NAVICAT.


                                                pgAdmin3 радовал меня веселыми зависаниями и глюками, особенно через удаленное соединение по ssh (не светить же порты наружу). В 4-й версии эту фичу убрали, да и еще и запускать его нужно в браузере, в итоге я попрощался с pgAdmin вообще. Если бы они оставили его как десктопный вариант, переделали бы интерфейс и починили бы глюки. В общем если бы сделали аналог mysqlWorckbench для postgres то цены бы им не было!


                                                EMS Studio порадовал меня глюками похлеще pgAdmin3 и абсолютно не адекватным интерфейсом.


                                                phppgadmin показался очень неудобным продуктом — хотелось задушить себя при его использовании.


                                                PGCLI интересен но зачем он, если есть psql.


                                                В итоге локально webmin (да в старичке webmin есть утилиты для администрирования postgres) + datagrip из IDEA.
                                                На проде только psql, на тесте psql+datagrip по ssh


                                                Плюс иногда еще использую Open System Architect — codebydesign.com
                                                или
                                                PowerArchitect — www.sqlpower.ca/page/architect

                                                  0
                                                  dbeaver отличная среда, и не только для postgre, плюс бесплатная
                                                    +1
                                                    Использую иногда Valentina Studio вместо pgAdmin3, некоторые опции лучше реализованы.
                                                      0
                                                      в копилку pgweb
                                                      довольно давно пользуюсь. я так понимаю особо функционалом не обладает, но мне и не нужно :)
                                                        0

                                                        Из всех бесплатных утилит только DBeaver как-то может конкурировать с pgAdmin3. Но например роли создать из скрипта у меня не получилось, естественно этот же скрипт спокойно делает своё дело в консоли и pgAdmin. И очень перегруженный интерфейс, а уж когда в дереве под сотню серверов, прозрачность что и где ты делаешь теряется. У остальных, как правило всё грустно, до кода хранимых процедур не всегда доберёшься.


                                                        pgAdmin3, идеальный инструмент, единственное (!) чего мне не хватает, это нескольких результатов запроса. Чтобы можно было сделать так:


                                                        select * from TableA;
                                                        select * from TableB;

                                                        а внизу увидеть оба набора данных. Очень надеюсь, что 10 версия postgres будет совместима pgAdmin3, потому что 4-я версия не странная, это кошмар.

                                                          0
                                                          Имхо, для разработчика больше datagrip подходит: автокомплит (помогает даже когда join описываешь), быстрое задание фильтров, сортировка, переход по смежным данным в таблице, запуск запросов по частям (CTE).
                                                          А pgAdminIII — больше для DBA: статистика использования таблиц, их параметры, dependencies/dependents, DDL под рукой…
                                                          Я сам так и не перешел на pgAdmin4, остался на третьей версии. Пользуюсь и datagrip, и pgadmin3.
                                                            0
                                                            Тем, кто свой набор еще не нашел, можно попробовать пройтись по этому списку инструментов.
                                                            0
                                                            Расскажите как вы пишите функции и дебажите их?
                                                              0
                                                              Ems умеет это.
                                                                0

                                                                В datagrip. Но удобством не особо блещет на фоне, например, dbforge для Oracle.

                                                                +1
                                                                Есть ещё Adminer. Кроме MySQL и с Postgres неплохо общается. Всего один php file для установки, если не брать в расчет опциональные плагины. Мне больше, чем pgAdmin понравился.
                                                                  0
                                                                  Для версионирования или сравнения схем использую Pyrseas. Очень хорошая штука, кстати.
                                                                    0
                                                                    A HeidiSQL юзает кто? Он вроде Postgre давно поддерживает, но я последний раз пробовал, когда это еще было экпериментальной фичей. Для MySQL это моя любимая тулза, ибо идеальный UX.
                                                                      0
                                                                      юзал, для mysql самая удобная штука. на сколько я знаю она очень багано поддерживает postgre.
                                                                      0

                                                                      Насчёт бесплатных — их уже практически нет. Точнее есть, но как конкуренты они не игроки.


                                                                      Платные, которые ещё не засветились:


                                                                      DbVisualizer — за исключением отладки триггеров отличная замена pgAdmin. Более чем отличная. Может закачать таблицу на 100.000 строк например и не рухнуть. Есть визуальный конструктор запросов. Есть бесплатная урезанная версия.


                                                                      MicroOLAP Database Designer for PostgreSQL
                                                                      Как следует из названия — моделирование баз данных. Мои тесты закончились отказом от него из за кучи ошибок, но было это год или два назад, и исправляли ошибки кстати в режиме реального времени и создатели русскоговорящие.

                                                                        0
                                                                        SEQUEL for PostgreSQL — лучшее что видел, хоть и кусается цена ;(
                                                                        Ну и только на MacOS…
                                                                          +1
                                                                          А есть у кого то опыт использования pgModeler (pgmodeler.com.br). Какие у кого впечатления?
                                                                          У проекта лицензия GPL v3 и все исходники доступны. Но собранные (бинарные) версии программы автор продает по подписке от 10$ на пол года. Есть смысл заморачиваться и собирать его из исходников?
                                                                            0

                                                                            Я пробовал разок, рисовал для нового проектика схему с довольно плотными связями по составным ключам. Субъективно понравилось. Умеет довольно много постгресо-специфичных штук. Визуализация несколько громоздкая, элементы частенько перекрываются, но разложить до приличного вида возможно. Связи показывает прямо к столбцам, а не просто к табличкам.


                                                                            Существуют уже собранные DEB-пакеты в репозиториях PGDG (официальных репах PostgreSQL). Я просто со скучающим лицом вбил в поиск pgmodeler по репозиториям, и когда результаты нашлись, насколько обалдел.


                                                                            Я б сказал, что попробовать стоит. Если ну прям очень лень возиться со сборкой, можно попробовать на убунтовой виртуалке. И уже тогда решить, возиться со сборкой, или нет.

                                                                            0

                                                                            реактивные мозги с датагрипом + psql. в IDEшках от jetbrains мне кажется вообще все что для счастья нужно есть. а psql только потому что лень куда-то лазать если уже к серванту законектился)

                                                                              0
                                                                              Мне очень не хватает средства разработки для PostgreSQL, которое бы позволяло удобно и наглядно визуализировать entity-relationship diagram в режиме отображения связей connect-to-column. Понимаю, что гуру сочтут это ламерством и, дескать, надо всё держать в голове и работать в консоли, но на объёмных базах данных со множеством связей мне удобнее держать всё перед глазами.
                                                                              Например, вот так:


                                                                              Но сколько я ни искал подобный инструмент, ничего похожего мне не попадалось. Максимум, визуализация доступна в режиме «таблица-к-таблице», что далеко не всегда удобно. Из комментария выше увидел DbVis Pro, возможно, это решение. Надо будет изучить.
                                                                              0
                                                                              >> pgAdmin: Субъективно, интерфейс в целом не удобен для разработки.
                                                                              Напротив, всё удобно, чётко структурировано и едино, вы видите БД так, как видит её сам сервер. Кастомизируемо. Нет у вас в проекте FTS, можно спрятать отображение этих пунктов. Есть Foreign Servers, можно включить их отображение.
                                                                              А со временем нарабатываются практики как быстро накликать мышкой до нужных данных.
                                                                              Очень популярный инструмент у QA, который они осваивают самостоятельно.

                                                                              Ваше описание pgAdmin и psql напомнило мне себя. Я как-то сидел на phpexperteditor, эдакий редактор на стеройдах для PHP, и с недоумением смотрел на людей использующих eclipse + PDT (PHP Dev Tool eclipse plugin) для работы. Пока через 2 года я всёже решил несколько дней посидеть на этой связке. В первый день я сопротивлялся, а к концу недели я понял что был не прав все эти годы.
                                                                                0
                                                                                вот еще можно глянуть dbschema.com
                                                                                  0
                                                                                  «как известно PostgreSQL очень редко используют под виндой» — разработка баз данных и место её развёртывания — разные вещи. Php-шников много на винде сидит, это же не значит, что и сайты на винде работают. EMS, Toad, Idera существуют только в версии для Windows, например.

                                                                                  «Где вместо того, чтобы текстом написать where id = 5, надо нажать мышкой несколько кнопок и понавыбирать из выпадающего списка» — а зачем вообще тогда все вышеназванные программы использовать, делать всё в psql.

                                                                                  А по теме: для моделирования — Toad modeler, для перегонки данных — SQL Power Architect, для управления — Pgadmin, Valentina Studio, визуальный построитель запросов — FlySpeed. Все программы или бесплатны, или имеют урезанные бесплатные версии.
                                                                                    –1
                                                                                    Вот это да!!! Охренеть! Прям открыли глаза на такие полезные инструменты! А то мужики-то все напрямую в бинарных файлах базы всё правят и не знают про /* Подставить любой из вышеперечисленных инструментов */
                                                                                    Простите, не сдержался :) Понедельник — день тяжелый!)
                                                                                      0
                                                                                      а почему полный перечень ПО не вписали,
                                                                                      у меня кроме datagrip еще периодично notepad++ открывается
                                                                                      потом такие инструменты: https://explain.depesz.com/ парсер аналайза
                                                                                      http://json.parser.online.fr/ онлайн парсер json

                                                                                        +1
                                                                                        Свежий pgAdmin вынес мне мозг окончательно. Тормоза совсем расстроили.
                                                                                        В итоге psql наше всё и EMS, если к нему привыкнуть. Без проблем коннектится к базе на *unix и если настроить интерфейс под себя, то работать можно.

                                                                                        Only users with full accounts can post comments. Log in, please.