1.9 KiB
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 быстрее)