ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 샤드란? 데이터베이스 수평 확장의 핵심 개념!
    성장과정(dev)/DB(mysql) 2024. 12. 21. 20:57

    1. 샤드란?

    • 큰 데이터베이스를 다수의 독립적인 작은 데이터베이스(샤드)로 나누어 저장하는 방식
    • 각 샤드는 전체 데이터의 일부를 담당하며, 샤드 간에는 데이터가 중복되지 않음.
    • MongoDB, Cassandra, Elasticsearch 등과 같은 데이터베이스는 샤딩을 기본적으로 지원함.

    "왜 사용하나요?"

    • 수평적 확장성(Horizontal Scaling): 데이터베이스 용량이나 성능을 높이기 위해 여러 노드를 추가하여 분산 처리.
    • 단일 서버의 처리 용량에는 한계가 있기 때문에, 수직적 확장(Vertical Scaling)(서버 업그레이드) 대신 수평적 확장이 선호됨.

    "샤딩을 적용하면 어떤 효과를 누리나요?"

    • 읽기/쓰기 부하 분산.
    • 저장 용량 분산.
    • 단일 장애점(Single Point of Failure) 방지.

     

    2. 샤딩(Sharding)의 핵심 개념

    • 데이터를 특정 기준(사용자 ID, 지역, 시간 등)에 따라 여러 샤드로 분리.
    • 각 샤드는 별도의 서버(또는 노드)에 저장되며, 독립적으로 읽기/쓰기 작업을 처리.
    • 샤드 간 데이터 중복이 없으므로 스토리지와 부하를 분산할 수 있음.

     

    3. 구현 방법 3가지 (무엇을 기반으로 샤딩?)

    1. 범위 기반 샤딩(Range-Based Sharding):
      • 데이터를 특정 범위로 나누어 샤드에 할당.
      • 예: 사용자 ID가 1~1000인 데이터는 샤드 A에, 1001~2000은 샤드 B에.
      • 장점: 구현이 간단.
      • 단점: 특정 범위에 데이터가 집중되면 부하 분산이 비효율적.
    2. 해시 기반 샤딩(Hash-Based Sharding):
      • 데이터를 특정 해싱 함수를 사용해 샤드에 분배.
      • 예: hash(userID) % shardCount로 샤드 번호를 결정.
      • 장점: 데이터가 균등하게 분산됨.
      • 단점: 샤드 추가/삭제 시 데이터 재분배가 필요.
    3. 지리적 샤딩(Geo-Based Sharding):
      • 데이터를 지역이나 국가 등 지리적 기준에 따라 분리.
      • 예: 한국 사용자 데이터는 샤드 A, 미국 사용자는 샤드 B.

     

    4. 샤딩의 장단점

    장점

    • 확장성: 데이터를 샤드로 나누어 부하를 분산하므로, 성능과 저장 용량이 대폭 향상
    • 가용성: 특정 샤드에 문제가 생겨도 다른 샤드가 계속 작동.
    • 비용 절감: 고성능 단일 서버 대신 여러 저비용 서버를 사용할 수 있음.

    단점

    • 복잡성 증가: 데이터 분배, 샤드 간 쿼리 처리, 트랜잭션 관리 등이 복잡.
    • 데이터 재분배 문제: 샤드 수가 변경될 때 데이터의 이동이 필요.
    • 샤드 간 조인 어려움: 여러 샤드에 걸친 데이터를 조회하려면 애플리케이션 레벨에서 조인이 필요.

     

     

    5. 샤딩 사용 사례

    • 대규모 애플리케이션에서:
      • Twitter: 사용자 데이터를 ID 기반으로 샤딩. MySQL을 기본 데이터 저장소로 사용하면서, 이를 확장하기 위해 샤딩, 캐싱, 분산 시스템 기술을 결합했습니다.
      • YouTube: 동영상 메타데이터를 해시 기반으로 샤딩.
    • 전자상거래: 제품 데이터나 사용자 데이터를 여러 샤드로 분산.

     

     

    6. 데이터베이스를 나누는 방법 샤드 vs 파티셔닝 비교

    • 샤드: 데이터를 분산하여 여러 독립적인 데이터베이스에 저장.
    • 파티셔닝: 단일 데이터베이스 내에서 데이터를 논리적으로 분리.
Designed by Tistory.