PostgreSQL: реляционная БД
2025-08-29

PostgreSQL: реляционная БД

Что такое PostgreSQL

PostgreSQL – это объектно-реляционная система управления базами данных (ORDBMS), которая поддерживает расширенные типы данных, полнотекстовый поиск, геопространственные запросы и многое другое. Она известна своей стабильностью, расширяемостью и совместимостью с SQL‑стандартом.

Ключевые особенности

  • ACID‑совместимость – гарантирует целостность данных.
  • Расширяемость – пользовательские типы, операторы, функции, индексы.
  • Поддержка JSON/JSONB – гибкая работа с полуструктурированными данными.
  • Масштабируемость – репликация, шардирование, партиционирование.
  • Безопасность – ролей, SSL, аутентификация через LDAP, PAM, SCRAM.

Установка

На Ubuntu

sudo apt update
sudo apt install postgresql postgresql-contrib

На macOS (Homebrew)

brew update
brew install postgresql
brew services start postgresql

После установки создайте пользователя и базу:

sudo -u postgres createuser --interactive
sudo -u postgres createdb mydb

Базовый SQL

Создание таблицы

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Вставка данных

INSERT INTO users (username, email) VALUES
('alice', 'alice@example.com'),
('bob', 'bob@example.com');

Запросы

SELECT * FROM users WHERE username = 'alice';

Обновление

UPDATE users SET email = 'alice@newdomain.com' WHERE username = 'alice';

Удаление

DELETE FROM users WHERE username = 'bob';

Индексы

Индексы ускоряют поиск, но замедляют вставку. Создайте индекс для часто используемых колонок:

CREATE INDEX idx_users_email ON users(email);

Для полнотекстового поиска используйте GIN индекс:

ALTER TABLE articles ADD COLUMN content TEXT;
CREATE INDEX idx_articles_content ON articles USING GIN (to_tsvector('english', content));

Транзакции

BEGIN;
INSERT INTO users (username, email) VALUES ('charlie', 'charlie@example.com');
-- Если что-то пошло не так
ROLLBACK; -- отмена
-- Иначе
COMMIT;   -- подтверждение

Лучшие практики

  • Нормализация – избегайте избыточности.
  • Параметризованные запросы – защита от SQL‑инъекций.
  • Мониторингpg_stat_activity, pg_stat_user_tables.
  • Резервное копированиеpg_dump, pg_basebackup.
  • Планировщикpg_cron для регулярных задач.

Заключение

PostgreSQL – мощная и гибкая СУБД, подходящая как для небольших проектов, так и для крупных корпоративных систем. Изучив базовые команды и принципы работы, вы сможете эффективно использовать её возможности в своих приложениях.