Общие сведения об архитектуре PostgreSQL

Завершено

PostgreSQL — это клиент-серверная система управления реляционными базами данных. PostgreSQL также поддерживает широкий спектр расширений, таких как расширение Citus в параметре Azure Cosmos DB для PostgreSQL. После загрузки расширения в базу данных она функционирует как любая встроенная функция.

PostgreSQL также имеет собственный язык запросов под названием pgsql. Кроме того, PostgreSQL поддерживает процедурные языки, такие как Ruby on Rails.

Снимок экрана: расширения и языки PostgreSQL.

Клиент-серверная архитектура

Система PostgreSQL основана на клиент-серверной архитектуре. Сервер хранит, управляет и возвращает данные клиентским программам. Клиентские программы запрашивают данные с помощью pgSQL или одного из процедурных языков, поддерживаемых PostgreSQL, таких как PL/pgSQL.

Сеанс PostgreSQL состоит из следующих частей:

  • postmaster
  • клиентское приложение
  • Сервер

Postmaster

Postmaster — это процесс надзорной управляющей программы, который управляет сервером PostgreSQL. Управляющая программа postmaster управляет взаимодействием между различными процессами сервера, включая инициализацию сервера, завершение работы сервера, обработку запросов на подключение и выполнение других фоновых процессов. В Базе данных Azure для PostgreSQL у вас нет доступа к файловой системе или к процессу Postmaster.

Клиентские приложения

Клиенты выполняют запросы и взаимодействуют с базами данных на сервере Базы данных Azure для PostgreSQL. Для выполнения запросов требуется клиентское средство, например Azure Data Studio, DBeaver, pgAdmin или psql. Клиентские средства рассматриваются в следующем модуле.

Серверные процессы.

Кластер — на одном сервере PostgreSQL можно разместить несколько пользовательских баз данных. В PostgreSQL такая коллекция баз данных называется кластером. Каждая база данных отделена от другой, а пользователи и приложения взаимодействуют с одной базой данных. Пользователи создаются на уровне кластера или сервера.

Данные для этих баз данных хранятся в каталоге данных кластера с именем PGDATA. В каталоге данных PGDATA есть файл, содержащий версию выполняемой системы PostgreSQL, файл pg_tblspc, содержащий ссылки на табличные пространства, и pg_xlog, который содержит файлы журнала упреждающей записи.

Примечание.

Базы данных Azure для PostgreSQL — это служба, которая управляет хранилищем и базовой файловой системой. Как у пользователя этого сервера, у вас нет прямого доступа к каталогу PGDATA и его подкаталогам.

Помимо создаваемых вами баз данных существует три системные базы данных:

  • postgres — база данных по умолчанию. После создания сервера подключитесь к базе данных postgres.
  • azure_maintenance — база данных, управляющая процессами службы. У вас нет прямого доступа к этой базе данных.
  • azure_sys — база данных для хранилища запросов. Базу данных azure_sys и ее схемы изменять нельзя. Изменение ничего в azure_sys предотвращает правильность работы хранилище запросов и других функций производительности.

Схемы — это именованная группа объектов базы данных. Большие базы данных с большим количеством объектов получают преимущество от упорядочения объектов в схемы. Например, создание схемы для связанных с продажами объектов и схема для связанных с клиентом объектов упрощает поиск правильного объекта.

Параметры сервера — PostgreSQL содержит несколько файлов конфигурации, которые определяют, как должно работать ядро СУБД. Основной файл конфигурации PostgreSQL называется postgresql.conf.

База данных Azure для PostgreSQL заменили эти файлы конфигурации на Параметры сервера, к которым можно получить доступ через портал Azure или с помощью Azure CLI.

Чтобы просмотреть или изменить параметры сервера на портале Azure:

  1. Перейдите к серверу Базы данных Azure для PostgreSQL.
  2. В меню слева в разделе Параметры выберите Параметры сервера.
  3. Используйте панель поиска, чтобы отфильтровать список параметров или выбрать нужный номер страницы.

Служба хранилища — База данных Azure для PostgreSQL управляет хранилищем данных и подготавливается на уровне сервера. Можно ли выбрать уровень вычислений с возможностью ускорения, общего назначения или оптимизированного для памяти уровня вычислений, используйте до 32 ТБ хранилища. Чтобы подготовить хранилище, перейдите к серверу База данных Azure для PostgreSQL и в разделе "Обзор" выберите свою конфигурацию. Отобразится раздел Вычислительная среда и хранилище. Выберите "Хранилище", затем используйте ползунок "Размер хранилища (в ГБ)", чтобы выбрать объем хранилища, который требуется подготовить.

Объем хранилища, который вы подготавливаете, определяет возможности ввода-вывода для сервера службы "База данных Azure для PostgreSQL". Вы можете отслеживать показатель операций ввода-вывода на портале Azure или с помощью команд Azure CLI. Следует отслеживать такие метрики, как размер хранилища, процентное соотношение для хранилища, используемое хранилище и процент операций ввода-вывода данных.

Примечание.

Вы можете увеличить объем хранилища после создания сервера Базы данных Azure для PostgreSQL, но уменьшить его нельзя.

Табличные пространства. С помощью локальной реализации PostgreSQL можно создавать табличные пространства, связанные с основной областью хранения, называемой PGDATA, с помощью подкаталога pg_tblspc. База данных Azure для PostgreSQL не поддерживает табличные пространства: все таблицы создаются в основной области хранения.

Системные каталоги/ PostgreSQL содержит множество системных таблиц и представлений, которые хранят сведения об объектах базы данных. Например, pg_database возвращает все базы данных на сервере и pg_class хранит статистику о таблицах.

Примечание.

База данных Azure для PostgreSQL разрешает доступ к некоторым системным каталогам, но не ко всем.

Расширения. PostgreSQL поддерживает ряд расширений основных функциональных возможностей ядра СУБД. Эти расширения доступны в репозитории с именем "Сеть расширений PostgreSQL" (PGXN).

Чтобы использовать расширение PostgreSQL, его необходимо установить в базе данных. Чтобы установить расширение, выполните команду CREATE EXTENSION из средства PSQL. Расширение будет загружено в базу данных. Например:

SELECT create_extension('postgis');

Чтобы узнать, какие расширения поддерживают База данных Azure для PostgreSQL, выполните следующий запрос:

SELECT * FROM pg_available_extensions;

Все серверы Базы данных Azure для PostgreSQL включают расширение pg_stat_statements. Это расширение уже установлено для предоставления функций для отслеживания статистики выполнения инструкций SQL. Параметр сервера pg_stat_statements.track определяет, какие инструкции учитываются расширением. Доступные параметры:

  • Top (Основные) — отслеживает все инструкции, выданные непосредственно клиентами (по умолчанию).
  • None (Никакие) — инструкции не отслеживаются.
  • All (Все) — отслеживает все инструкции, включая вложенные инструкции, и инструкции, вызываемые функциями.

Примечание.

На регистрацию каждой инструкции SQL требуются ресурсы сервера. Если вы не используете активно pg_stat_statements, установите для этого параметра значение none. Кроме того, обратите внимание, что некоторые сторонние службы мониторинга могут полагаться на pg_stat_statements.

Оптимизатор запросов — PostgreSQL использует метод оптимизации запросов на основе затрат. Средство синтаксического анализа проверяет синтаксис запроса и разделяет запрос на разные части. Средство синтаксического анализа создает дерево синтаксического анализа и передает запрос в средство переопределения, которое применяет правила к запросу. Планировщик определяет лучший способ выполнения запроса перед выполнением запроса.

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