Files

1.9 KiB

Выбор базы данных


Decision Tree

graph TD
    A[Какую БД?] --> B{Многопользовательская?}
    B -->|Нет / прототип| C[SQLite]
    B -->|Да| D{Нужен JSONB?}
    D -->|Да| E[PostgreSQL]
    D -->|Нет| F{Нужен full-text search?}
    F -->|Да| E
    F -->|Нет| G[SQLite / PostgreSQL]

Варианты

SQLite

Когда Прототип, dev, однопользовательское
Плюсы Не требует установки, встроенная, ноль конфигурации
Минусы Нет конкурентной записи, нет JSONB, нет ARRAY, нет полнотекстового поиска
Драйвер aiosqlite

PostgreSQL

Когда Production, многопользовательское, аналитика
Плюсы ACID, JSONB, ARRAY, full-text search, масштабирование
Минусы Требует установки, настройки, памяти
Драйвер asyncpg

Рекомендация

SQLite для разработки, PostgreSQL для production. Обе БД поддерживаются через SQLAlchemy с минимальными отличиями в моделях.

Что нужно для портабельности

# Вместо PostgreSQL-specific типов используем универсальные:
UUID  String(36)
JSONB  JSON
ARRAY  JSON

[ASK]

  • Какая БД нужна на старте? (рекомендация: SQLite)
  • Когда переходить на PostgreSQL? (перед production)
  • Нужна ли поддержка обеих БД одновременно? (желательно — unit-тесты на SQLite быстрее)