6.db

5부: DB 무림

한 번 선택하면 갈아타기 제일 힘든 파트


DB 무림은 특이하게 한 번 선택하면 갈아타기가 제일 힘든 파트야. 무공을 바꾸는 게 아니라 집을 바꾸는 거라서. 데이터 마이그레이션이라는 대공사를 해야 하거든.


DB

🐘 정통 내공의 무림 원로

PostgreSQL

내공★★★★★
수련접근성★★★☆☆
실전력★★★★★
인지도★★★★★

기본기가 제일 강하다.

ACID, 트랜잭션, 복잡한 쿼리, JSON 지원까지. 없는 게 없어. "DB가 뭔지 제대로 배우고 싶다"면 여기서 시작하는 게 맞아. 개발자들 사이에서 진지하게 DB를 논할 때 PostgreSQL 쓴다고 하면 일단 존중받아.


DB

🐬 국민 무인

MySQL

내공★★★☆☆
수련접근성★★☆☆☆
실전력★★★★
인지도★★★★★

강한 게 아니라 많은 겁니다. 근데 많은 게 강한 거 아닌가요?

전 세계에서 제일 많이 깔려있는 DB야. WordPress, 레거시 PHP 프로젝트, 수많은 호스팅 서비스의 기본값이거든. 특출난 게 없는데 어디서나 만나. 욕을 많이 먹는데 그만큼 많이 쓰이는 거야.


DB

🍃 혁명을 꿈꿨던 이단아

MongoDB

내공★★★☆☆
수련접근성★★☆☆☆
실전력★★★☆☆
인지도★★★☆☆

나는 모든 걸 바꾸러 왔다. — 10년 후: ...저도 이제 트랜잭션 지원합니다.

"SQL이 낡았다, NoSQL이 미래다"를 외치며 혜성처럼 등장했어. 스키마 없이 자유롭게 JSON 저장한다는 게 당시엔 혁명적이었거든. 근데 트랜잭션, 관계 데이터, 복잡한 쿼리를 다루다 보면... 결국 SQL이 왜 그렇게 설계됐는지 이해하게 돼.

지금은 진짜 비정형 데이터가 많은 특수한 경우에 쓰는 게 맞다는 공감대가 생겼어.

MongoDB의 교훈

MongoDB의 등장과 성찰은 무림에 중요한 교훈을 남겼어. "기존 체계가 복잡하다"는 이유만으로 다 갈아엎으면, 결국 그 복잡함이 왜 존재했는지 깨닫게 된다는 거야. NoSQL은 은탄환이 아니었어.


DB

⚡ 기문둔갑의 고수

Redis

내공★★★★
수련접근성★★☆☆☆
실전력★★★★★
인지도★★★★★

나는 주인공은 아니에요. 근데 나 없으면 다들 느려집니다.

DB라고 부르기엔 좀 다른 존재야. 메모리에 올라가는 초고속 key-value 저장소인데, 캐싱, 세션, 큐, pub/sub... 혼자 여러 역할을 해. 다른 DB들이 메인 무기라면 Redis는 항상 옆에 들고 다니는 보조 무기야.


DB

🗡️ 작지만 어디에나 있는 자객

SQLite

내공★★☆☆☆
수련접근성☆☆☆☆
실전력★★★★
인지도★★★★

화려하게 살고 싶지 않습니다. 그냥 파일 하나로 충분해요.

서버가 필요 없는 파일 기반 DB야. 모바일 앱, 임베디드, 로컬 개발환경에서 조용히 살아가고 있어. 전 세계에서 제일 많이 배포된 DB가 SQLite라는 사실이 알려지면 다들 놀라거든.


ORM 무림 — DB 위에 얹는 무공

DB 무림엔 DB 자체 말고 그 위에서 싸우는 ORM 문파들도 있어.

DB

🏛️ Java/Kotlin 진영의 원로 ORM

Hibernate / JPA

내공★★★★
수련접근성★★★★
실전력★★★★
인지도★★★★

강력하지만 잘못 쓰면 N+1이라는 함정에 빠진다.

Java/Kotlin 진영의 원로 ORM이야. 강력하지만 다루기 어렵고, 잘못 쓰면 N+1 문제라는 함정에 빠져. 소림사(Spring)와 함께 쓰면 강력하지만, 그만큼 수련 기간이 길어.


DB

⚡ TypeScript 진영의 신예

Drizzle ORM

내공★★★☆☆
수련접근성★★☆☆☆
실전력★★★★
인지도★★★★

SQL에 가깝게, 타입은 안전하게.

SQL에 가까운 DSL로 타입세이프하게 쿼리를 쓰고, drizzle-kit generate로 스키마 변경을 자동으로 감지해서 마이그레이션 SQL을 만들어줘. 가끔 잘못 만들어지는 케이스가 있어서 개발자가 검토는 해야 하는데, 그래도 편해.


DB

💎 TypeScript 진영의 주류 ORM

Prisma

내공★★★☆☆
수련접근성★★☆☆☆
실전력★★★★
인지도★★★★

DX는 최고. 근데 복잡한 쿼리에서 성능이...

DX가 좋고 자동완성이 훌륭한데, 복잡한 쿼리에서 성능이 아쉽다는 평가가 있어.

ORM 논쟁을 한 줄로 요약하면

"SQL 직접 써라" vs "귀찮게 왜 그래" — 영원히 끝나지 않는 논쟁이야 ㅋㅋ

SQL 순수주의자들은 ORM이 성능을 잡아먹는다고 하고, ORM 파는 생산성이 더 중요하다고 해. 정답은... 둘 다 맞아. 상황에 따라 다른 거야.


DB 무림 요약

DB 무림은 보수적인 세계야. 프론트엔드처럼 2년마다 판이 뒤집히지 않아. PostgreSQL이 20년 넘게 왕좌를 지키고 있고, MySQL도 아직 현역이야. 한 번 자리 잡으면 쉽게 안 바뀌는 게 DB 무림의 특징이야.

근데 그만큼 선택이 중요해. 집을 잘못 고르면 이사비용이 어마어마하니까.


4부: 모바일 무림 | 6부: DevOps/인프라 무림