티스토리 뷰
블록체인은 P2P(Peer to Peer) 네트워크를 통해 관리되는 분산 데이터베이스의 한 종류입니다. 따라서 거래 정보가 담긴 장부를 중앙에 존재하는 단일 서버에 저장하는 대신, 네트워크로 연결된 여러 컴퓨터에 분산하여 저장하는 분산 원장이기도 합니다.
여기서 P2P, 분산 데이터베이스, 분산 원장 등 생소할 수 있는 키워드들이 등장했습니다. 블록체인은 이보다 많은 기술들의 집합체이기 때문에 블록체인을 이해하기 위해서 그 기반에 있는 기술들을 이해할 필요가 있습니다. 이번 글에서는 우선 분산 데이터베이스와 분산 원장에 대해 간단하게 다뤄보겠습니다.
분산 데이터베이스란?
저장소(또는 노드)들이 물리적으로 떨어져 있으나, 네트워크를 통해 연결되어 있어 하나의 DBMS(Database Management System)으로 제어되는 형태의 데이터베이스입니다. 따라서 사용자 입장에서는 하나의 데이터베이스에 접근하는 것과 같은 경험을 하게 됩니다.
분산 데이터베이스는 사용자 및 응용프로그램에 대해 투명하게 동작해야 합니다. 따라서 아래와 같은 투명성을 확보해야 합니다.
종류 | 내용 | 특징 |
병행 | 다수의 트랜잭션 실행 시 결과가 일관성 유지 | 자원처리 양 및 속도 개선 |
장애 | 장애 발생이 All or Nothing 유지 (원자성 유지) | 데이터 일관성 |
지역사상 | 개별 지역의 물리적 이름과 관계없이 접근 가능 | 확장성 확보 |
위치 | 데이터를 물리적 저장 위치가 아닌 논리적 입장에서 접근 | 생산성, 활용성 강화 |
중복 | 데이터를 지역별로 중복으로 저장하여도 처리 가능 | 병목현상 제거 |
분할 | 물리적 구조가 여러 단편으로 분할 저장되어 논리적 사용 | 성능 향상 |
분산 데이터베이스의 대표적 기술 3가지
1. 클러스터링
하나의 저장장치에 여러 개의 서버를 연결하여 서버의 일부가 다운되더라도 다른 서버가 지속적으로 서비스를 제공할 수 있도록 구성하는 방식입니다.
장점 | 단점 |
지속적인 서비스 제공 서버가 여러 대이므로 성능적으로 유리 |
저장장치가 하나 이므로 병목현상 발생 가능 서버 운영 비용 증가 |
2. 레플리케이션
여러 개의 저장장치를 사용하여 백업을 통해 데이터 손실을 줄이거나 부하를 분산하여 일부 성능을 향상할 수 있는 방식입니다.
장점 | 단점 |
DB Read(Select) 성능을 높일 수 있음 비동기 방식으로 운영되어 지연시간 거의 없음 |
- 각 노드 간의 데이터 동기화 보장 어려움 - Master 노드가 다운되면 복구 및 대처가 어려움 |
3. 샤딩
하나의 거대한 데이터베이스에서 데이터를 읽기 위해서는 시간이 오래 걸리는 문제로 인해 데이터베이스를 여러 개의 조각(샤드)으로 나누어 분산 저장하는 방식입니다.
장점 | 단점 |
서버의 수평 확장이 가능 스캔 범위가 줄어들어 질의(쿼리) 반응 속도가 빨라짐 |
한번 분할된 뒤에는 다시 합치기 어려움 데이터를 적절히 분리하지 못하면 오히려 비효율적일 수 있음 |
1) 해시 샤딩
해시 함수를 사용해 shard key를 나누는 방식
장점 | 단점 |
샤드의 수 만큼 해싱하면 되므로 구현이 간단함 | 샤드의 수가 늘어나면 해시 함수를 변경해야 하므로 확장성이 떨어짐 해시 함수로 나누기에는 각 샤드별 공간에 대한 효율을 고려하지 않음 |
2) 다이내믹 샤딩
외부 로케이터 서비스를 사용하여 shard key를 구성하는 방식
장점 | 단점 |
샤드가 추가되면 로케이터 서비스에 shard key를 추가하는 방식으로 확장성이 좋음 | 데이터를 재배치할 경우 로케이터 서비스 역시 동기화 필요 로케이터 서비스에 의존적이므로 로케이터 서비스에서 발생한 문제가 데이터베이스로 전이될 수 있음 |
3) 엔티티 그룹 샤딩
관계되어 있는 엔티티를 묶어 동일한 샤드 내에서 공유하는 방식
장점 | 단점 |
단일 샤드 내에서 질의(쿼리)가 효율적 단일 샤드 내에서 강한 응집도를 보임 |
다른 샤드의 엔티티와 연관되어 있는 질의(쿼리)는 성능이 떨어짐 |
분산 데이터베이스의 장단점
장점
- 조직 구조 반영 가능: 기업에서 부서별로 데이터베이스를 놓고 각 데이터베이스를 통합하여 분산 데이터베이스처럼 사용할 수 있습니다.
- 부분 자율성: 각 부서는 자체 보유한 데이터를 제어할 수 있습니다.
- 중요한 데이터 보호: 데이터베이스가 물리적으로 떨어져 있어 재난재해로부터 모든 데이터가 손실되는 것을 방지할 수 있습니다.
- 성능 향상: 자주 사용하는 데이터를 사용자와 가까운 위치에 두거나, 데이터베이스를 병렬적으로 실행하여 부하를 분산할 수 있습니다.
- 경제성: 거대한 고성능의 컴퓨터 한 대(scale up) 보다는 동일한 성능의 컴퓨터 여러 대(scale out)를 사용하는 것이 더 경제적입니다.
- 모듈화: 분산 데이터베이스는 다른 모듈(시스템)에 영향을 주지 않고 개별 시스템을 갱신, 추가, 삭제할 수 있습니다.
- 트랜잭션: 일시적으로 장애가 발생하더라도 전체 기능은 손상되지 않으며 모든 거래는 ACID 특성을 따릅니다.
단점
- 복잡성: 물리적으로 떨어져 있는 여러 데이터베이스의 투명성 보장, 분산 컴퓨팅을 지원하는 운영 체제 필요, 동시성 제어, 데이터베이스 설계 요건 등 고려해야 할 사항들이 많고 구현 또한 어렵습니다.
- 비용: 시스템 규모와 복잡성 증가에 따라 관리 비용이 증가합니다.
- 보안: 개별 데이터베이스의 보안뿐만 아니라 네트워크 보안까지 둘 다 확보를 해야 합니다.
- 무결성 보장의 어려움: 물리적으로 떨어져 있는 데이터베이스 간의 무결성을 보장하기 위해 상당한 네트워크 자원이 소모됩니다.
- 불완전한 기술: 중앙 데이터베이스에 비해 분산 데이터베이스는 비교적 미성숙한 분야이며 실적용 사례도 적습니다.
- 표준의 부족: 중앙 DBMS를 분산 DBMS로 변환하기 위한 표준 방식이 아직 없습니다.
분산 데이터베이스와 블록체인(퍼블릭)의 차이점
1. 악의적인 사용자를 전제하고 만들어졌는가?
분산 데이터베이스는 일반적인 데이터베이스와 마찬가지로 중앙 관리자가 관리하기 때문에 악의적인 사용자가 분산 데이터베이스로 참여하는 경우는 고려하지 않고 있습니다.
그러나 블록체인은 처음부터 악의적인 사용자의 존재를 가정하고 새로운 블록을 블록체인에 추가하는 과정에서 합의 알고리즘을 통해 네트워크 참여자들의 합의를 이루어 냅니다.
2. 운영 주체가 사라져도 시스템이 유지 가능한가?
분산 데이터베이스는 특정 기업, 단체에 종속되어 있으므로 중앙화된 주체의 정책, 규칙에 따라 언제든지 서비스가 중단될 수 있습니다.
반면 블록체인은 탈중앙화되어 있어서 특정 주체가 네트워크의 모든 노드를 소유하고 있는 것이 아니므로 일부 노드가 네트워크를 떠나더라도 다른 노드들에 의해 자율적으로 운영됩니다.
결론적으로, 블록체인은 합의 알고리즘과 탈중앙화 거버넌스라는 특징이 포함된 분산 데이터베이스의 한 형태입니다. 따라서 모든 블록체인은 분산 원장 또는 분산 데이터베이스라고 할 수 있습니다. (그러나 반대의 명제는 성립하지 않습니다.)
분산 원장
분산원장(DLT, Distributed Ledger Technology)은 거래정보를 기록한 원장을 중앙 서버가 아닌 P2P 네트워크에 참여 중인 사용자들이 저마다의 저장장치에 공동으로 저장하고 기록하는 기술입니다. 블록체인도 분산 원장 기술의 한 종류입니다.
P2P 네트워크:
네트워크를 구성하는 노드들이 중앙 관리자와 연결되어 있는 형식이 아닌, 서로서로 연결되어 구성된 네트워크
중앙집중형 원장
중앙집중형 원장은 은행, 예탁결제원 등과 같은 신뢰할 수 있는 제3의 기관을 신뢰하는 방식을 사용합니다. 이러한 방식은 기관에 대한 신뢰에 크게 의존할 수 밖에 없다는 한계가 있습니다.
분산 원장의 장단점
장점
- 효율성: 신뢰할 수 있는 제3의 기관이 필요하지 않으므로 관련 비용을 크게 절감할 수 있습니다.
- 보안성: 원장이 분산되어 저장되어 있으므로 단일 공격지점이 존재하지 않습니다. 또한 원장이 모든 참가자에게 공개되므로 원천적으로 정보 유출의 소지가 없습니다.
- 시스템 안정성: 단일 실패점이 존재하지 않으므로 일부 노드에서 발생한 오류나 성능 저하가 전체 네트워크에 미치는 영향이 미미합니다.
- 투명성: 모든 거래 기록이 공개되므로 투명성이 높습니다. 거래 추적이 용이하고 규제 준수 비용도 낮습니다.
단점
- 신뢰할 수 있는 제3자가 존재하지 않으므로 시스템 자체에서 신뢰를 형성하는 메커니즘이 필요합니다.
- 모든 참가자가 원장을 갱신할 수 있는 권한과 책임을 가지고 있으므로 악의적인 사용자에 대한 방지책이 필요합니다.
비트코인은 분산 원장을 기반으로 작업 증명 합의 알고리즘을 통해 악의적인 노드의 데이터 조작을 방지하고 신뢰할 수 있는 제3자 없이도 네트워크에 참여한 노드들이 원장을 갱신할 수 있도록 신뢰를 구축할 수 있도록 구현되었습니다.
블록체인과 분산 원장의 차이
모든 블록체인은 분산 원장이지만, 모든 분산 원장이 블록체인인 것은 아닙니다.
참고
코드스테이츠 블록체인 부트캠프
'블록체인' 카테고리의 다른 글
The Graph를 사용해 온체인 이벤트 인덱싱하기 (0) | 2024.04.14 |
---|