분산 데이터베이스는 하나의 데이터베이스 관리 시스템(DBMS, Database Management System)이다.
투명한 분산
분산 데이터베이스를 사용할 때는 마치 하나의 데이터베이스를 사용하는 것처럼 CRUD 작업을 수행할 수 있어야 하다.
따라서 분산 데이터베이스를 구현할 때는 하나처럼 사용하되, 실제로는 분산된 형태를 가질 수 있도록 해야하므로 구현 방법이 복잡하다.
투명한 트랜잭션
각 트랜잭션은 다중 데이터베이스에 걸쳐 일관성을 보장해야 한다.
트랜잭션은 일반적으로 여러 하위 트랜잭션으로 분리된 개별 서브 트랜잭션이 하나의 데이터베이스에 대응한다.
데이터베이스를 물리적으로 여러 개로 만들고 관리하기 위한 기술을 대표적으로 3가지 기술이 있다.
서버를 여러 개로 만들어 데이터베이스 서버가 죽을 때를 대비한다.
장점:
단점:
데이터베이스 스토리지도 여러 개로 만들어 저장된 데이터 손실을 방지한다.(뜻 그대로 복제한다고 생각)
장점:
단점:
같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법을 의미한다. (테이블을 나눠서 저장)
테이블을 로우 단위로 나눠서 각각의 샤드로 저장한다.
장점:
단점:
데이터를 보다 잘 분산시키는 것이 중요하다. 이를 위해 Shard key를 통해 나눠진 샤드 중 어떤 샤드를 결정할지에 대해 정한다.
Shard Key : Database id를 Hashing 하여 결정한다.
Hash크기는 Cluster안에 있는 Node개수로 정하게 된다.
장점:
단점:
Locator service라는 테이블 구성 요소를 통해 Shard key를 구성합니다.
장점:
단점:
Key-Value가 아닌 다양한 객체들로 구성되면 RDBMS의 join, index, transaction을 사용함으로써 Application의 복잡도를 줄이는 효과를 줄 수 있다. 이와 유사한 방법으로 Sharding하는 방법이 Entity Group입니다.
Hash Sharding과 Dynamic Sharding은 Key-Value 형태를 지원하기 위해 나온 방법이다.
장점:
단점:
장점 | 단점 |
---|---|
시스템의 가용성 확보 | 트랜잭션에 대한 처리 알고리즘이 복잡 |
지역 업무에 특화된 서비스 제공 | 관리가 복잡하여 비용 증대 |
시스템 확장 및 적응성 | 통신망 장애 시 부가 적 피해 가능성 |
장애에 대한 신뢰성 증진 | 잠재적 오류 내재 가능성 |
지역별 자원 활용 및 확장성 용이 | 설계 및 구현의 어려움 |
모든 블록체인은 분산 원장 또는 분산 데이터베이라고 할 수 있지만, 반대의 명제는 성립되지 않는다.
분산 데이터베이스 | 블록체인(퍼블릭 블록체인) |
---|---|
일반적으로 재해 복구, 백업, 성능상의 이점만을 고려한 시스템 | 악의적인 사용자를 전제하고 만들어진 시스템(합의 알고리즘) |
분산 데이터베이스는 특정 기업, 단체에 종속되기 때문에 정책, 규칙에 따라 언제든지 서비스가 중단될 수 있다. | 운영하는 주체가 존재하지만, 탈중앙화 되어 있기 때문에 해당 주체가 떠나가도 나머지 피어들에 의해서 운영될 수 있다(거버넌스) |