본문 바로가기
Data/DB

[DB] Clustering vs Replication vs Sharding 에 대해 알아보자 | LIM

by forestlim 2023. 3. 12.
728x90
반응형

✨ Clustering

여러 개의 DB 서버를 수평적인 구조로 구축하는 방식이다. 

Clustering 방식에는 다음과 같은 것들이 있다. 

 

Active-Active

- 서버의 중단 없이 서비스 제공 가능

- Storage 공유하기 때문에 병목이 생길 수 있음

- 여러 대의 서버가 운영되기 때문에 CPU 와 메모리 이용률이 올라갈 수 있음

https://www.youtube.com/watch?v=y42TXZKFfqQ&list=PLo0ta52hn1uHQ5iQ3hAeRoMUeLJFIeRew

 

Active-Standby

- Active 서버에 문제가 생길 경우 Standby 서버가 Active 서버로 전환하는 상태로 운영이 됨

- Stand By 전환 시 시간이 오래 걸릴 수 있다. 

- Active-Active 방식에 비해 비용 절감이 가능하다. 

https://www.youtube.com/watch?v=y42TXZKFfqQ&list=PLo0ta52hn1uHQ5iQ3hAeRoMUeLJFIeRew

 


 

✨ Replication

여러 개의 DB를 수직적인 구조(Primary-Secondary) 로 구축하는 방식이다. DB 서버 뿐 아니라 DB storage 도 여러개 만드는 방식이다. 

Primary 는 쓰기 작업만을 처리, Secondary 는 Read 용도로만 사용해서 부하를 분산시키기도 한다. 

 

장점으로는 

- DB 요청의 대부분이 Read 이기 때문에 성능 상 이점이 있다.

- 비동기 방식으로 운영되어 지연 시간이 거의 없다. 

 

단점으로는

- 노드들 간의 데이터 동기화가 보장되지 않아 일관성 있는 데이터를 얻지 못할 수 있다는 것이다. 

- Primary 노드가 다운되면 복구 및 대처가 까다롭다. 

 

https://www.youtube.com/watch?v=y42TXZKFfqQ&list=PLo0ta52hn1uHQ5iQ3hAeRoMUeLJFIeRew

 


✨ Sharding

테이블에 데이터 자체가 엄청나게 많을 경우, 위 Replication 에서 구성한 Slave DB가 N대가 되더라도 원하는 데이터를 테이블로부터 찾는데 많은 시간이 소요될 수 있다. 그때 필요한 게 Sharding 이다. 데이터를 어떻게 잘 분산해서 저장할까에 대한 개념이다. 

 

샤딩은 수평 파티셔닝의 특수한 형태이다. 테이블을 Row 로 나눠서 Shard 로 분배한 것이다. 

샤딩은 여러 서버에 스키마가 복제된다. 데이터는 Shard Key 를 기준으로 여러 노드들에 나누어 저장된다. 

Shard Key 알고리즘에 따라 여러 Sharding 이 있을 수 있다. 

 

1. Hash Sharding

- 구현 자체가 간단하다.

- DB 서버가 추가 될 경우 해시 함수가 변경되어야 하므로 기존에 저장되던 데이터들의 정합성이 깨지게 됨 -> 확장성이 떨어짐

- 공간에 대한 효율성 고려가 안 됨

 

2. Dynamic Sharding 

- 위 Hash Sharding 에서 확장성 해결하기 위해 나옴

- Locator Service 사용
  (Location Service 는 테이블 형식의 데이터를 바탕으로 샤드를 결정해서 적절히 저장하는 방식을 말한다.)

- 해시 샤딩과 달리 단순 키만 추가해주면 되기 때문에 확장성이 쉽다.

- Locator Service 에 종속적이기 때문에 Locator Service 에 문제가 생기면 나머지 샤드 또한 문제가 발생한다.
  (Single Point Of Failure)

 

3. Entity Group 

- 1번과 2번 방식은 nosql 에 좀 더 적합한 샤딩 방식

- Entity Group 의 경우 Rdbms 에 적합

- 관계가 되어 있는 entity 끼리 같은 샤드 내에 공유하도록 만드는 방식

- user 가 작성한 post, comment 같은 샤드 내에 위치하도록 함

- 다른 샤드내에 데이터 조회할 경우 데이터 조회 성능이 떨어질 수 있음

 

 

 

728x90
반응형

댓글