목차
Dababase Sharding 이란?
DB에 데이터가 늘어나면 용량 이슈와 함께 성능이 저하되고 DB 시스템 전체에 문제가 생길 가능성이 높아지게 된다. 이를 방지하기 위해 여러 DB 분산처리 기법이 있는데, 그 중 Sharding 기법에 대해 알아보려고 한다.
Sharding은 같은 테이블 스키마를 가진 데이터들을 다수의 DB에 분산하여 저장하는 Horizontal Partitioning 방법으로 해당 테이블의 인덱스 크기를 줄이고, 작업 동시성을 늘리는 방법이다.
다만 DB Sharding을 적용하면 프로그래밍 복잡도 및 운영 복잡도가 높아지기 때문에 다른 분산처리 방법을 먼저 고려한 후 대규모의 빅데이터 관리의 경우에만 사용하는 것이 좋다고 한다. 선고려할 분산처리 방법에는 다음 방법들이 있다.
다른 DB 분산 처리 방법
- 물리적 Scailing : DB 서버 및 Storage를 물리적으로 Scaling 한다. (=Scale Up)
- Cache & DB Replication 적용 : Read가 많은 시스템일 경우 Cache 및 DB Replication 방법을 적용한다.
- (DB Replication : DBMS를 Master/Slave 구조로 나누어, Master DB는 Insert, Update, Delete 기능을 수행하고, Slave DB는 실제 데이터를 복사하여 Select 문을 수행한다.)
- Master(DB1) - insert, update, delete 수행
- Slave(IRDB) - select 전용 db
- Vertical Partitioning : Table의 일부 컬럼만을 자주 사용할 경우.
- Hot & Cold Data 분리 : 사진, 동영상, 메일 등 보관 기간은 길지만 자주 접근하여 사용하지 않는 Cold 데이터는 별도의 DB로 분리한다.
- Hash Sharding : Shard Key를 Hashing 한 결과로 DB를 선택한다. Hash 방법으로 Modular 연산 등이 있으며, 데이터 형태에 따라 Hash 함수를 잘 설계하는 것이 필요하다.
주로 데이터량이 일정 수준에서 유지될 것으로 예상될 때 적용한다.
장점 | 단점 |
|
|
Dynamic (Range Based) Sharding
Local Service를 이용해 Shard Key를 특정 범위 기준으로 분할한다. 데이터의 트래픽에 따라 기준을 동적으로 변경할 수 있다.
장점 | 단점 |
|
|
Entity Group
테이블이 Key-Value 관계가 아닌 다양한 객체로 구성되어 있는 경우, 일정 관계에 있는 Entity들을 같은 Shard 내에 구성한다.
장점 | 단점 |
|
|
참고
출처: https://seongyun-dev.tistory.com/8 [이거슨무슨블로그]
'Back-end > DB' 카테고리의 다른 글
[DB] 결합 인덱싱 (0) | 2022.05.14 |
---|---|
인덱스(Index) 란? (0) | 2022.05.05 |
인덱스 란? *** (0) | 2022.02.18 |