분산 데이터베이스(Distributed Database)

adc0612·2022년 10월 5일
0

블록체인

목록 보기
3/11

분산 데이터베이스란

분산 데이터베이스는 하나의 데이터베이스 관리 시스템(DBMS, Database Management System)이다.

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

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

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

데이터베이스를 물리적으로 여러 개로 만들고 관리하기 위한 기술을 대표적으로 3가지 기술이 있다.

클러스터링(Clustering)

서버를 여러 개로 만들어 데이터베이스 서버가 죽을 때를 대비한다.

  • Active - Active는 클러스터를 항상 가동하여 서버들을 가용할 수 있는 상태로 두는 구성방식
  • Active - Standby는 일부 클러스터만 가동하고, 나머지는 대기 상태로 두는 구성방식

장점:

  • 데이터베이스 서버 하나가 죽어도 다른 서버가 역할을 대신할 수 있어, 지속적인 서비스 제공이 가능하다.
  • 서버가 여러 대이기 때문에 성능적으로 유리하다.

단점:

  • 데이터베이스는 1개이기에 병목이 생길 수 있다.
  • 서버 여러 대를 동시에 운영해야 하기 때문에 비용이 부담이 된다.

레플리케이션(Replication)

데이터베이스 스토리지도 여러 개로 만들어 저장된 데이터 손실을 방지한다.(뜻 그대로 복제한다고 생각)

  • 단순 백업 데이터베이스 스토리지를 생성
  • 부하 분산 방식으로, Slave에서는 Read만 가능하게 한다.

장점:

  • 데이터베이스 Read(Select) 성능을 높일 수 있다.
  • 비동기 방식으로 운영되어 지연시간이 거의 없다.

단점:

  • 각 노드 간의 데이터 동기화 보장이 어렵다.
  • Master 노드가 다운되면 복구 및 대처가 어렵다.

샤딩(Sharding)

같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법을 의미한다. (테이블을 나눠서 저장)
테이블을 로우 단위로 나눠서 각각의 샤드로 저장한다.

장점:

  • 서버의 수평적 확장(Horizontal Partitioning)이 가능하다.
  • 스캔 범위를 줄여주기 때문에 쿼리 반응 속도가 빨라진다.

단점:

  • 데이터를 적절히 분리하지 못하면 오히려 샤딩 전보다 비효율적일 수 있다.
  • 한 번 분할되면 이전으로 다시 합치기 어렵다.

데이터를 보다 잘 분산시키는 것이 중요하다. 이를 위해 Shard key를 통해 나눠진 샤드 중 어떤 샤드를 결정할지에 대해 정한다.

해시 샤딩(Hash Sharding)

Shard Key : Database id를 Hashing 하여 결정한다.
Hash크기는 Cluster안에 있는 Node개수로 정하게 된다.

장점:

  • 샤드의 수만큼 해싱하면 되기에 구현이 간단합니다.

단점:

  • 샤드가 늘어나면 Hash 크기가 변하게 되고. Hash Key 또한 변하게 되므로 기존 Hash Key에 따라 분배된 데이터 분산 Rule이 어긋나므로, 결국엔 Resharding이 필요하게 된다.
  • 단순히 해시함수를 통해 나누기에 갹 샤드별 공간에 대한 효율을 고려하지 않습니다.

다이나믹 샤딩(Dynamic Sharding)

Locator service라는 테이블 구성 요소를 통해 Shard key를 구성합니다.

장점:

  • 샤드가 늘어나면 Locator service에 Shard key를 추가하는 방식으로 확장성이 유연합니다.

단점:

  • 데이터를 재배치 시 Locator service 역시 동기화가 요구된다.
  • Locator service에 의존적이라 해당 테이블에 문제가 생기면 데이터베이스에도 문제가 전이됩니다.

엔티티 그룹 샤딩(Entity Group Sharding)

Key-Value가 아닌 다양한 객체들로 구성되면 RDBMS의 join, index, transaction을 사용함으로써 Application의 복잡도를 줄이는 효과를 줄 수 있다. 이와 유사한 방법으로 Sharding하는 방법이 Entity Group입니다.

Hash Sharding과 Dynamic Sharding은 Key-Value 형태를 지원하기 위해 나온 방법이다.

장점:

  • 단일 Shard에 쿼리를 진행한다면 효율적이다.
  • 단일 Shard에서 강한 응집도를 가질 수 있다.
  • 데이터는 자연스럽게 사용자별로 분리되어 저장된다.
  • 사용자가 늘어남에 따라 확장성이 좋은 Partitioning이다.

단점:

  • 다른 샤드의 엔티티와 연관이 되는 쿼리의 경우 실행 효율이 떨어집니다.

분산 데이터베이스 장점 & 단점

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

분산 데이터베이스와 블록체인의 차이점

모든 블록체인은 분산 원장 또는 분산 데이터베이라고 할 수 있지만, 반대의 명제는 성립되지 않는다.

분산 데이터베이스블록체인(퍼블릭 블록체인)
일반적으로 재해 복구, 백업, 성능상의 이점만을 고려한 시스템악의적인 사용자를 전제하고 만들어진 시스템(합의 알고리즘)
분산 데이터베이스는 특정 기업, 단체에 종속되기 때문에 정책, 규칙에 따라 언제든지 서비스가 중단될 수 있다.운영하는 주체가 존재하지만, 탈중앙화 되어 있기 때문에 해당 주체가 떠나가도 나머지 피어들에 의해서 운영될 수 있다(거버넌스)

0개의 댓글