본문 바로가기
개발 관련 강의 정리/10분 테코톡

[10분 테코톡] 👨‍💻히브리의 Sharding, Clustering, Replication 정리

by 코딩개발 2023. 5. 1.
728x90
반응형

Sharding, Clustering, Replication : 데이터베이스를 여러개로 만든다.

 

 

 

Clustering

DB서버가 죽으면 어떻하지?

DB서버를 여러개 만들자!

 

 

1. active - active

스토리지 하나를 공유하기 때문에 병목이 생기 수 있다.

 

장점

    시스템 전체가 정지하는 것을 방지할 수 있다.

    성능 향상

 

단점

    병목되는 상황에 대한 고려 필요

    비용이 비싸다

 

 

2. active - stand by

장점

    stand by를 실제로 운영하지 않아 비용 저렴

 

단점

    Active가 죽었을 때 전환시 시간이 오래 걸린다.(수십 초 ~ 수십 분)

 

 

 

Replication

저장된 데이터가 손실되면 어떻게 하지?

실제 데이터가 저장되는 저장소도 복제하자!

 

단순 백업

Slave에 백업하는 용도로 사용

 

부하 분산

 

 

 

Sharding

데이터가 너무 많아서 검색이 느린데 더 빠르게 할 수 있는 방법은 없을까?

테이블을 나눠서 검색하자!

 

테이블을 row단위로 나누어 Shard에 저장

데이터 검색시 그 데이터가 어느 Shard인지만 알게 되면 검색 자체는 더 빠르게 진행될 수 있다.

 

고려할 사항

1. 분산된 DB에 Data를 어떻게 잘 분산시켜서 저장할 것인가?

2. 분산된 DB에서 Data를 어떻게 읽을 것인가?

 

 

Shard Key

나뉘어진 Shard 중 어떤 Shard를 선택할지 결정하는 키

Shard Key 결정 방식에 따라 Sharding 빙법이 나뉜다.

 

 

1. Hash Sharding

 

장점

    샤드에 수만큼 헤싱을 하면 되기때문에 구현이 간단하다.

 

단점

    샤드가 늘어나면 헤싱 함수 자체가 달라져야 하므로 기존에 저장되던 데이터들에 대한 정확성이 깨지게 되어

    확장성이 떨어진다.

    공간에 대한 효율을 고려하지 않는다.

 

 

2. Dynamic Sharding

장점

    Locator Service에 샤드키만 추가하는 방식으로 개선하여 확장에 유연하다.

 

단점

    데이터 재배치시 Locator Service도 동기화 해야 한다.

    나머지 Shard들이 Locator에 의존적이라 Locator에 문제가 생기면 DB에도 문제가 생긴다.

 

 

3. Entity Group

장점

    단일 Shard 내에서 쿼리가 효율적이다.

    단일 Shard 내에서 강한 응집도를 가진다.

 

단점

    다른 Shard의 Entity 와 연관이 되는 경우 비효율적이다.


참고

https://www.youtube.com/watch?v=y42TXZKFfqQ&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9C%ED%85%8C%ED%81%AC

 

 

 

 

 

 

 

 

728x90
반응형

댓글