🌿 중급 DB
샤딩(Sharding)이 뭔가요?
쉽게 이해하기
도서관 책이 너무 많아지면 한 건물에 다 넣을 수 없잖아요. 그래서 지역별로 여러 도서관을 만들고, A~M으로 시작하는 책은 1관, N~Z는 2관에 두는 식으로 나누는 거예요. 샤딩도 데이터를 기준에 따라 여러 DB에 나눠 저장하는 방식입니다.
핵심 정리
데이터를 여러 데이터베이스에 나눠서 저장해 성능과 확장성을 높이는 기법이에요.
자세히 알아보기
샤딩은 데이터베이스를 수평으로 나누는 기법이에요. 하나의 거대한 테이블을 여러 데이터베이스 서버에 분산 저장해서, 각 서버가 일부 데이터만 담당하게 만듭니다. 예를 들어, 사용자 ID를 기준으로 1~1000번은 DB1, 1001~2000번은 DB2에 저장하는 식이죠.
샤딩을 하는 이유는 데이터가 너무 많아지면 한 서버로는 처리 속도가 느려지고, 저장 용량도 부족해지기 때문이에요. 트위터나 인스타그램처럼 사용자가 수억 명인 서비스는 샤딩 없이는 운영이 불가능합니다.
하지만 샤딩은 구현이 복잡해요. 어떤 기준으로 나눌지(사용자 ID, 지역, 날짜 등) 결정해야 하고, 여러 샤드에 걸친 조회는 어려워집니다. 또, 한 샤드에 데이터가 몰리면 불균형이 생길 수 있어요.
실무에서는 샤딩을 도입하기 전에 인덱스 최적화, 캐싱, 읽기 전용 복제본 추가 등 다른 방법을 먼저 시도하고, 정말 필요할 때만 샤딩을 적용합니다.