SQL 사용 시 주의사항: 클라이언트 요구사항 불확실 시 NoSQL 선택이 유리
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
데이터 분석
대상자
- 대상자: 클라이언트 요구사항이 불확실한 프로젝트에 참여하는 소프트웨어 개발자
- 난이도: 중급 이상 (데이터베이스 선택 및 도구 사용 경험 필요)
핵심 요약
- SQL 사용 자제: 클라이언트 요구사항이 불안정할 경우, SQL 대신 NoSQL(예: Firestore) 사용이 권장
- Firestore의 장점: 스키마 변경 없이 유연한 데이터 처리, MVP 개발 시 속도 우선
- SQL 필요 시 대안: Supabase(PostgreSQL 기반 SQL 도구) 또는 Prisma/Knex.js 등 이전 가능한 마이그레이션 도구 사용
섹션별 세부 요약
- SQL 사용 자제 이유
- 스키마 변경 시 수동 마이그레이션 필요 → 오류 발생 가능성 증가
- 의사소통 오류 → 데이터 손상 또는 관계 파손
- 예시: "크레용으로 그린 설계도로 고층 건물을 짓는 것"
- Firestore의 유연성
- 스키마 없는 데이터 저장 → 테이블 변경 없이 새로운 필드 추가 가능
- 중첩 데이터 지원 → 사용자 프로필 + 설정 + 댓글 서브컬렉션 처리 가능
- MVP 개발 시 속도 우선 → 클라이언트 요구사항 변경 시 DB 로직 재작성 필요 없음
- SQL이 필요한 경우 대안 도구
- Supabase:
- PostgreSQL 기반 SQL 도구 → Firebase 유사한 개발자 경험 제공
- Git 기반 마이그레이션 관리, 자동 API 생성, 웹 UI 기반 스키마 관리
- Prisma/Knex.js:
- 타입 안전한 스키마 정의, 성숙한 마이그레이션 엔진
- Atlas by Ariga: CI/CD에 적합한 마이그레이션 흐름 제공
- 도구 선택 기준
- Firestore: 요구사항 불확실 또는 MVP 개발 시
- Supabase: SQL 필요 시 NoSQL 유연성 필요 시
- Prisma/Knex.js/Atlas: 원시 SQL 사용 강제 시 마이그레이션 관리 필요 시
결론
- 프로젝트 현실에 맞는 도구 선택이 핵심 → 클라이언트 요구사항 불확실 시 Firestore 사용, SQL이 필요할 경우 Supabase를 고려하며, 마이그레이션 도구(Prisma, Knex.js 등)는 원시 SQL 사용 시 필수적.