- Architecture: overview, 7 ADR, tech stack - Principles: code-style, git-workflow, security - API contracts: auth, profile, tests, admin endpoints - Database schema: tables, relationships, indexes - LLM strategy: prompts, fallback, validation, Qwen 2.5 14B - Onboarding: setup, Docker, .env template - Progress: roadmap, changelog - Agents: context, backend instructions Made-with: Cursor
31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
# ADR-004: PostgreSQL как основная база данных
|
|
|
|
## Статус
|
|
|
|
Принято
|
|
|
|
## Контекст
|
|
|
|
Нужна реляционная база данных для хранения пользователей, тестов, вопросов, подписок, платежей.
|
|
|
|
## Варианты
|
|
|
|
1. **PostgreSQL** — зрелая, надёжная, JSONB для полуструктурированных данных, full-text search, расширяемость.
|
|
2. **MySQL/MariaDB** — популярна, но слабее в поддержке JSON, CTE, оконных функций.
|
|
3. **SQLite** — для маленьких проектов, не подходит для конкурентного доступа в prod.
|
|
|
|
## Решение
|
|
|
|
PostgreSQL.
|
|
|
|
- JSONB пригодится для хранения вариантов ответов и метаданных LLM
|
|
- Полнотекстовый поиск по банку вопросов без внешних зависимостей
|
|
- Поддерживается всеми хостингами и облачными провайдерами
|
|
- Drizzle ORM имеет лучшую поддержку именно для PostgreSQL
|
|
|
|
## Последствия
|
|
|
|
- Локальная разработка через Docker (PostgreSQL в контейнере)
|
|
- Миграции управляются через `drizzle-kit`
|
|
- Бэкапы и восстановление — стандартные инструменты pg_dump/pg_restore
|