본문 바로가기
블록체인/블록체인

분산 데이터 베이스란?

by 제이제이_은재 2022. 6. 16.
반응형

 

💡분산 데이터베이스

 

분산 데이터베이스는 하나의 데이터베이스 관리 시스템으로 여러 CPU에 연결된 저장장치들을 제어하는 형태의 데이터베이스이다. 물리적으로는 여러 위치에 분산 저장하고 흩어져 있는 시스템이지만, 논리적으로는 하나인 것처럼 활용한다는 것이 핵심 개념이다. 즉, 데이터베이스에 접근하는 유저 입장에서는 마치 하나의 데이터베이스에 접근하는 듯한 경험을 제공 받는다. 물리적으로 떨어져있는 저장소, 즉 노드들은 네트워크를 통해 연결되며, 투명성 확보가 가장 중요하다.

 

목표로 하는 투명성은 총 6가지이다.

종류 내용 특징
병행 다수의 트랜잭션 수행 시 결과가 일관성 유지 자원처리 양 및 속도 개선
장애 장애 발생이 All or Nothing 유지 (원자성 유지) 데이터 일관성
지역사상 개별 지역의 물리적 이름과 관계없이 접근 가능 확장성 확보
위치 데이터를 물리적 저장 위치가 아닌 논리적 입장에서 접근 생산성, 활용성 강화
중복 데이터를 지역별로 중복 저장하여도 데이터 처리 가능 병목현상 해소
분할 물리적 구조가 여러 단편으로 분할 저장되어 논리적 사용 성능향상

 

 

💡분산 데이터베이스의 대표적 기술

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

 

✓ 클러스터링

배경: 데이터베이스 서버가 죽으면 어떻게 할까? -> 서버를 여러 개로 만들자.

 

 

* 장점

1) 데이터베이스 서버 하나가 죽어도 다른 서버가 역할을 대신할 수 있어서 지속 서비스 제공 가능

2) 서버가 여러 대이기 때문에 성능적으로 유리함

 

* 단점

1) 데이터베이스는 1개 이기에 병목이 생길 수 있음

2) 서버 여러 대를 동시에 운영해야 하기 때문에 비용이 많이 들어감

 

 

✓ 레플리케이션

배경: 저장된 데이터가 손실되면 어떻게 할까? -> 데이터베이스 스토리지도 여러 개로 하자.

 

* 장점

1) 데이터베이스 Read(Select) 성능을 높일 수 있음.

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

 

* 단점

1) 각 노드 간의 데이터 동기화 보장이 어려움.

2) Master 노드가 다운되면 복구 및 대처가 어려움.

 

✓ 샤딩

배경: 데이터가 너무 많아서 검색 성능이 좋지 않은데 이를 더 빠르게 못할까? -> 테이블을 나누어서 저장하자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* 장점

1) 서버의 수평적 확장이 가능함

2) 스캔 범위를 줄여주기 때문에 쿼리 반응 속도가 빨라짐.

 

* 단점

1) 데이터를 적절히 분리하지 못하면 오히려 샤딩 전보다 비효율적일 수 있음.

2) 한 번 분할되면 이전으로 다시 합치기 어려움.

 

이때, 데이터를 보다 잘 분산시키는 것이 중요한데, 이를 위해 Shared key를 통해 나눠진 샤드 중 어떤 샤드를 결정할지에 대해 정한다. 해당 shared key 결정 방식에 따라서 샤딩 방법 역시 나뉘게 된다.

 

1. 해시 샤딩

샤드의 수만큼 해싱

 

장점: 구현이 간담함.

단점: 샤드가 늘어나면 해시 함수가 달라져야 하기 때문에 확장성이 떨어짐, 단순히 해시함수를 통해 나누기에 각 샤드별 공간에 대한 효율을 고려하지 않음.

 

2. 다이나믹 샤딩

Locator service 라는 테이블 구성 요소를 통해 Shared key 구성

 

장점: 샤드가 하나 더 추가되면 Locator Service에 Shared key 를 추가하는 방식으로 확장성 유연함.

단점: 데이터를 재배치 시 Locator serrvice 역시 동기화 요구됨

 

3. 엔티티 그룹 샤딩

관계되어 있는 엔티티끼리 같은 샤드 내에 공유

 

장점: 단일 샤드 내에서 쿼리가 효율적, 단일 샤드 내에서 강한 응지도 가짐.

단점: 다른 샤드의 엔티티와 연관이 되는 쿼리의 경우 실행 효율 떨어짐.

 

💡분산 데이터베이스의 장단점

 

✓ 분산 데이터베이스의 두 가지 특징

* 투명한 분산

분산 데이터를 사용할 때는 마치 하나의 데이터베이스를 사용하는 것처럼 CRUD 작업을 수행할 수 있어야 한다. 따라서 분산 데이터베이스를 구현할 때는 하나처럼 사용하되, 실제로는 분산된 형태를 가질 수 있도록 해야하기 때문에 구현 방법이 복잡하다.

 

* 투명한 트랜잭션

각 트랜잭션은 다중 데이터베이스에 걸쳐 일관성을 보장해야 한다. 트랜잭션은 일반적으로 여러 하위 트랜잭션으로 분리된 개별 서브 트랜잭션이 하나의 데이터 베이스에 대응한다.

 

장점 단점
시스템의 가용성 확보 트랜잭션에 대한 처리 알고리즘이 복잡
지역업무에 특화된 서비스 제공 관리가 복잡하여 비용 증대
시스템 확장 및 적응성 통신망 장애 시 부가적 피해 가능성
장애에 대한 신뢰성 증진 잠재적 오류 내재 가능성
지역별 자원 활용 및 확장성 용이 설계 및 구현의 어려움

 

반응형

댓글