Знакомство с PostgreSQL, установка, базовые концепты архитектуры
PostgreSQL — это мощная открытая СУБД, которая стала стандартом де-факто для современных приложений. В этой теме вы настроите окружение и познакомитесь с архитектурой PostgreSQL.
PostgreSQL (часто называемая просто «Postgres») — это объектно-реляционная СУБД с открытым исходным кодом, которая разрабатывается уже более 30 лет. Вот ключевые причины её популярности:
PostgreSQL использует клиент-серверную архитектуру:
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Клиент │────▶│ Postgres │────▶│ Диск │
│ (psql, app) │ │ Server │ │ (данные) │
└─────────────┘ └──────────────┘ └─────────────┘
| Компонент | Описание |
|---|---|
| Postmaster | Главный процесс, управляющий всеми остальными процессами |
| Backend-процессы | Обрабатывают подключения клиентов (один процесс на подключение) |
| Background Writer | Периодически записывает «грязные» страницы на диск |
| WAL Writer | Записывает журнал предзаписи (Write-Ahead Log) |
| Autovacuum | Автоматически очищает мёртвые строки (VACUUM) |
Кластер (Cluster)
└── База данных (Database)
└── Схема (Schema)
└── Таблицы, представления, функции, индексы...
public)docker run --name postgres-course \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=course \
-p 5432:5432 \
-d postgres:16Проверка подключения:
docker exec -it postgres-course psql -U postgres -d coursemacOS (Homebrew):
brew install postgresql@16
brew services start postgresql@16Ubuntu/Debian:
sudo apt update
sudo apt install postgresql-16 postgresql-contrib-16Windows: Скачайте установщик с postgresql.org
# Подключение к локальной БД
psql -U postgres -d course
# Подключение к удалённой БД
psql -h hostname -U username -d database_name| Команда | Описание |
|---|---|
\l | Список баз данных |
\c database | Подключиться к базе данных |
\dt | Список таблиц |
\d table_name | Описание таблицы |
\df | Список функций |
\dn | Список схем |
\q | Выход из psql |
\h | Справка по SQL-командам |
\? | Справка по командам psql |
-- Создать таблицу
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
-- Вставить данные
INSERT INTO users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');
-- Выбрать данные
SELECT * FROM users;
-- Описать таблицу
\d usersЕсли вы предпочитаете графический интерфейс:
Выполните следующие команды для проверки:
-- Версия PostgreSQL
SELECT version();
-- Текущая база данных
SELECT current_database();
-- Текущий пользователь
SELECT current_user;
-- Список схем
SELECT schema_name FROM information_schema.schemata;Теперь у вас есть рабочее окружение. В следующих темах вы:
psql или GUI-клиентcourse_dbproducts с полями: id, name, price, created_atSELECT для проверки-- Пример решения
CREATE DATABASE course_db;
\c course_db
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
price NUMERIC(10, 2) NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
INSERT INTO products (name, price) VALUES
('Laptop', 999.99),
('Mouse', 29.99),
('Keyboard', 79.99);
SELECT * FROM products;Вопросы ещё не добавлены
Вопросы для этой подтемы ещё не добавлены.