Введение

PostgreSQL — это мощная объектно-реляционная база данных с открытым исходным кодом, основанная на языке SQL и обладающая множеством дополнительных возможностей.
Она надежно сохраняет и обрабатывает даже самые сложные данные. История PostgreSQL начинается с 1986 года, когда проект POSTGRES был запущен в Калифорнийском университете в Беркли. С тех пор прошло уже больше 35 лет активного развития этой платформы.
PostgreSQL славится своей надежной архитектурой, стабильностью, целостностью данных, богатым набором функций и возможностью расширения. Сообщество разработчиков открытого ПО постоянно улучшает эту систему, предлагая новые решения и улучшения. PostgreSQL поддерживает все основные операционные системы и отвечает стандартам ACID (Atomicity, Consistency, Isolation, Durability) с 2001 года. Кроме того, она включает полезные дополнения, например, популярное расширение для работы с географическими данными — PostGIS. Поэтому неудивительно, что PostgreSQL стала выбором многих пользователей и компаний среди открытых реляционных баз данных.
Почему именно PostgreeSQL
PostgreSQL предлагает множество инструментов, которые помогают разработчикам создавать приложения, администраторам обеспечивать защиту данных и строить надежные системы, а также позволяют эффективно управлять данными любого объема.
PostgreSQL — это бесплатная программа с открытым исходным кодом, которую можно легко адаптировать под ваши нужды. Вы можете создавать свои собственные типы данных, добавлять уникальные функции и даже писать код на разных языках программирования, не перезагружая базу данных.
Ниже приведен неполный список различных функций взятый с официального сайта, имеющихся в PostgreSQL, причем в каждом крупном выпуске добавляются новые функции :
- Типы данных
- Примитивы: целые, числовые, строковые, логические
- Структурированный: Дата/Время, Массив, Диапазон/Мультидиапазон, UUID
- Документ: JSON/JSONB, XML, ключ-значение (Hstore)
- Геометрия: Точка, Линия, Окружность, Многоугольник
- Настройки: Композитные, Пользовательские типы
- Целостность данных
- УНИКАЛЬНЫЙ, НЕ NULL
- Первичные ключи
- Внешние ключи
- Ограничения исключения
- Явные блокировки, рекомендательные блокировки
- Параллелизм, производительность
- Индексирование: B-дерево, многоколоночное, выражения, частичное
- Расширенное индексирование: GiST, SP-Gist, KNN Gist, GIN, BRIN, индексы покрытия, фильтры Блума
- Сложный планировщик/оптимизатор запросов, сканирование только индекса, многостолбцовая статистика
- Транзакции, вложенные транзакции (через точки сохранения)
- Управление многоверсионным параллелизмом (MVCC)
- Распараллеливание запросов на чтение и построение индексов B-tree
- Разделение таблицы
- Все уровни изоляции транзакций, определенные в стандарте SQL, включая сериализуемые
- Компиляция выражений «точно в срок» (JIT)
- Надежность, аварийное восстановление
- Ведение журнала с опережающей записью (WAL)
- Репликация: асинхронная, синхронная, логическая
- Восстановление в определенный момент времени (PITR), активные резервы
- Табличные пространства
- Безопасность
- Аутентификация: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, сертификат и многое другое
- Надежная система контроля доступа
- Безопасность на уровне столбцов и строк
- Многофакторная аутентификация с сертификатами и дополнительным методом
- Расширяемость
- Хранимые функции и процедуры
- Процедурные языки: PL/pgSQL, Perl, Python и Tcl. Другие языки доступны через расширения, например Java, JavaScript (V8), R, Lua и Rust
- Конструкторы SQL/JSON, функции запросов, выражения пути и JSON_TABLE
- Внешние оболочки данных: подключение к другим базам данных или потокам с помощью стандартного интерфейса SQL
- Настраиваемый интерфейс хранения таблиц
- Множество расширений, обеспечивающих дополнительную функциональность, включая PostGIS
- Интернационализация, Текстовый поиск
- Поддержка международных наборов символов, например, посредством сопоставлений ICU
- Сортировки без учета регистра и диакритических знаков
- Полнотекстовый поиск
В этом учебнике мы постараемся рассмотреть все возможности этой СУБД!