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, но всё же эта пара с заметным отрывом опережает по частоте использования остальные системы управления базами данных. При этом в разработке сложных сайтов и веб-приложений PostgreSQL опережает по использованию MySQL и MariaDB. Большинство фреймворков (например, Ruby on Rails, Yii, Symfony, Django) поддерживают использование PostgreSQL в разработке.

PostgreSQL — надёжная объектно-реляционная свободная СУБД, имеющая широкие возможности и высокую производительность.

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

СУБД отличается высокой надёжностью и хорошей производительностью. PostgreSQL поддерживает транзакции (ACID), репликация реализована встроенными механизмами. При этом система расширяемая — можно создавать свои типы данных и индексов, а также расширять поведение при помощи языков программирования.

Узнать больше →

Cтатьи по теме:

MySQL — система управления базами данных
MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб-приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб-фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).
MariaDB — система управления реляционными базами данных
MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB полностью совместима с приложениями, использующими MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.
SQL-инъекции — распространённый метод взлома веб-приложений и сайтов
SQL-инъекции — это один из распространённых способов взлома сайтов и веб-приложений, работающих с реляционными базами данных. Этот способ основан на внедрении в выполняемый приложением запрос к базе данных произвольного SQL-кода, переданного злоумышленником.
Ускоряем работу сайта: используем Redis для кеширования и хранения данных
Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.
Ускоряем работу сайта при помощи кеширования на базе Memcached
Memcached — это хранилище «ключ => значение», использование которого очень эффективно для ускорения работы сайта или веб-приложения.
Реляционные базы данных и NoSQL-хранилища
13.03.2019  |  Статьи  —  СУБД  /  хранение данных  /  SQL  /  NoSQL  /  серверное ПО
Базы данных служат для хранения и обработки данных. Бывают реляционные (SQL) и нереляционные (NoSQL) системы управления базами данных.
Масштабирование баз данных — партиционирование, репликация и шардинг
СУБД — это очень часто «узкое место» в производительности веб-приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование. Рассмотрим основные способы увеличения производительности СУБД.

Тематические технологии:

Поисковая система ElasticSearch
СУБД Redis
Колоночная СУБД Scylla
Колоночная СУБД Cassandra