본문 바로가기
Security & IT terms

[Day 88] Database Sharding (데이터베이스 샤딩)

by minimalist_2022 2020. 11. 6.

Database sharding

  • 하나의 거대한 데이터베이스 테이블을 수평 분할(Horizontal Partitioning)하여 여러 개의 작은 단위로 나눈 후, 물리적으로 다른 위치에 분산하여 저장·관리하는 기술
  • 수평 분할된 1개의 작은 테이블을 샤드(Shard)라고 하는데, 이 샤드를 여러 분산 서버에 분산시킴

 

Sharding의 장점

  • 처리 속도 향상 : 초당 트랜잭션 수를 크게 늘려 DB쿼리 응답시간 개선
  • 비용 절감 : 원래 데이터베이스는 고사양의 컴퓨터가 필요한데, 데이터 샤드는 여러 서버에 분산할 수 있어서 유지비용이 저렴하고 HW,SW 요구사항 제한이 거의 없음
  • 보안 강화 : 사용자별로 특정 데이터 영역에 대해 좀 더 세분화된 접근통제 가능

 

Sharding의 문제점

  • 가용성 : 특정 지점에서 샤드가 오프라인 상태가 되면, 시스템 상태가 모든 샤드에 복제되지 않음
  • 거래 검증 : 샤딩을 사용하면 잠재적으로 나쁜 행위자가 입력은 같지만 출력은 다른 두 개의 입력으로 추가 트랜잭션을 만들어 이중 지출 트랜잭션을 만들 수 있는 가능성이 있음
  • 크로스 샤드 통신  : 판매자가 트랜잭션을 생성하면, 개별 샤드에서 거래가 확인되고, 남은 고객 잔액에 대한 정보는 반드시 샤드와 공유해야 함. 서로 다른 샤드가 두 계정을 처리하는 경우, 빈번한 크로스 샤드 통신 및 상태 교환이 필요하므로 성능이 저하될 수 있음

※ 출처

http://wiki.hash.kr/index.php/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EC%83%A4%EB%94%A9

https://jibrel.network/ko/blog/blockchain/sharding/