Good

Бази даних

Бази даних — це пам'ять наших сервісів. Matrix зберігає повідомлення в PostgreSQL, Wiki — статті та пошуковий індекс, Gitea — метадані репозиторіїв.

💡 Чому саме PostgreSQL?
PostgreSQL — це промисловий стандарт для серйозних проектів. Надійний, швидкий, з відкритим кодом. Майже всі наші сервіси використовують саме його.

Типи баз даних

flowchart LR
    subgraph relational["Реляційні (SQL)"]
        PG["PostgreSQL"]
        SQLITE["SQLite"]
    end

    subgraph nosql["NoSQL"]
        REDIS["Redis<br/>key-value"]
        MONGO["MongoDB<br/>документи"]
    end

    subgraph usecase["Де використовуємо"]
        U1["Matrix, Wiki, Gitea"]
        U2["Мобільні, embedding"]
        U3["Кеш, сесії"]
        U4["Логи, metrics"]
    end

    PG --> U1
    SQLITE --> U2
    REDIS --> U3
    MONGO --> U4

    style relational fill:#dbeafe
    style nosql fill:#fef3c7
    style usecase fill:#d1fae5

Матеріали розділу

Стаття Опис Коли читати
Вступ Концепції БД: таблиці, індекси, транзакції Початківцям
PostgreSQL Встановлення, налаштування, базові операції Всім
Огляд СУБД Порівняння PostgreSQL, MySQL, SQLite Для вибору

PostgreSQL в UMTC

Швидкий старт

# Запуск через Docker
docker run -d \
  --name postgres \
  -e POSTGRES_PASSWORD=secure_password \
  -v pgdata:/var/lib/postgresql/data \
  -p 5432:5432 \
  postgres:16-alpine

Базові операції

-- Створення бази для нового сервісу
CREATE DATABASE synapse_db;

-- Створення користувача з обмеженими правами
CREATE USER synapse WITH PASSWORD 'strong_password';
GRANT ALL PRIVILEGES ON DATABASE synapse_db TO synapse;

-- Перевірка з'єднання
\conninfo
⚠️ Безпека паролів
Ніколи не використовуйте паролі з прикладів у продакшені. Генеруйте криптостійкі паролі: `openssl rand -base64 32`

Бекапи

Бекап — це не опція, це обов'язок. Без бекапу втрата диска = втрата всіх даних.

# Бекап однієї бази
pg_dump -U postgres synapse_db > synapse_backup.sql

# Бекап всіх баз
pg_dumpall -U postgres > all_databases.sql

# Відновлення
psql -U postgres synapse_db < synapse_backup.sql
💡 Автоматизація бекапів
Налаштуйте cron job для щоденних бекапів з ротацією старих копій. Зберігайте бекапи на окремому сервері.

Моніторинг

Ознаки проблем з БД:
- Повільні запити (>1 сек)
- Високе використання диска
- Багато відкритих з'єднань

-- Активні з'єднання
SELECT * FROM pg_stat_activity WHERE state = 'active';

-- Розмір баз
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname))
FROM pg_database ORDER BY pg_database_size(pg_database.datname) DESC;

Пов'язані теми

  • Synapse — використовує PostgreSQL
  • Docker — контейнеризація БД
  • Hardening — захист доступу до БД

Шлях: services/databases/index.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications