블록체인 기술(1) - 분산 데이터베이스

dhkim·2022년 7월 4일
0

블록체인 뽀개기

목록 보기
3/22
post-thumbnail
post-custom-banner

분산 데이터베이스란?

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

물리적으로 여러 위치에 분산 저장하고 흩어져 있는 시스템이지만, 논리적으로는 하나인 것처럼 활용

즉 데이터베이스에 접근하는 유저 입장에서는 마치 하나의 데이터베이스에 접근하는 듯한 경험을 제공

물리적으로 떨어져 있는 저장소, 즉 노드들은 네트워크를 통해 연결되며, 투명성 확보가 가장 중요한 화두

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

분할 투명성 : 하나의 논리적 관계가 여러 단편으로 분할되어 각 단편의 사본이 여러 Site에 저장된다.
위치 투명성 : 사용하는 데이터의 저장 장소 명시할 필요 없다. 위치정보는 System Catalog에 유지된다.
지역사상 투명성 : 지역DBMS와 물리적 DB 사이에 Mapping을 보장한다.
중복 투명성 : DB 객체가 여러 site에 중복되어 있는지 알 필요가 없다.
장애 투명성 : 구성요소의 장애에 무관한 Transaction의 원자성 유지
병행 투명성 : 다수 Transaction 동시 수행시 결과의 일관성 유지, Time Stamp, 분산 2단계 Locking 구현

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

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

클러스터링

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

Active-Active는 클러스터를 항상 가동하여 가용할 수 있는 상태로 두는 구성 방식


Active-Standby는 일부 클러스터는 가동하고, 일부 클러스터는 대기 상태로 구성하는 방식

장점:
데이터베이스 서버 하나가 죽어도 다른 서버가 역할을 대신할 수 있어서 지속 서비스 제공 가능
서버가 여러 대이기 때문에 성능적으로 유리
단점:
데이터베이스는 1개이기에 병목이 생길 수 있음
서버 여러 대를 동시에 운영해야 하기 때문에 비용이 많이 들어감

레플리케이션

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

단순 백업 방식


부하 분산 방식

장점:
데이터베이스 Read(select) 성능을 높일 수 있음
비동기 방식으로 운영되어 지연시간이 거의 없음

단점:
각 노드 간의 데이터 동기화 보장이 어려움
Master 노드가 다운되면 복구 및 대처가 어려움

샤딩

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


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

장점:
서버의 수평적 확장이 가능함
스캔 범위를 줄여주기 때문에 쿼리 반응 속도가 빨라짐
단점:
데이터를 적절히 분리하지 못하면 오히려 샤딩 전보다 비효율적일 수 있음
한번 분할되면 이전으로 다시 합치기 어려움

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

1. 해시 샤딩
장점:
구현이 간단함(샤드의 수만큼 해싱)
단점:
샤드가 늘어나면 해시 함수가 달라져야 하기에 확장성이 떨어짐
단순히 해시함수를 통해 나누기에 각 샤드별 공간에 대한 효율을 고려하지 않음

2. 다이나믹 샤딩
장점:
샤드가 하나 더 추가되면 Locator service에 Shard key를 추가하는 방식으로 확장성 유연함
단점:
데이터를 재배치 시 Locator service 역시 동기화 요구됨
Locator service에 의존적이라 해당 테이블에 문제가 생기면 데이터베이스에도 문제가 전이됨

3. 엔티티 그룹 샤딩
장점:
단일 샤드 내에서 쿼리가 효율적
단일 샤드 내에서 강한 응집도 가짐
단점:
다른 샤드의 엔티티와 연관이 되는 쿼리의 경우 실행 효율 떨어짐

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

분산 데이터베이스의 장점
․지역 자치성이 높음
․자료의 공유성이 향상됨
․분산제어가 가능함
․시스템 성능이 향상됨
․효용성과 융통성이 높음
․신뢰성 및 가용성이 높음
․점증적 시스템 용량 확장이 용이함

분산 데이터베이스의 단점
․DBMS가 수행할 기능이 복잡함
․데이터베이스 설계가 어려움
․소프트웨어 개발 비용이 증가함
․처리 비용이 증가함
․잠재적 오류가 증가함

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

여기서는 퍼블릭 블록체인을 가정
가장 큰 차이점은 블록체인의 경우
1. 악의적인 사용자를 전제하고 만들어진 시스템(합의 알고리즘)
2. 운영 주체가 사라져도 시스템 유지 가능(거버넌스)

이 두 가지의 특징이라는 점

분산 데이터베이스도 데이터를 분산시켜 저장한다는 점에서는 동일하지만, 특별히 악의적인 사용자를 전제하지 않음
이는 해당 개념이 나온 배경이 일반적으로 재해 복구, 백업, 성능상의 이점만을 고려하였기 때문

하지만 블록체인의 경우 태초부터 악의적인 사용자가 존재할 것이라는 가정을 하고, 새로운 블록의 순서와 자격을 결정하는 과정을 합의 알고리즘을 통해 해결한다.

이러한 합의 과정을 통해서 악의적인 사용자를 방지한다는 점이 기술적으로 가장 큰 차이점
블록체인은 주로 운영하는 주체가 존재하지만, 탈중앙화 되어 있기에, 해당 주체가 떠나간다는 극단적인 상황을 가정해도 나머지 피어들에 의해서 운영될 수 있음

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

profile
Blockchain developer
post-custom-banner

0개의 댓글