Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Ну и напоследок несколько слов о транзакциях. Этот механизм позволяет выполнять несколько операций по модификации БД единым блоком, что гарантирует целостность данных. Например, если при оформлении покупки через интернет-магазин нужно занести запись о покупке и одновременно уменьшить количество соответствующих товаров на складе, то в результате сбоя может сложиться ситуация, когда запись о покупке будет сделана, а товар – не зарезервирован. В ходе же транзакции изменения в базу данных записываются только в случае успешности всех операций.
Транзакционный блок открывается командой BEGIN (не забывайте завершать эту команду, как и все остальные, точкой с запятой). Все изменения, выполняемые в блоке, не отражаются на базе данных, пока не поступит команда COMMIT, по которой выполняется запись всех сделанных изменений. Отменить транзакцию (например, в случае выявления ошибки) позволяет команда ROLLBACK. Если вы недостаточно хорошо представляете, как это работает, попробуйте поработать с таблицами внутри транзакционного блока, анализируя изменения, происходящие при подтверждении транзакции (COMMIT) и ее откате (ROLLBACK). Обратите внимание, что такие операции, как удаление таблицы, внутри транзакции выполнены быть не могут.
Вопросы администрирования
В начале статьи упоминалось, что локальные пользователи компьютера, на котором запущен сервер postmaster, могут подключаться к БД под именем любого пользователя без указания пароля. Связано это с тем, что хост localhost по умолчанию является доверенным. Изменить это можно в файле pg_hba.conf, находящемся в каталоге data, инициированном командой initdb.
Синтаксис этого файла хорошо прокомментирован в нем самом. Поле TYPE содержит тип записи, который может быть одним из следующих: local (соединение, устанавливаемое с того же компьютера, на котором работает сервер СУБД; использует сокеты UNIX), host (соединение TCP/IP) или hostssl (защищенное соединение TCP/IP с использованием протокола SSL).
Поле METHOD может содержать следующие записи:
n trust – доверенный хост, подключения не требуют пароля;
n reject – отклонить соединение;
n password – требовать соответствия пароля (передается в открытом виде);
n crypt – требовать соответствия пароля (пароль шифруется);
n krb4, krb5 – аутентификация Kerberos;
n ident – аутентификация по карте соответствия имени пользователя PostgreSQL системному имени пользователя. Карты соответствия содержатся в файле pg_ident.conf.
Назначение остальных полей файла pg_hba.conf пояснений, думаю, не требует. При запросе соединения проверка условий выполняется с начала файла до обнаружения соответствия, после чего выполняется действие, заданное полем METHOD. Если соответствие не будет найдено, соединение не будет установлено. Следует заметить, что после внесения изменений в этот файл требуется перезапустить процесс postmaster, послав ему сигнал SIGHUP, либо перезагрузить сервер СУБД командой:
# pg_ctl reload
Чтобы сервер мог обслуживать подключения по протоколу TCP/IP, процесс postmaster должен быть запущен с ключом –i. Для SSL-соединений также требуется ключ –l, и, кроме того, СУБД должна быть собрана с поддержкой SSL (ключ --with-openssl).
Управление базой данных может осуществляться с помощью SQL-команд. Ряд функций может быть выполнен внешними программами. Ниже представлена таблица, описывающая некоторые полезные команды:
SQL-команда |
Имя программы |
Описание |
create database |
createdb |
Создание новой базы данных |
alter database |
-- |
Изменение параметров БД |
drop database |
dropdb |
Удаление базы данных |
create user |
createuser |
Создание нового пользователя |
alter user |
-- |
Изменение параметров пользователя (в т.ч. пароля) |
drop user |
dropuser |
Удаление пользователя |
create group |
-- |
Создать группу пользователей |
alter group |
-- |
Добавление / удаление пользователя в группу |
drop group |
-- |
Удалить группу |
vacuum |
vacuumdb |
Дефрагментация БД |
grant |
-- |
Назначение привилегий |
revoke |
-- |
Отмена привилегий |
-- |
pg_dump |
Архивирование БД |
-- |
pg_restore |
Восстановление БД из архива |