Программирование и администрирование сервера PostgreSQL# Содержание# Администрирование сервера Настройка и эксплуатация сервера Учетная запись пользователя PostgreSQL Создание кластера баз данных Запуск сервера баз данных Управление ресурсами ядра Завершение работы сервера Обновление кластера PostgreSQL Предотвращение подделки сервера Параметры преобразования Безопасные соединения TCP/IP с помощью SSL Безопасные соединения TCP/IP с преобразованием GSSAPI Безопасные соединения TCP/IP с помощью туннелей SSH Регистрация журнала событий в Windows Настройка сервера Установка параметров Расположение файлов Подключения и аутентификация Потребление ресурсов Журнал записи с опережением (WAL) Репликация Планирование запросов Отчетность и ведение журнала ошибок Статистика выполнения Автоматическая очистка Параметры подключения клиента Управление блокировкой Совместимость версий и платформ Обработка ошибок Предустановленные параметры Пользовательские параметры Параметры для разработчиков Краткие параметры Аутентификация клиентского приложения Файл pg_hba.conf Карты сопоставления имен пользователей Методы аутентификации Аутентификация trust Аутентификация по паролю Аутентификация GSSAPI Аутентификация SSPI Аутентификация ident Аутентификация peer Аутентификация LDAP Аутентификация RADIUS Аутентификация по сертификату Аутентификация PAM Аутентификация BSD Проблемы с аутентификацией Роли базы данных Роли базы данных Атрибуты ролей Членство в ролях Удаление ролей Предопределенные роли Безопасность функций Управление базами данных Обзор Создание базы данных Шаблоны баз данных Конфигурирование баз данных Удаление базы данных Табличные пространства Локализация Поддержка языковых стандартов Поддержка правил сортировки Поддержка кодировок Регулярные задачи обслуживания баз данных Регулярная очистка Регулярная перезапись индекса Обслуживание файла журнала Резервное копирование и восстановление SQL-дампы Резервное копирование на уровне файловой системы Непрерывное архивирование и восстановление до заданной точки во времени (PITR) Отказоустойчивость, балансировка нагрузки и репликация Сравнение различных решений Трансляция журналов на резервные серверы Отработка отказа Горячий резерв Мониторинг активности СУБД Стандартные инструменты Unix Система накопительной статистики Просмотр информации о блокировках Отчет о ходе выполнения Динамическая трассировка Мониторинг использования дисков Определение использования диска Полный отказ диска Надежность и журнал предварительной записи Надежность Контрольные суммы данных Журнал предзаписи (WAL) Асинхронное подтверждение транзакций Настройка WAL Внутреннее устройство WAL Логическая репликация Публикация Подписка Отказоустойчивость логической репликации Фильтры строк Списки столбцов Конфликты Ограничения Архитектура Мониторинг Безопасность Настройки конфигурации Быстрая настройка Компиляция Just-in-Time (JIT) Что такое JIT-компиляция? Когда применять JIT? Конфигурация Расширяемость Регрессионные тесты Запуск тестов Оценка тестов Файлы сравнения вариантов Тесты TAP Проверка тестового покрытия Программирование сервера Расширение SQL Как работает расширяемость Система типов PostgreSQL Пользовательские функции Процедуры, определяемые пользователем Функции языка запросов (SQL) Перегрузка функций Категории волатильности функций Функции процедурного языка Внутренние функции Функции на языке C Информация об оптимизации функций Пользовательские агрегатные функции Пользовательские типы Пользовательские операторы Информация для оптимизации операторов Интерфейсы расширений для индексов Упаковывание связанных объектов в расширение Инфраструктура сборки расширений Триггеры Обзор поведения триггеров Видимость изменений данных Написание триггерных функций на языке C Полный пример триггера Триггеры событий Обзор поведения триггеров событий Матрица срабатывания триггеров событий Написание триггеров событий на C Пример триггера события Пример триггера события перезаписи таблицы Пример триггера события входа в базу данных Система правил Дерево запросов Представления и система правил Материализованные представления Правила для INSERT, UPDATE, и DELETE Правила и привилегии Правила и статус команд Правила и триггеры Процедурные языки Установка процедурных языков PL/pgSQL — Процедурный язык SQL Обзор Структура PL/pgSQL Объявления Выражения Основные операторы Структуры управления Курсоры Управление транзакциями Ошибки и сообщения Триггерные функции PL/pgSQL под капотом Советы по разработке в PL/pgSQL Портирование из Oracle PL/SQL PL/Tcl – процедурный язык Tcl Обзор Функции и аргументы PL/Tcl Значения данных в PL/Tcl Глобальные данные в PL/Tcl Доступ к базе данных из PL/Tcl Триггерные функции в PL/Tcl Функции событийных триггеров в PL/Tcl Обработка ошибок в PL/Tcl Явные подтранзакции в PL/Tcl Управление транзакциями Конфигурация PL/Tcl Имена процедур Tcl PL/Perl — процедурный язык Perl Функции и аргументы PL/Perl Значения данных в PL/Perl Встроенные функции Глобальные значения в PL/Perl Доверенный и недоверенный PL/Perl Триггеры PL/Perl Триггеры событий PL/Perl PL/Perl под капотом PL/Python — процедурный язык Python Функции PL/Python Значения данных Обмен данными Анонимные блоки кода Триггерные функции Доступ к базе данных Явные подтранзакции Управление транзакциями Вспомогательные функции Python 2 и Python 3 Переменные окружения Фоновые рабочие процессы Отслеживание прогресса репликации Партиционирование таблиц