Web Creator
ЦифровизацияРазработкаДизайнКейсыКомпанияКонтакты
Начать проект
Переключиться на светлую тему
Меню
Цифровизация бизнесаРазработка сложных проектовВеб-сервисы и приложенияКорпоративные системыЦифровой дизайнUsability & UX/UIНаши кейсыКомпанияКонтакты
Web Creator→Статьи

PostgreSQL — объектно-реляционная система управления базами данных

PostgreSQL — это популярная свободная объектно-реляционная система управления базами данных. PostgreSQL базируется на языке SQL и обладает многочисленными возможностями.

Преимущества PostgreSQL

  • поддержка баз данных неограниченного размера;
  • мощные и надёжные механизмы транзакций;
  • возможность репликации, шардинга и партиционирования;
  • расширяемая система встроенных языков программирования и поддержка загрузки C‑совместимых модулей;
  • наследование;
  • лёгкая расширяемость.

Текущие ограничения PostgreSQL

  • Нет ограничений на максимальный размер базы данных
  • Нет ограничений на количество записей в таблице
  • Нет ограничений на количество индексов в таблице
  • Максимальный размер таблицы — 32 Тбайт
  • Максимальный размер записи — 1,6 Тбайт
  • Максимальный размер поля — 1 Гбайт
  • Максимум полей в записи — 250–1600 (в зависимости от типов полей)

Особенности PostgreSQL

Функции в PostgreSQL являются блоками кода, исполняемыми на сервере, а не на клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных операторов и циклов, выходит за рамки собственно SQL и требует использования некоторых языковых расширений. Функции могут писаться с использованием различных языков программирования. PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно использовать так же, как и результат выполнения обычного запроса. Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя. Иногда функции отождествляются с хранимыми процедурами, однако между этими понятиями есть различие.

Триггеры в PostgreSQL определяются как функции, инициируемые DML‑операциями. Например, операция INSERT может запускать триггер, проверяющий добавленную запись на соответствие определённым условиям. При написании функций для триггеров могут использоваться различные языки программирования. Триггеры ассоциируются с таблицами. Несколько триггеров выполняются в алфавитном порядке.

Механизм правил в PostgreSQL позволяет создавать пользовательские обработчики не только DML‑операций, но и операции выборки. Основное отличие от механизма триггеров заключается в том, что правила срабатывают на этапе разбора запроса, до выбора оптимального плана выполнения и самого процесса выполнения. Правила позволяют переопределять поведение системы при выполнении SQL‑операций над таблицей.

Индексы в PostgreSQL бывают, в том числе, следующих типов: B‑дерево, хэш, R‑дерево, GiST, GIN. При необходимости можно создавать новые типы индексов, хотя это далеко не тривиальный процесс.

Многоверсионность поддерживается в PostgreSQL — возможна одновременная модификация БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому соблюдаются требования ACID, и практически отпадает необходимость в блокировках чтения.

Расширение PostgreSQL для собственных нужд возможно практически в любом аспекте. Есть возможность добавлять собственные преобразования типов, типы данных, домены (пользовательские типы с изначально наложенными ограничениями), функции (включая агрегатные), индексы, операторы (включая переопределение уже существующих) и процедурные языки.

Наследование в PostgreSQL реализовано на уровне таблиц. Таблицы могут наследовать характеристики и наборы полей от других таблиц (родительских). При этом данные, добавленные в порождённую таблицу, автоматически будут участвовать (если это не указано отдельно) в запросах к родительской таблице.

Использование в веб‑проектах

В разработке простых сайтов PostgreSQL используется реже, чем MySQL / MariaDB — эта пара с заметным отрывом опережает по частоте использования в веб‑проектах все остальные системы управления базами данных за счёт того, что большинство коробочных CMS созданы именно на основе этих двух СУБД. При этом в разработке сложных сайтов и веб‑приложений PostgreSQL используется чаще, нежели MySQL и MariaDB. Большинство фреймворков (например, Ruby on Rails, Yii, Symfony, Django) поддерживают использование PostgreSQL в разработке веб‑приложений.

СУБДхранение данныхбэкендSQLвеб-разработкасерверное ПО
Статья обновлена в 2025 году

Тематические статьи

Реляционные базы данных и NoSQL‑хранилища

Базы данных служат для хранения и обработки данных. Бывают реляционные (SQL) и нереляционные (NoSQL) системы управления базами данных. Реляционные системы управления базами данных (SQL) хранят данные в таблицах и наиболее часто используются в качестве основного хранилища для веб‑приложений. Они очень стабильны, и их надёжность проверена временем. Нереляционные СУБД (NoSQL) заметно отличаются по структуре хранения данных и работе с ними. Для специфических типов данных и задач они зачастую быстрее и удобнее классических SQL СУБД, но обычно это преимущество достигается за счёт снижения надёжности хранения.

Статья обновлена в 2021 году
Масштабирование баз данных — партиционирование, репликация и шардирование

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

Статья обновлена в 2025 году
MySQL — система управления базами данных

MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб‑приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб‑фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).

Статья опубликована в 2014 году
MariaDB — система управления реляционными базами данных

MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB совместима с большинством приложений, использующих MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.

Статья опубликована в 2014 году
SQL-инъекции — распространённый метод взлома веб‑приложений и сайтов

SQL‑инъекции — это один из распространённых способов взлома сайтов и веб‑приложений, работающих с реляционными базами данных. SQL‑инъекции основаны на внедрении в выполняемый приложением запрос к базе данных произвольного SQL‑кода, переданного злоумышленником. Последствиями SQL‑инъекций могут стать кража, модификация или удаление данных, а также полный взлом атакуемой системы — например, получение привилегированного доступа.

Статья опубликована в 2019 году
Серверное программное обеспечение

На серверах для размещения сайтов и веб‑приложений устанавливается программное обеспечение, которое требуется для работы программной логики сайта и других служб домена, для обслуживания и мониторинга, а также для защиты от взлома и устойчивости к нагрузкам.

Статья обновлена в 2022 году
Web Creator
© 2004-2026 ООО «Веб Креатор»
Политика обработки персональных данных
ООО «Веб Креатор» входит в реестр
аккредитованных ИТ-компаний
Минцифры России
Пн-Пт с 10:00 до 19:00 [MSK, UTC+3]
Москва, Староалексеевская, 5
Telegram @WebCreatorTeam
s@web-creator.ru
+7 495 215 15 01
Цифровизация бизнесаКорпоративные системыМашинное обучение и ИИАвтоматизация процессовСистемная аналитикаСистемная интеграцияОбработка и анализ данныхРазработка на фреймворкахИнформационная безопасность
Разработка сложных проектовВеб-сервисы и приложенияЭлектронная коммерцияМобильная разработкаЦифровой дизайнUsability & UX / UIДизайн-системыСопровождение и DevOpsХостинговые решения
КомпанияКейсыКлиентыПроцессыТехнологииСтатьиВакансииЦеныКонтакты