피드로 돌아가기
Dev.toDatabase
원문 읽기
슬러그 리네이밍을 통한 UNIQUE 제약 조건 유지 및 Soft-delete 구현
Soft-deleting Postgres rows without losing the URL slug
AI 요약
Context
Postgres의 UNIQUE NOT NULL 제약 조건과 Soft-delete 요구사항 간의 충돌 발생. 기존의 Partial Unique Index나 별도 아카이브 테이블 방식은 인덱스 관리 비용 증가 및 쿼리 복잡도 상승이라는 한계를 가짐.
Technical Solution
- 아카이브 처리 시 slug 값 뒤에
Date.now()기반의 타임스탬프를 추가하여 식별자 변경 - 기존 slug의 Namespace를 즉시 해제함으로써 동일한 slug를 가진 새로운 데이터 INSERT 허용
- 복잡한 Partial Index 없이 표준 UNIQUE 제약 조건을 유지하여 스키마 단순화 달성
- 비즈니스 로직 6줄의 코드로 인프라 수준의 제약 사항을 애플리케이션 레이어에서 해결
- revalidatePath 호출을 통한 ISR 캐시 갱신으로 데이터 변경 사항의 즉각적인 반영
- 데이터 삭제 없이 상태값(status='archived') 변경을 통한 원본 데이터 보존 및 복구 가능성 확보
실천 포인트
1. UNIQUE 제약 조건과 Soft-delete 충돌 시 Partial Index 도입 전 리네이밍 전략 검토
2. 타임스탬프 기반 접미사 추가로 분산 환경 내 식별자 충돌 가능성 최소화
3. 복구 로직 설계 시 기존 슬러그 점유 여부에 따른 충돌 처리 전략(예: 409 Conflict 반환) 수립
4. SEO 및 법적 유지 필요성에 따라 404 반환 또는 Tombstone 페이지 제공 여부 결정