Оригинальный адрес статьи: http:// amsand.narod.ru / articles / pgadmin.html

PostgreSQL: графический клиент pgAdmin

Опубликована в журнале "Системный администратор", сентябрь 2004

В предыдущей статье, посвященной СУБД PostgreSQL, вскользь упоминался графический клиент pgAdmin. В этой статье рассмотрим его основные функции и возможности.

Для тестирования с сайта www.pgadmin.org был скачан пакет pgAdmin III версии 1.0.2 для Windows 2000/XP (в виде msi-архива). Размер дистрибутива - менее 5,5 Мб. Установка пакета на операционную систему Windows XP Professional затруднений не вызвала. После традиционного вопроса о согласии с условиями лицензионного соглашения (пакет распространяется бесплатно) и нескольких секунд инсталляционных процедур программа была готова к работе.

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

Открывшееся далее главное окно (рисунок 1) своими очертаниями вызвало в памяти образ входящего в состав СУБД Oracle клиента PL/SQL Developer. Правда, некоторый аскетизм панели инструментов навевал мысль, что в функциональном плане различия будут более заметны, и никак не в пользу pgAdmin.

СУБД PostgreSQL версии 7.4.1 у меня была запущена на другой машине (под управлением FreeBSD), что и было указано при добавлении сервера (рисунок 2). Поясню отсутствие пароля: моя рабочая машина прописана в файле pg_hba.conf (файл настройки доступа PostgreSQL) как доверенный хост, что позволяет мне соединяться с сервером БД, как мне заблагорассудится. Своя рука - владыка. Естественно, на рабочем сервере такая халатность не приветствуется.

Теперь слева будет дерево баз данных, справа отображается информация по выделенному объекту и ниже - SQL-команда, с помощью которой выделенный объект мог быть создан (рисунок 3).

В порядке общего развития создадим новую таблицу. Для чего давим правую кнопку мыши над веткой <Таблицы>, выбираем <Новый объект> - <Новая таблица> и начинаем вводить ее свойства (рисунок 4). Далее, на вкладке <Колонки> собираем (другое определение к этому процессу подобрать трудно) структуру таблицы, последовательно добавляя поля (рисунок 5). Для каждого поля должно быть задано имя и тип данных. Дополнительно можно указать значение по умолчанию и/или отметить поле как , запретив тем самым оставлять его без определенного значения.

На следующей вкладке можно задать ограничения (первичный и вторичный ключи, UNIQUE и CHECK).

Вкладка <Безопасность> позволяет раздать другим пользователям права доступа к создаваемой таблице.

Последняя закладка - - позволяет посмотреть, каким SQL-запросом все это будет создано.

Огорчила невозможность исправить ошибку на стадии создания таблицы. Например, если Вы неправильно задали тип данных для поля, то исправить это можно, только удалив поле и создав новое. В дальнейшем, если вернуться к свойствам уже созданной таблицы, кнопка <Изменить> присутствует, а вот во время создания новой - нет: А для ограничений нет даже этого - только удалять и создавать заново.

Еще один недостаток - об ошибке узнаешь только при попытке сохранить сделанные изменения.

Как уже было вскользь замечено, существующие таблицы можно изменять. Да и было бы странно, если бы такая возможность отсутствовала. Интерфейс тот же самый (за исключением упомянутой выше кнопки <Изменить>). На вкладке будет формироваться код, который необходимо выполнить для осуществления желаемых изменений.

Код формируется, как и следовало ожидать, абсолютно формально, без <хитринки>. Например, если дать указание при создании таблицы задать владельца, то в код будет просто добавлена команда после того, как таблица будет создана командой . Хотя по- хорошему это можно сделать одной командой.

Для работы с наполнением таблиц служит инструмент <Просмотр данных> (рисунок 6). Выполненный в стиле <старого доброго> MS Access, он позволяет просматривать содержимое таблицы, добавлять новые строки, изменять и удалять существующие. Причем изменение данных возможно только в случае, если таблица создана с установленным флагом <Имеет OID>. Как ни странно это выглядит, но в обоих случаях инструмент называется именно <Просмотр данных> (в англоязычном варианте ), несмотря на возможность редактирования, хотя заголовок окна гласит , и тоже в обоих случаях. Таким образом, этот недочет, допущенный при проектировании интерфейса, способен ввести в заблуждение, и сразу отыскать возможность работы с данными таблиц довольно трудно.

Более широкие возможности по работе с запросами предоставляет <Инструмент запросов> (рисунок 7). Тут уже есть куда ввести любой SQL-запрос и посмотреть его результат. Закладка <Сообщения> внизу окна позволяет ознакомиться с такой информацией, как количество выбранных запросом записей и время выполнения запроса. Весьма полезная функция - <Объяснить запрос> (рисунок 8), которая выводит последовательность действий, которые будет выполнять PostgreSQL, отрабатывая данный запрос, с расчетом времени, затрачиваемого на каждую операцию - незаменимый инструмент для оптимизации запросов. В пункте меню <Запрос> - <Опции режима объяснения> можно включить и подробный разбор каждого запроса.

Функция обслуживания БД позволяет выполнить дефрагментацию и анализ структуры базы данных либо отдельных таблиц. Регулярная дефрагментация нужна для повышения скорости доступа к данным, а анализ поставляет служебную информацию оптимизатору СУБД, на основании которой последний способен отрабатывать запросы более эффективно.

Ну и, наконец, в окне <Опции> Вы можете произвести некоторые настройки интерфейса, такие как выбор языка и шрифта, по своему вкусу, а также настроить log-файл.

Включение опции <Показать> - <Системные объекты> приведет к отображению баз template0 и template1, а также в каждой пользовательской БД, помимо схемы public, хранящей пользовательские данные, будут видны и служебные схемы: information schema, pg_catalog, pg_temp_1, pg_toast (рисунок 9). Естественно, что для работы с системными объектами нужно обладать соответствующими правами.

Трудно сказать, недостаток это или особенность реализации, но pgAdmin жестко привязывает имя пользователя к конкретному серверу. То есть при необходимости подсоединиться к БД с другими правами приходится создавать несколько <серверов>, указывающих на одну СУБД, но с разными пользователями (рисунок 10). Хотя в этом есть и определенные преимущества, т.к. можно поддерживать одновременно несколько подключений с различными правами. К слову, посмотреть все подключения к СУБД можно, выбрав <Сервис> - <Состояние сервера>.

В заключение заметим, что в клиенте доступен файл помощи. Правда, он на английском языке, но, тем не менее, достаточно подробно, просто и с обилием иллюстраций описывает работу с клиентом, его настройку, а также содержит подробную справку по PostgreSQL 7.4. Показалось несколько неудобным, что развернутое окно помощи всегда находится поверх рабочего окна, закрывая часть данных. Хотя всегда можно открыть справку отдельно (соответствующий пункт присутствует в группе меню <Пуск>), и тогда ничто не будет мешать переключаться между окнами любимой комбинацией .

Итак, мои общие впечатления: Клиент добротный, не считая мелких недостатков; поддерживает практически все функции разработки и администрирования. Широкие возможности по анализу запросов, наглядное представление структуры БД и ее составляющих, интуитивно понятный, не обремененный ничем лишним, да еще и русскоязычный интерфейс делают pgAdmin удобным инструментом для работы с базами PostgreSQL, особенно для начинающих. Помимо версии для Windows, есть пакеты для Linux (Debian, RPM, Slackware packages), для FreeBSD. При желании, пакет может быть собран и из исходных текстов.

Дополнительную информацию (в том числе и на русском языке) можно получить на сайте проекта.


Hosted by uCoz