- 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
1.5 KiB
1.5 KiB
ADR-004: PostgreSQL как основная база данных
Статус
Принято
Контекст
Нужна реляционная база данных для хранения пользователей, тестов, вопросов, подписок, платежей.
Варианты
- PostgreSQL — зрелая, надёжная, JSONB для полуструктурированных данных, full-text search, расширяемость.
- MySQL/MariaDB — популярна, но слабее в поддержке JSON, CTE, оконных функций.
- SQLite — для маленьких проектов, не подходит для конкурентного доступа в prod.
Решение
PostgreSQL.
- JSONB пригодится для хранения вариантов ответов и метаданных LLM
- Полнотекстовый поиск по банку вопросов без внешних зависимостей
- Поддерживается всеми хостингами и облачными провайдерами
- Drizzle ORM имеет лучшую поддержку именно для PostgreSQL
Последствия
- Локальная разработка через Docker (PostgreSQL в контейнере)
- Миграции управляются через
drizzle-kit - Бэкапы и восстановление — стандартные инструменты pg_dump/pg_restore