diff --git a/troubleshooting/20251002_db_separation_emotion_data.md b/troubleshooting/20251002_db_separation_emotion_data.md new file mode 100644 index 0000000..a1a1bad --- /dev/null +++ b/troubleshooting/20251002_db_separation_emotion_data.md @@ -0,0 +1,44 @@ +# DB 분리 구조 및 감정 데이터 저장 현황 + +## 발생 일시 +2025-10-02 + +## 현황 +세 개의 분리된 데이터베이스 운영 중 + +### DB 구조 +1. **main_db**: 핵심 데이터 + - user, conversation_log, gmail_token 등 16개 테이블 + - PostgreSQL 일반 DB + +2. **robeing_metrics**: 시계열 메트릭 + - emotion_readings 테이블 (TimescaleDB 하이퍼테이블) + - 감정 데이터 3건 저장 (2025-10-02 12:21~12:27) + +3. **rb8001_db**: rb8001 전용 DB + +### 감정 데이터 저장 확인 +```sql +-- robeing_metrics DB에 저장 +SELECT * FROM emotion_readings; +-- 결과: 3건 (happiness 2건, anger 1건) +``` + +### 문제점 +- conversation_log가 main_db에 있어 시계열 분석 비효율 +- 감정 시스템 구현했지만 실제 대화 flow 미연동 +- DB 간 JOIN 필요 시 성능 이슈 + +### 해결 방안 +1. conversation_log를 robeing_metrics로 이전 +2. user 테이블 주요 컬럼만 robeing_metrics에 읽기 전용 복제 +3. Foreign Data Wrapper로 필요시 크로스 DB 조회 + +### 관련 파일 +- `/home/admin/rb8001/app/state/database.py`: METRICS_DB_URL 환경변수 +- `/home/admin/rb8001/app/router/emotion_endpoint.py`: robeing_metrics 연결 + +## 교훈 +- 용도별 DB 분리는 유지 (성능/백업 전략 차별화) +- 시계열 데이터는 TimescaleDB 사용 +- 자주 조인하는 데이터는 복제 고려 \ No newline at end of file