Files
samreshu_docs/architecture/decisions/004-postgresql.md
Anton 99cd8ae727 docs: add full project documentation
- 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
2026-03-04 12:07:17 +03:00

1.5 KiB

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