Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
# ADR-001: Выбор PostgreSQL как основной СУБД
|
||||
|
||||
**Статус:** принято
|
||||
**Дата:** 2026-05-10
|
||||
|
||||
---
|
||||
|
||||
## Контекст
|
||||
|
||||
Для проекта VoIdea требуется база данных с поддержкой:
|
||||
- Сложных запросов (аналитика идей)
|
||||
- JSONB для гибкости (метаданные, настройки)
|
||||
- ACID транзакции (финансовые операции, подписки)
|
||||
- Масштабируемость (тысячи пользователей)
|
||||
- Хорошая работа с Python (asyncpg)
|
||||
|
||||
Рассматривались:
|
||||
- **PostgreSQL** — реляционная, ACID, JSONB, mature
|
||||
- **MongoDB** — документоориентированная, гибкость, шардинг
|
||||
- **SQLite** — простая, не подходит для production
|
||||
|
||||
---
|
||||
|
||||
## Решение
|
||||
|
||||
**PostgreSQL** выбран как основная СУБД.
|
||||
|
||||
### Обоснование
|
||||
|
||||
| Критерий | PostgreSQL | MongoDB | SQLite |
|
||||
|----------|------------|---------|--------|
|
||||
| ACID | ✅ Полный | ❌ Eventual | ✅ Полный |
|
||||
| JSONB | ✅ Отличный | ✅ Лучший | ❌ Limited |
|
||||
| Масштабируемость | ✅ Хорошая | ✅ Отличная | ❌ Плохая |
|
||||
| Python async | ✅ asyncpg | ✅ motor | ❌ |
|
||||
| Сложные запросы | ✅ Отличные | ❌ Limited | ⚠️ Basic |
|
||||
| Зрелость | ✅ 20+ лет | ⚠️ 15 лет | ✅ |
|
||||
|
||||
### Преимущества для VoIdea
|
||||
|
||||
1. **JSONB** — хранение зашифрованных данных, настроек агентов
|
||||
2. **ACID** — безопасность транзакций (подписки, платежи)
|
||||
3. **Индексы** — поиск по метаданным, пользователям
|
||||
4. **PostGIS** — геолокация (future: автоопределение региона)
|
||||
5. **Full-text search** — поиск в идеях
|
||||
|
||||
---
|
||||
|
||||
## Последствия
|
||||
|
||||
### Положительные
|
||||
|
||||
- Надёжная, проверенная база данных
|
||||
- Отличная производительность
|
||||
- Большое сообщество
|
||||
- Хорошая документация
|
||||
- Mature ORM (SQLAlchemy async)
|
||||
|
||||
### Отрицательные
|
||||
|
||||
- Требует установку и настройку (PostgreSQL server)
|
||||
- Миграции Alembic для схемы
|
||||
- Начальная настройка (создание пользователя, базы)
|
||||
|
||||
### Миграция
|
||||
|
||||
Для локальной разработки:
|
||||
```bash
|
||||
# Windows
|
||||
# Скачать PostgreSQL с postgresql.org/download/windows
|
||||
# или использовать Chocolatey:
|
||||
choco install postgresql
|
||||
|
||||
# Ubuntu (VPS)
|
||||
apt install postgresql postgresql-contrib
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Реализация
|
||||
|
||||
### Конфигурация в .env
|
||||
|
||||
```bash
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_NAME=voidea
|
||||
DB_USER=voidea
|
||||
DB_PASS=your_secure_password
|
||||
```
|
||||
|
||||
### SQLAlchemy async setup
|
||||
|
||||
```python
|
||||
from sqlalchemy.ext.asyncio import create_async_engine
|
||||
|
||||
engine = create_async_engine(
|
||||
f"postgresql+asyncpg://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}",
|
||||
echo=True
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ответственный
|
||||
|
||||
**Decision maker:** Owner
|
||||
**Review date:** При масштабировании (> 10,000 пользователей)
|
||||
|
||||
---
|
||||
|
||||
*Создано: 2026-05-10*
|
||||
*Обновлено при изменениях SpecAgent*
|
||||
Reference in New Issue
Block a user