데이터베이스¶
데이터를 어디에 두느냐는 "어떤 기술을 쓰느냐"만큼이나 제품 설계를 좌우해요. 데이터스케쳐스는 DB를 하나로 통일하지 않고, 데이터의 특성에 따라 저장소를 나눠 쓰는 폴리글랏 데이터베이스 접근을 택했어요. 이 페이지가 그 데이터베이스 카테고리의 허브로, PostgreSQL·MongoDB·Redis를 중심으로 각 저장소가 맡은 역할을 보여줍니다.
개요¶
데이터를 나누는 기준은 사실 단순해요.
- 정합성이 중요한가? 사용자·구독·권한처럼 되돌릴 수 없는 변경이면 관계형(PostgreSQL)이죠.
- 구조가 자유로운가? 노트·캔버스처럼 형태가 수시로 바뀌면 문서형(MongoDB)이 어울려요.
- 빨리 읽고 써야 하나? 세션·캐시·큐처럼 즉답이 필요하면 인메모리(Redis)가 제격이에요.
세 요구가 한 테이블에 섞이진 않으니, 저장소도 역할에 맞게 나눠 쓰는 게 자연스러워요.
기술 목록¶
관계형 / 주 저장소¶
- PostgreSQL (🟢 운영) — 오픈소스 관계형 데이터베이스. 트랜잭션과 JSONb 지원이 두루 갖춰져 있어 멀티테넌트 서비스의 주 저장소로 씁니다. 확장 기능이 풍부해서 핵심 신뢰성이 필요한 곳에 어울려요.
문서형¶
- MongoDB (🔵 적용) — 문서형(NoSQL) 데이터베이스. 스키마가 자유로운 문서를 그대로 저장해서, 노트·캔버스처럼 형태가 자주 바뀌는 콘텐츠에 도입하고 있어요.
인메모리¶
- Redis (🟢 운영) — 인메모리 데이터 저장소. 캐시·세션·큐·rate limit처럼 "빠르게 읽고 쓰는" 역할을 전담합니다. Bull과 함께 쓰면 작업 큐의 백엔드가 되기도 해요.
하위 페이지¶
PostgreSQL은 핵심 원리를 깊게 다루는 챕터로 나뉘어 있어요.
- PostgreSQL (운영) — 관계형 DB의 주요 특징과 우리 사용 방식
- 트랜잭션·ACID·격리 수준 — MVCC와 격리 수준 (공식 문서 번역)
- 인덱스 — B-tree·부분·표현식·GIN 인덱스 (공식 문서 번역)
- JSONB — JSON 문서·쿼리·GIN 인덱스 (공식 문서 번역)
- VACUUM — VACUUM·튜닝·autovacuum (공식 문서 번역)
- MongoDB (적용) — 문서형 데이터베이스와 우리 사용 방식
- 문서 모델·CRUD — 문서 구조·CRUD (공식 문서 번역)
- 집계 파이프라인 — 스테이지로 문서 처리 (공식 문서 번역)
- 인덱스·쿼리 최적화 — 단일·복합·멀티키 인덱스 (공식 문서 번역)
- 복제 셋·고가용성 — 복제·자동 장애 조치 (공식 문서 번역)
- Redis (운영) — 캐시·세션·큐(Bull)와 우리 사용 방식
- 데이터 타입 — STR·LIST·HASH·SET·ZSET (공식 문서 번역)
- 영속화 — RDB·AOF (공식 문서 번역)
- Pub/Sub 메시징 — 발행·구독 (공식 문서 번역)
- 캐시 패턴 — cache-aside·TTL·퇴출 (공식 문서 번역)
더 알아보기¶
- 공식 문서 (1차)
- PostgreSQL — postgresql.org/docs
- MongoDB — mongodb.com/docs
- Redis — redis.io/docs
- 큐레이션/블로그 (2차)
- 폴리글랏 데이터베이스 — martinfowler.com/bliki/PolyglotPersistence.html