개발하기좋은날

분산 원장 기술의 기초 분산 데이터베이스 본문

BlockChain

분산 원장 기술의 기초 분산 데이터베이스

devbi 2022. 7. 6. 12:39
반응형

분산 데이터베이스란? 

- 하나의 데이터베이스 관리 시스템으로, 여러 CPU에 연결된 저장장치들을 제어하는 형태의 데이터베이스

 

물리적으로 떨어져있고 여러 노드들은 네트워크를 통해 연결됨으로, 투명성 확보가 중요 

 

분산 데이터 베이스의 6가지 투명성

 

분산 데이터 베이스의 대표적인 3가지 기술

  • 클러스터링
  • 레플리케이션
  • 샤딩 

 

클러스터링 

- 데이터 베이스가 서버가 죽으면 어떻게 해야하지?

- 클러스터링은 DB 서버가 죽었을때 가용성을 위해 서버를 여러개로 만드는 방법

- 데이터베이스는 한개이기 떄문에 병목이 존재한다, 비용부담이 크다,  장애 대응에 강하다

- Active-Active 모드, Active-Standby 모드가 있다 

- Active-Active 모드

  • 클러스터링된 서버를 전부 가동하여 항상 장애에 대응할수있게 

- Active-Standby 모드 

  • 클러스터링된 서버중 일부 클러스터만 가동하고 나머지는 대기 

 

레플리케이션

- 저장된 데이터가 손실되면 어떻게할까?

- 레플리케이션은 데이터베이스 스토리지를 여러개로 사용하는 방법이다 

- Master - Slave 구조로 구성 되어있음 

- Slave에 단순 백업만 할수있다 

- Master에서는 Insert, Update, Delete 같은 작업을, Slave는 Read만 하여 부하 분산이 가능하다 

- Master 노드가 죽을시 대응이 힘들며, 각 노드별 동기화 보장이 어렵다

- 부하 분산으로 Read 속도를 높일수있다 

 

샤딩 

- 데이터가 너무 많아서 검색 성능이 좋지않다 더 빠르게 안될까?

- 샤딩은 테이블을 나누어 저장하는 방법이다 

- 서버의 수평적 확장이 가능하며 스캔 범위가 줄어 쿼리 반응속도가 빨라 진다 (테이블이 나뉘어져있기 때문)

- 한번 나누게되면 원본으로 백업이 힘들며 구성을 잘못하게되면 쿼리 속도가 오히려 늦어진다

- Shard Key에 따라 샤딩 방법이 달라진다 

테이블을 로우 단위로 나누어 각각의 샤드로 저장

 

  • 해시 샤딩 

단순 ID 해싱을 통한 샤드를 테이블을 나눈다

 

- 테이블에 ID를 가지고 해싱이후 나누어서 저장 

- 고정적인 ID 계산법을 가지고 있어 공간 활용이 떨어지고 이 부분을 수정하지 못한다 

 

 

  • 다이나믹 샤딩

 

Locator 를 통해서 사용할 샤드를 선택한다

 

- Locator Service를 통해서 나누어져있는 샤드를 이용가능하다 

- Locator Service에는 범위가 지정되어 해당 샤드에 접근하여 이용하기에 의존적이며 수정시 데이터 재배치와 Locator Service또한 바꿔야한다

 

  • 엔티티 샤딩 

 

- 관계 되어 있는 테이블끼리 하나의 샤드에 저장하여 관리 

- 관계 되어있지 않은 다른 샤드와 연관이 있는 쿼리 실행시 오히려 효율이 떨어짐 

반응형
Comments