Какие клиентские приложения входят в пакет postgresql
dbForge Studio for PostgreSQL - это клиент с удобным графическим интерфейсом, универсальный инструмент для работы с базами данных PostgreSQL. Это лучшая IDE для своих задач - полнофункциональная интегрированная среда разработки, которая позволяет создавать и выполнять запросы, а также редактировать и корректировать код в соответствии с Вашими требованиями.
Здесь имеется множество дополнительных инструментов для работы с таблицами и запросами в PostgreSQL. Вы получаете функционал для создания отчетов, редактирования, импорта и экспорта данных, построения сводных таблиц и связей "master-detail".
Оптимизация SQL-запросов в работе с базами данных РostgreSQL
Визуальный профилировщик запросов PostgreSQL помогает находить проблемные места, а также анализировать, оптимизировать и ускорять медленные запросы. Результаты профилирования аккуратно отображаются на нескольких вкладках со следующими данными:
- План выполнения запросов
- Диаграмма выполнения запросов с затратами на каждую операцию в процентах от общего количества затрат
- Список основных операций, выполняемых на сервере
- План выполнения в формате XML
Обозреватель баз данных
Перемещайтесь по дереву объектов и находите любой интересующий Вас объект PostgreSQL. Щелкните по нему правой кнопкой мыши в окне обозревателя, чтобы выполнить следующие задачи:
- Получение данных из БД в SQL-документе
- Усечение таблиц
- Просмотр информации об объектах
- Генерация Script As
Быстрый импорт и экспорт данных
Воспользуйтесь инструментами для заполнения БД данными из внешних источников и миграции данных между системами. dbForge Studio for PostgreSQL поддерживает 10+ наиболее используемых форматов данных, а также ряд дополнительных параметров и шаблонов для повторяющихся сценариев.
- Поддержка 10+ форматов, включая Google Sheets, XML, Excel, CSV и др.
- Гибкая настройка импорта и экспорта
- Удобные мастера для экспорта и импорта данных
- Миграция данных в PostgreSQL
SQL-разработка
Экономьте время и улучшайте качество кода при создании и редактировании запросов, используя следующие инструменты разработчика для работы с PostgreSQL:
- Автодополнение SQL-кода
- Форматирование SQL-кода
- Проверка синтаксиса
Подробные отчеты для анализа данных
dbForge Studio for PostgreSQL предоставляет мощный функцонал для получения и фильтрации данных, а также для генерации детальных и удобных для чтения визуальных отчетов, позволяющих Вам легко анализировать их и делиться полученной информацией.
- Генератор отчетов по данным
- Сводные таблицы
- Конструктор диаграмм
Миграция баз данных в PostgreSQL
С помощью dbForge Studio for PostgreSQL, можно переносить данные из одной PostgreSQL базы данных в другую, используя ODBC драйвер в Export и Import визардах.
Конференция PG Day Russia растет и масштабируется: этим летом мы готовим для вас доклады и тренинги по всем наиболее популярным базам данных, а также по администрированию и хранению данных. в рамках подготовки мы запустили корпоративный блог, где планируем делиться ценной информацией о происходящем в мире баз данных. Первый пост посвящен инструментам разработки для PostgreSQL, его автор varanio будет рад ответить на ваши вопросы и комментарии!
Я поспрашивал различных людей, имеющих отношение к PostgreSQL, что они используют в реальной жизни для разработки приложений, использующих PG.
Это, конечно, не строго математическая выборка, но тем не менее получился некоторый список инструментов на слуху, которые достойны того, чтобы их "пощупать", что я и собираюсь сделать в этой статье.
Если вашего инструмента нет в списке, или у вас просто есть что сказать, добро пожаловать в комментарии.
Итак, вот неформальный топ и субъективное описание.
На первом месте 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 — продукт странноватый, при этом в описании сказано, что это самый лучший опенсорс продукт для разработки и администрирования.
Как его использовать с точки зрения разработки — еще менее понятно. Субъективно, интерфейс в целом не удобен для разработки. Несмотря на то, что четвертую версию переписали на 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 >, надо нажать мышкой несколько кнопок и понавыбирать из выпадающего списка. Тем, кто знает 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 июля!
Система управления базами данных Postgres (она же PostgreSQL) является свободной объектно-реляционной СУБД. Наряду с MySQL, это хорошая альтернатива коммерческим СУБД, таким как Oracle Database или Microsoft SQL Server. Сегодня система управления базами данных PostgreSQL существует в реализациях для разных платформ, включая Linux, Win32, Mac OS X, Solaris/OpenSolaris, FreeBSD, QNX 4.25, QNX 6.
Считается, что большой вклад в развитие Postgres внесли российские разработчики. В настоящий момент крупнейшим вендором, который оказывает услуги по доработке и внедрении Postgres, является американская компания EnterpriseDB. Что касается Российской Федерации, то здесь по аналогичной модели работает компания «Постгрес профессиональный (Postgres Professional)», которая предоставляет услуги по поддержке, разработке, консалтингу, обучению.
Архитектура PostgreSQL
Одной из наиболее сильных сторон СУБД PostgreSQL является архитектура. Как и в случаях со многими коммерческими СУБД, PostgreSQL можно применять в среде клиент-сервер — это предоставляет множество преимуществ и пользователям, и разработчикам.
В основе PostgreSQL — серверный процесс базы данных, выполняемый на одном сервере. Также стоит сказать, что в Postgres пока не реализована технология высокой готовности, как это сделано в ряде других коммерческих систем управления базами данных уровня предприятия (они способны распределять нагрузку между некоторым количеством серверов, достигая дополнительной масштабируемости и повышенной устойчивости к внешним воздействиям).
Доступ из приложений к данным базы PostgreSQL производится с помощью специального процесса базы данных. То есть клиентские программы не могут получать самостоятельный доступ к данным даже в том случае, если они функционируют на том же ПК, на котором осуществляется серверный процесс.
Таким образом мы получаем разделение клиентов и сервера, что даёт возможность создавать распределённые системы. К примеру, мы можем отделить клиентов от сервера с помощью сети, разрабатывая клиентские приложения в среде, которая удобна для пользователя. Допустим, появляется возможность реализовать базу данных под UNIX, создав клиентские приложения, которые станут работать в ОС Microsoft Windows.
Давайте посмотрим на типичную модель распределенного приложения СУБД PostgreSQL:
Мы видим, что несколько клиентов подсоединены к серверу по сети. СУБД PostgreSQL ориентирована на протокол TCP/IP (локальная сеть либо Интернет), при этом каждый клиент соединён с главным серверным процессом БД (на схеме этот процесс называют Postmaster). Именно Postmaster создаёт новый серверный процесс специально в целях обслуживания запросов на доступ к данным определённого клиента.
Так как манипулирование с данными сосредотачивается на сервере, СУБД PostgreSQL не приходится контролировать многочисленных клиентов, которые получают доступ в совместно используемый серверный каталог. В результате база данных PostgreSQL способна поддерживать целостность данных даже в случае одновременного доступа большого числа пользователей.
Соединение с базой данных клиентских приложений осуществляется по специальному протоколу СУБД PostgreSQL. В принципе, никто не мешает инсталлировать на стороне клиента ПО, предоставляющее стандартный интерфейс, обеспечивающий работу с нужным приложением, допустим, по стандарту ODBC/JDBC. И это хорошо, ведь доступность ODBC-драйвера даёт возможность использовать СУБД PostgreSQL в качестве базы данных для множества уже существующих приложений, включая продукты Microsoft Office — Excel и Access.
Идём дальше. Клиент-серверная архитектура, реализованная в СУБД PostgreSQL, делает возможным разделение труда. То есть машина-сервер прекрасно подходит для хранения и управления доступом к огромным объёмам данных, то есть её можно использовать в качестве надёжного репозитория. При этом для клиентов возможна разработка сложных графических приложений. Также можно создать внешний онлайн-интерфейс, предоставляющий доступ к данным и возвращающий результат в виде web-страниц в стандартный web-браузер, не требуя при этом никакого дополнительного клиентского ПО.
Преимущества и особенности СУБД PostgreSQL
СУБД PostgreSQL использует для своих баз данных реляционную модель, поддерживая стандартный язык запросов SQL. При этом PostgreSQL предоставляет широкий спектр возможностей. Можно сказать, что Postgres обладает почти всеми возможностями, существующими в других базах данных (как коммерческих, так и Open Source), а также рядом дополнительных.
Сегодня СУБД PostgreSQL работает почти на всех UNIX-платформах, в том числе и на UNIX-подобных системах (FreeBSD и Linux). Вы сможете использовать эту базу данных и на Windows NT Server, и на Windows 2000 Server, и для разработки рабочих станций ME.
Рассмотрим краткий перечень преимуществ и функциональных возможностей СУБД PostgreSQL: 1. Надежность. Надёжность СУБД PostgreSQL проверена и доказана. Она обеспечивается соответствием принципам ACID (атомарность, изолированность, непротиворечивость, сохранность данных), многоверсионностью, наличием Write Ahead Logging (WAL) — общепринятого механизма протоколирования всех существующих транзакций. Сюда же стоит отнести и возможность восстановления базы данных Point in Time Recovery (PITR), репликацию, поддержку целостности данных на уровне схемы. 2. Производительность. В СУБД PostgreSQL она основана на применении индексов, наличии гибкой системы блокировок и интеллектуального планировщика запросов, использовании системы управления буферами памяти и кэширования. Не стоит забывать и про отличную масштабируемость при конкурентной работе. 3. Расширяемость. Для СУБД PostgreSQL это означает, что пользователь может настроить систему посредством определения новых функций, типов, языков, агрегатов, индексов и операторов. А объектная ориентированность СУБД PostgreSQL даёт возможность переносить логику приложения на уровень базы данных, а это, в свою очередь, заметно упрощает разработку клиентов, ведь вся бизнес-логика находится в БД. При этом функции в Postgres однозначно определяются названием, типами и числом аргументов. 4. Поддержка SQL. Её уже упоминали, однако кроме главных возможностей, которые присущи любой SQL-базе, PostgreSQL поддерживает схемы, подзапросы, внешние связки, правила, курсоры, наследование таблиц, триггеры и много чего ещё. 5. Поддержка многочисленных типов данных. СУБД PostgreSQL поддерживает численные (целые, денежные, с фиксированной/плавающей точкой), булевые, символьные, составные, сетевые типы данных, а также перечисление, типы «дата/время», геометрические примитивы, массивы, XML- и JSON-данные. Плюс можно создавать свои типы данных.
Конечно, это далеко не всё, но для общего понимания возможностей СУБД PostgreSQL вполне достаточно. Естественно, база данных заслуживает внимания, особенно если учесть, что она имеет открытый исходный код и распространяется свободно. Освоить эту СУБД вы cможете на курсе в OTUS.
• PostgreSQL - это мощная система объектнореляционных баз данных с открытым
исходным кодом, которая использует и
расширяет язык SQL в сочетании со
многими функциями, которые безопасно
хранят и масштабируют самые сложные
рабочие нагрузки данных.
3. Зачем использовать PostgreSQL
• Помимо того , что PostgreSQL
является бесплатным и открытым
исходным кодом, он обладает широкими
возможностями расширения. Например, вы
можете определять свои собственные типы
данных, создавать собственные функции,
даже писать код на разных языках
программирования без перекомпиляции
базы данных.
4. Зачем использовать PostgreSQL
• Начиная с версии 12, выпущенной в
октябре 2019 года, PostgreSQL соответствует
как минимум 160 из 179 обязательных
функций для соответствия SQL: 2016
Core. На момент написания этой
презентации ни одна реляционная база
данных не соответствовала этому
стандарту.
5. Функции, доступные в PostgreSQL
Типы данных
• Примитивы: целое, числовое, строковое,
логическое
• Структурированные: дата / время, массив,
диапазон, UUID
• Документ: JSON / JSONB, XML, Key-value
(Hstore)
• Геометрия: точка, линия, круг, многоугольник
• Настройки: составные, пользовательские типы
6. Функции, доступные в PostgreSQL
Целостность данных
• УНИКАЛЬНЫЙ, НЕ НУЛЬ
• Основные ключи
• Иностранные ключи
• Ограничения исключения
• Явные Замки, Консультативные Замки
7. Функции, доступные в PostgreSQL
Параллельность, Производительность
• Индексирование: B-дерево, Многоколонка, Выражения, Частичное
• Расширенная индексация: GiST, SP-Gist, KNN Gist, GIN, BRIN,
индексы покрытия, фильтры Блума
• Сложный планировщик запросов / оптимизатор, сканирование
только по индексу, многоколоночная статистика
• Транзакции, вложенные транзакции (через точки сохранения)
• Мульти-версия управления параллелизмом (MVCC)
• Распараллеливание запросов на чтение и построение индексов Bдерева
• Разделение таблицы
• Все уровни изоляции транзакций, определенные в стандарте SQL,
включая Serializable
• JIT-компиляция выражений Just-in-time
8. Функции, доступные в PostgreSQL
Надежность, аварийное восстановление
• Запись с опережением записи (WAL)
• Репликация: асинхронная, синхронная,
логическая
• Восстановление на момент времени (PITR),
активные резервы
• Табличные
9. Функции, доступные в PostgreSQL
Безопасность
• Аутентификация: GSSAPI, SSPI, LDAP, SCRAMSHA-256, сертификат и многое другое
• Надежная система контроля доступа
• Безопасность на уровне столбцов и строк
• Многофакторная аутентификация с
сертификатами и дополнительным
методом
10. Функции, доступные в PostgreSQL
Растяжимость
• Хранимые функции и процедуры
• Процедурные языки: PL / PGSQL, Perl, Python (и многие
другие)
• Выражения пути SQL / JSON
• Оболочки сторонних данных: подключайтесь к другим
базам данных или потокам со стандартным
интерфейсом SQL
• Настраиваемый интерфейс хранения для таблиц
• Множество расширений, обеспечивающих
дополнительную функциональность, включая PostGIS
11. Функции, доступные в PostgreSQL
Интернационализация, поиск текста
• Поддержка международных наборов
символов, например, через сопоставления
ICU
• Без учета регистра и без учета ударения
• Полнотекстовый поиск
12. Основы архитектуры
PostgreSQL реализован в архитектуре клиент-сервер. Рабочий сеанс PostgreSQL включает
следующие взаимодействующие процессы (программы):
Главный серверный процесс, управляющий файлами баз данных, принимающий
подключения клиентских приложений и выполняющий различные запросы клиентов к базам
данных. Эта программа сервера БД называется postgres.
Клиентское приложение пользователя, желающее выполнять операции в базе данных.
Клиентские приложения могут быть очень разнообразными: это может быть текстовая
утилита, графическое приложение, веб-сервер, использующий базу данных для отображения
веб-страниц, или специализированный инструмент для обслуживания БД. Некоторые
клиентские приложения поставляются в составе дистрибутива PostgreSQL, однако
большинство создают сторонние разработчики.
Как и в других типичных клиент-серверных приложениях, клиент и сервер могут
располагаться на разных компьютерах. В этом случае они взаимодействуют по сети TCP/IP.
Важно не забывать это и понимать, что файлы, доступные на клиентском компьютере, могут
быть недоступны (или доступны только под другим именем) на компьютере-сервере.
Сервер PostgreSQL может обслуживать одновременно несколько подключений клиентов. Для
этого он запускает («порождает») отдельный процесс для каждого подключения. Можно
сказать, что клиент и серверный процесс общаются, не затрагивая главный процесс postgres.
Таким образом, главный серверный процесс всегда работает и ожидает подключения
клиентов, принимая которые, он организует взаимодействие клиента и отдельного
серверного процесса. (Конечно всё это происходит незаметно для пользователя, а эта схема
рассматривается здесь только для понимания.)
13. Настройки
Работа с PostgreSQL может быть произведена через
командную строку (терминал) с использованием
утилиты psql – инструмент командной строки
PostgreSQL. Попробуйте ввести следующую команду:
Этой командой вы запустите утилиту psql. Хотя есть
много сторонних инструментов для
администрирования PostgreSQL, нет необходимости
их устанавливать, т. к. psql удобен и отлично работает.
14. Настройки
Если вам нужна помощь, введите \help (или -h) в psqlтерминале. Появится список всех доступных
параметров справки. Вы можете ввести \help [имя
команды], если вам нужна помощь по конкретной
команде. Например, если ввести \help UPDATE в
консоли psql, вы увидите синтаксис команды update.
15. Настройки
Если у вас возникает много вопросов – не стоит отчаиваться. Поиск в
интернете предоставит массу примеров, ну и официальную
документацию psql никто не отменял. Первым делом необходимо
проверить наличие существующих пользователей и баз данных.
Выполните следующую команду, чтобы вывести список всех баз данных:
16. Настройки
Чтобы вывести список всех пользователей,
выполните команду \du. Атрибуты
пользователя postgres говорят нам, что он
суперпользователь.
17. Создание базы данных
Для создания базы данных используется команда create database. В
приведенном ниже примере создается база данных с именем proglib_db.
Если вы забыли точку с запятой в конце запроса, знак «=» в приглашении
postgres заменяется на «-», как показано на рисунке ниже. Это зачастую
указывает на то, что необходимо завершить (дописать) запрос.
На картинке нам сообщают об ошибке из-за того, что в нашем случае
база уже создана. Вы поймете, что к чему, когда начнете писать более
длинные запросы.
18. Версии PostgreSQL
Всего версий 14. Самая первая — 8.1, самая новая — 12. В этой таблице указано,
какие функции по процедурным языкам были добавлены в какую версию.
Читайте также: