-
[테코톡] DB Replication 3, Clustering, ShardingDB/DB 2023. 3. 10. 04:06
---
https://youtu.be/NPVJQz_YF2A - 엔지, 자막
https://youtu.be/95bnLnIxyWI - 영이, 자막
https://youtu.be/y42TXZKFfqQ - 히브리 클러스터링 샤딩 레플리케이션
---
https://youtu.be/y42TXZKFfqQ - 히브리 클러스터링 샤딩 레플리케이션
단어들이 여러분야에서 사용되고 있지만, 여기선 DB관련해서만
---
공통점은 저건데
목적이 다르고, 요소들이 다르다
---
데이터베이스는
요청을 처리하는 Server와
데이터가 저장되는 storage가 있다
이걸 베이스로 생각할 것이다 ▽아 이렇게 생각해야 되는구나
---
먼저 Clustering
이게 나오게 된 배경이 DB서버가 죽으면 어떡하지?인데, 가장 먼저 생각할 수 있는게 여러개로 만들자야
---
먼저 Active-Active Clustering
서버를 여러개로 구성
Active : 실제로 동작하는 상태
하나가 죽더라도 다른 하나가 역할을 할 수 있다.
서버의 중단없이 서비스가 계속 될 수 있고, 서버 두대가 운영되기 때문에 CPU, 메모리를 더 많이 사용할 수 있다
단점은 스토리지 하나를 공유하기 때문에 병목이 생길 수 있다. 두가지를 운영하기 때문에 비용적 측면이 있다
---
Active - Standby
Active에 문제가 생겼을 때 전환
전환하는데 시간이 걸림
active-active에 비해 비용 절감
---
다음 Replication
이게 나오게 된 배경은
서버가 죽은건 클러스터링으로 해결
근데 스토리지는 하나이기 때문에 그걸 해결하기 위해서
---
기본적인 Replication구성, 백업용
더 나아가서 레플리카를 그냥 백업용으로만 놔두기엔 아까우니 select용으로 부하분산
---
Sharding
데이터가 쌓이면
검색을 빠르게 하는건 여러 방법이 있는데, Sharding은 테이블을 나누는 것
---
샤딩은 테이블을 row단위로 나눠서 각각의 Shard에 저장하는 것
데이터를 검색할 때 그 데이터가 어느 샤드에 있는지 알게 되면 검색자체는 더 빠르게 진행됨
---
Sharding 테이블을 구성할 때 고려할 사항
어떻게 잘 분산?
어떻게 읽음?
---
고려할 때 나오는게 Shard Key
---
Hash Sharding
Shard 0,1,2,3이 Shard Key다. 이걸 결정하는데 Hash 함수를 사용한다
구현 자체가 샤드의 수만큼 해싱을 하면 되기 때문에 구현이 간단 ▽그쪽으로 가면 비슷한 애들끼리 있네요 나중에 찾을 때 좋겠어 아 이 특성은 저기 몰려있어요~ 이런식
근데 샤드가 늘어나면 해시 함수가 달라져야해. 기존에 저장되던 데이터들에 정합성이 깨짐
단순히 키를 고려해서 데이터를 나눠서 공간의 효율성을 고려하지 않는다(▽한쪽으로 쏠린단 말이겠지)
---
확장성을 해결하기 위해 나온 방법 Dynamic Sharding
Locator service라는 테이블 형식의 구성요소를 갖고 Shard Key를 결정하는 방식
이러면 Shard가 하나 더 추가된다고 해도 Locator service Shard Key만 추가하면 됨
단점으로 Locator service에 Shard들이 종속적이라 Locator service에 문제가 생길 때 샤드 전부 다 문제가 생긴다
---
Entity Group
앞의 1번 2번은 RDB보단 No-SQL에 더 적합한 Sharding방식이야
Entity Group은 관계가 돼 있는 Entity끼리 같은 Shard내에 공유하도록 만드는 방식
User가 작성한 Posts나 Comments를 같은 Shard내에서 갖고 있도록 구성
다른 Shard끼리도 연관되는 쿼리가 있을 수 있는데 그럴 땐 실행 효율이 오히려 떨어져
---
현재 상황에 맞게 잘 선택하기
Sharding같은 경우에는 복잡성이 매우 높아져서 캐시같은 방법을 통해서 성능 향상을 먼저 생각해보고 마지막 방법으로 선택하는 것이 좋아보인다
'DB > DB' 카테고리의 다른 글
[테코톡] DB Index 2, MySQL 인덱스와 실행계획 (0) 2023.05.20 [테코톡] DB Index 1 (0) 2023.05.18 [테코톡] DB Replication 2 (0) 2023.03.08 [테코톡] DB Replication 1, GTID, Statement&Row (0) 2023.03.07 [테코톡] MySQL 아키텍처 2, 참고 자료, 쿼리 실행 과정, 클러스터링, MVCC, Undo log, Redo log&commit, index lock, 풀스캔PK인덱스, 복합인덱스, 더티페이지, adaptive hash index (0) 2023.02.12