Skip to content

Объекты базы данных объяснённые

Все ключевые объекты схемы PostgreSQL — структура, таблицы, представления, индексы, типы, идентичность, функции и процедуры, безопасность и репликация — в одном ёмком справочнике.

PostgreSQL хранит данные в именованных объектах схемы. У каждого объекта одна задача: таблица хранит строки, индекс ускоряет поиск, процедура содержит логику. Поймите, что такое каждый объект, прежде чем решать, какие добавлять, и считайте ограничения и политики правилами, которые сохраняют данные честными.

Справочная таблица · 45 записи
45 of 45 rows
Структура
Один изолированный каталог схем внутри кластера.Разделять приложения или окружения, которым нельзя делить данные.
Именованное пространство имён внутри базы данных, объединяющее связанные объекты.Группировать объекты по функции или владельцу и избегать конфликтов имён.
Именованное место на диске, куда помещаются файлы таблиц и индексов.Направлять горячие таблицы на быстрый накопитель и держать холодные данные на дешёвых дисках.
Настройка, определяющая, к каким схемам разрешается неквалифицированное имя объекта.Указать сессии нужную схему, чтобы запросы могли использовать короткие имена.
Описание, сохраняемое на любом объекте базы данных через COMMENT ON.Документировать таблицы и столбцы там, где их найдёт автор следующего запроса.
Таблицы и представления
Именованное отношение, хранящее строки в типизированных столбцах.Основной контейнер для постоянных данных.
Таблица, строки которой исчезают в конце сессии или транзакции.Держать черновые или промежуточные данные, которым нельзя пережить соединение.
Родительская таблица, разбитая на дочерние секции по объявленному ключу.Держать очень большие таблицы управляемыми, распределяя строки по секциям по диапазону или списку.
Таблица, строки которой живут во внешней системе и доступны через foreign data wrapper.Запрашивать удалённую базу или файл так, будто это локальная таблица.
Сохранённый запрос, представленный как виртуальная таблица.Показывать одни и те же строки через разные фильтры или соединения.
Простое представление, передающее INSERT, UPDATE и DELETE в базовую таблицу.Открыть отфильтрованный или соединённый срез таблицы, остающийся доступным для записи.
Представление, результат которого записывается на диск и обновляется по требованию.Кэшировать дорогие агрегаты или соединения и быстро их читать.
Функция, возвращающая множество строк и используемая везде, где уместна таблица.Разворачивать вычисленное множество на месте — так unnest превращает массив в строки.
Индексы
Сбалансированный древовидный индекс для поиска по равенству и диапазону.Ускорять WHERE, JOIN и ORDER BY по сортируемым столбцам.
Индекс, отклоняющий дубликаты значений в своём ключе.Обеспечивать уникальность столбца или комбинации столбцов.
Инвертированные или обобщённые древовидные индексы для нескалярных значений.Индексировать массивы, JSONB, полнотекстовый поиск или геометрические данные.
Индекс, построенный только по строкам, удовлетворяющим условию WHERE.Индексировать горячее подмножество и пропустить остальное, сэкономив место.
Типы и расширения
Пользовательский тип, значения которого берутся из фиксированного списка меток.Ограничить столбец замкнутым набором, например кодами статусов.
Базовый тип плюс проверочное ограничение, поименованный для повторного использования как тип столбца.Разделить одно проверенное определение, например непустой текст, между многими столбцами.
Набор правил, определяющий сравнение и сортировку строк.Получить правильный порядок для регистра, диакритики или конкретной локали.
Устанавливаемый пакет, добавляющий в базу функции, типы или операторы.Подключить проверенные инструменты вроде PostGIS или pg_trgm за один шаг.
Идентичность и генерация
Отдельный объект-счётчик, выдающий последовательные целые числа.Питать серийный ключ, когда несколько таблиц делят один генератор.
Столбец таблицы, поддерживаемый внутренней последовательностью согласно стандарту SQL.Современный автоинкрементный первичный ключ, предпочтительнее SERIAL.
Столбец, значение которого вычисляется из других столбцов той же строки.Хранить или показывать производное значение без ручной записи.
Функции и процедуры
Именованный блок SQL, возвращающий значение или строки.Инкапсулировать переиспользуемую логику и вызывать её внутри запросов.
Именованный блок, выполняющий действия и управляющий собственной транзакцией.Многошаговый ETL, где процедура делает commit или rollback внутри себя.
Процедура, сворачивающая множество входных строк в одно значение через функции состояния и финализации.Определять собственные агрегаты, например взвешенное среднее.
Символ, привязанный к одной или нескольким функциям для конкретных типов операндов.Дать собственным типам естественный синтаксис вроде a + b или @>.
Объявленный путь преобразования одного типа в другой.Управлять сменой типов значений, включая то, какие преобразования происходят неявно.
Процедура, привязанная к событию таблицы и срабатывающая автоматически.Аудит, проверка или каскадные изменения при INSERT, UPDATE или DELETE.
Триггер, срабатывающий на событиях уровня базы данных, например DDL-командах.Журналировать, блокировать или аудировать изменения схемы во всей базе.
Разобранный запрос, сохранённый для повторного выполнения со связанными параметрами.Переиспользовать один разбор и план на многих запусках одного запроса.
Дескриптор, удерживающий множество результатов открытым для построчного извлечения.Листать большие результаты или перебирать строки внутри процедуры.
Безопасность и правила
Именованная личность, владеющая привилегиями; пользователь — это роль, которая может входить в систему.Сгруппировать права один раз, а затем выдавать их людям, сервисам или другим ролям.
Инструкции, выдающие привилегии на объекты ролям или отзывающие их.Решить, какая роль может читать, писать или выполнять каждый объект.
Встроенные права создателя изменять или удалять объект, отдельно от выдач привилегий.Назвать роль, отвечающую за жизненный цикл объекта.
Постоянная инструкция, автоматически выдающая привилегии на объекты, которые роль создаст позже.Задать права заранее, чтобы новые таблицы не требовали ручных выдач для роли приложения.
Правило, отклоняющее записи, нарушающие объявленное условие.Обеспечивать гарантии NOT NULL, CHECK, UNIQUE, PRIMARY KEY и FOREIGN KEY.
Правило на роль, скрывающее строки, которые сессия не должна видеть.Изоляция тенантов или доступ на пользователя без переписывания запросов приложения.
Псевдоним, разрешающий одно имя в объект в другом месте; нативен в Oracle и SQL Server.Портировать схемы; в PostgreSQL вместо этого используйте search_path.
Определение того, какие действия записываются для проверки, через pgaudit или инструменты вендора.Доказать, кто что читал или менял, для комплаенса и расследований.
Инструкция, переписывающая входящий запрос в другую команду.Устаревшее перенаправление записи; PostgreSQL теперь предпочитает триггеры или обновляемые представления.
Репликация
Определение на стороне отправителя: какие таблицы и типы изменений передаются репликам.Объявить, что база данных предлагает подписчикам логической репликации.
Приёмник, подключающийся к публикации и применяющий её изменения к локальным таблицам.Притягивать изменения из другой базы PostgreSQL в эту.
Маркер, из-за которого первичный сервер удерживает WAL, пока потребитель его не прочитает.Гарантировать, что standby или подписчик возобновится без потери изменений.