블록체인은 Peer-to-Peer 네트워크로 연결된 분산 데이터베이스의 한 종류라고 할 수 있습니다. 즉 거래 정보를 담은 각 트랜잭션들이 중앙 서버에 보관되는 것이 아니라 블록체인 네트워크에 참여한 유저들의 컴퓨터에 저장됩니다. 블록체인이 인터넷 혁명이라고 불리는 이유는 간단합니다. 데이터의 진위나 신뢰 제공이 은행, 기업등의 미들맨 없이도 네트워크 상에서 가능하기 때문입니다. 이러한 이유 덕분에 금융, 정부, 법률, 의료 등 다양한 산업분야에 사용가능성을 가지고 있습니다.
분산 데이터베이스란?
블록체인은 분산 원장 기술(DLT)를 사용합니다. 흔히 분산 데이터베이스와 비교가 많이 되는 녀석입니다. 그럼 분산 데이터베이스란 무엇일까요? 또 블록체인과 분산 데이터베이스는 어떤 차이점을 가지고 있을까요?
먼저 분산 데이터베이스란 데이터관리 시스템(DBMS)의 한 종류입니다. 여러 CPU에 연결된 저장장치들을 제어하는 형태의 데이터베이스 입니다. 물리적으로 데이터 저장소가 분리되어 있기 때문에 사용자는 단일 데이터베이스로 인식하게 됩니다.
분산 데이터베이스는 물리적으로 떨어진 저장소에 데이터를 저장하게 되며, 각 저장소를 노드(Node)라고 부릅니다. 이 노드들은 하나의 네트워크로 연결되게 되고, 이 때문에 투명성을 확보하는것이 분산 데이터베이스에서 중요한 주제가 됩니다.
분산 데이터베이스 투명성 목표
① 위치 투명성(Location Transparency)
액세스 하기 위한 데이터베이스의 실제 위치를 사용자가 알 필요가 없이 논리적인 명칭만으로 액세스가 가능한 성질입니다. 분산 환경과 무관하게 같은 명령을 수행할 수 있어야 합니다.
② 중복 투명성(Replication Tranparency)
중복된 데이터가 존재하거나 저장 위치 등에 대한 정보를 사용자는 알 필요가 없습니다. 데이터가 지역별로 중복 저장되어도 트랜잭션 처리가 가능해야 합니다. 즉, 사용자는 현재 사용중인 데이터가 논리적으로 유일하다고 생각하도록 환경이 마련되어야 합니다. 중복된 데이터를 갱신하기 위해서는 모든 지역에 대한 데이터 갱신이 이루어지게 되며 이 때 무결성을 보장하기 힘든 상황이 발생하게 됩니다.
③ 분할 투명성(Fragmentation Transparency)
사용자는 전역 스키마가 어떻게 분할 되어 있는지 알 필요가 없습니다. 물리적인 데이터 구조가 논리적으로 분할 저장되기 때문에 사용자는 DB가 제공하는 단편 질의문만으로도 액세스가 가능해야 합니다.
④ 장애 투명성(Failure Transparency)
물리적으로 분산된 환경에서 특정 실패점이 발생해도 데이터 무결성이 보장되는 성질입니다. 즉, 구성요소의 장애와 별개로 트랜잭션과 데이터의 원자성을 보장해줍니다.
⑤ 병행 투명성(Concurrency Transparency)
분산된 환경에서도 여러개의 트랜잭션들이 동시에 실행되더라도 트랜잭션의 결과는 서로 영향을 미치지 않아야 합니다. 즉, 트랜잭션과 데이터의 일관성을 보장해줍니다.
⑥ 지역사상 투명성
개별 지역의 물리적인 이름과 무관하게 데이터에 접근이 가능해야 합니다.
분산 데이터베이스 기술
데이터베이스를 분할된 환경에서 유지/관리하기 위한 기술은 크게 클러스터링, 레플리케이션, 샤딩 3가지가 있습니다. 일반적인 데이터베이스는 서버와 데이터베이스가 1:1로 연결되어 있는 모습입니다.
① 클러스터링
만약 특정 데이터베이스 서버가 멈추는 상황을 가정하면, 해결책은 DB 서버를 여러개 만드는 것입니다. 따라서 한개의 서버가 다운되더라도 다른 서버에서 지속적으로 서비스 제공이 가능해집니다. 나머지 서버들은 대기 상태에 들어가게 됩니다.
클러스터링의 장점은 지속적인 서비스가 가능하다는 점입니다. 하지만 실제 데이터베이스는 1개기 때문에 병목현상이 발생한다는 점입니다. 또한 여러개의 서버를 대기상태로 두면서 돌리기 때문에 비용적인 측면도 고려되어야 합니다.
② 레플리케이션
만약 저장되어 있는 데이터가 손실되는 경우 어떻게 대응하면 좋을까요? 이 때 해결책으로 등장한게 레플리케이션입니다. 데이터베이스 스토리지도 여러개로 만드는 것입니다.
레플리케이션을 사용하면 DB Read 성능을 개선할 수 있습니다. 또한 Query가 비동기식으로 작동하기 때문에 지연시간이 없다는 장점을 가지고 있습니다. 하지만 각 데이터베이스 스토리지 간 데이터 동기화를 하는 과정에서 데이터 무결성을 보장하기 힘들고 Master 노드가 다운되는 상황에 대처가 힘들다는 단점을 가지고 있습니다.
③ 샤딩(sharding)
검색할 데이터가 방대한 경우 Query 성능을 개선할 방법으로 등장하였습니다. 동일한 데이터베이스 스토리지를 여러개 관리하는 것 보다 테이블을 나눠서 관리하면 Query 성능을 개선할 수 있습니다. 마치 Index를 사용하는 것 처럼 말이죠.
샤딩을 적용하면 서버의 CPU, RAM, SSD 성능을 개선하는 수직적인 확장 보다 수평적 확장을 사용할 수 있습니다. 또한 Query 범위를 줄여주기 때문에 DB 성능을 끌어올릴 수 있습니다. 하지만 데이터 분할은 개발자가 직접 해야 하기 때문에 이 과정에서 비효율적인 데이터 분할이 발생할 수 있습니다. 또한 한번 분할해서 여러곳에 저장한 데이터를 다시 합치기는 상당히 많은 비용이 들어갑니다.
샤딩에서 데이터를 분할하는 문제를 개선하기 위해 등장한 녀석이 바로 해시 샤딩입니다. Shard Key를 사용해 나눠진 샤드 중 어떤 샤드를 사용할지를 결정해줍니다. 해시 샤딩 뿐만 아니라 Shard Key를 어떻게 결정하느냐에 따라 다이나믹 샤딩, 엔티티 그룹 샤딩 등으로 구분됩니다.
분산 데이터베이스 샤딩(sharding)
① 해시 샤딩
해시 함수를 사용해서 샤드를 나누는 방법입니다. 샤드 수만큼 해싱하면 되기 때문에 구현은 간단하지만, 샤드가 늘어나는 상황에서 해시 함수가 계속 변경되어야 하기 때문에 확장성은 제한됩니다. 또한 단순히 해시함수를 사용해 샤드를 나누기 때문에 샤드별 공간 효율도는 고려되지 않습니다.
② 다니아믹 샤딩
Locator Service 테이블 구성요소를 사용해서 Shard Key 결정하는 방식입니다. Shard Key를 Locator Service에 추가하는 방식으로 샤드를 구분합니다. 새로운 샤드가 추가되어도 처리가 가능하기 때문에 확장성이 높다고 할 수 있습니다. 하지만 데이터를 재배치 하는 경우 Locator Service도 동기화가 되어야 하며 샤드 구분이 Locator Service에 의존되어 있기 때문에 특정 테이블의 실패가 전체 데이터베이스에 영향을 미치게 됩니다.
③ 엔티티 그룹 샤딩
서로 연관되어 있는 엔티티끼리 같은 샤드 내에 저장하게 됩니다. 개별 샤드 내에서 높은 응집도를 가지기 때문에 Query 성능이 높다는 장점을 가지고 있습니다. 하지만 다른 샤드와 JOIN을 해야 하는 경우 Query 성능이 저하됩니다.
분산 데이터베이스의 장단점?
분산 데이터베이스는 투명한 분산이 가능합니다. 마치 하나의 데이터베이스를 사용하는 것 처럼 CRUD 작업이 가능합니다. 따라서 중앙집중식 데이터베이스에 비해 구현 방법이 복잡해집니다. 또한 투명한 트랜잭션을 보장합니다. 데이터가 분할된 위치에 저장되면서 트랜잭션의 ACID 보장해야 합니다.
장점
① 조직의 구조를 반영할 수 있습니다. 기업의 부서별로 데이터베이스를 관리하면서 전체 데이터베이스를 통합해 관리할 수 있습니다.
② 지역업무 특화 : 각 부서별로 데이터베이스를 따로 관리하면서 데이터 제어가 가능합니다.
③ 시스템 확장 : 데이터베이스가 병렬적으로 작동하기 때문에 부하를 분산시키기 용이합니다. 일부 데이터베이스가 과부화 되어도 전체 데이터베이스에 미치는 영향이 제한적입니다.
④ 데이터 보호 : 예상치 못한 재난시 데이터가 분산되어 있기 때문에 전체 데이터베이스를 날리는 일이 없습니다.
⑤ 경제성 : 하나의 슈퍼 컴퓨터 보다 여러대의 일반적인 컴퓨터가 병렬처리 되는게 비용적인 측면에서 유리합니다.
⑤ 모듈화 : 데이터베이스 내 다른 데이터에 영향을 미치지 않으면서 개별적으로 갱신, 추가, 삭제 등의 Query가 가능하기 때문에 확장성이 우수합니다.
단점
① 복잡성 : 분산 데이터베이스의 가장 큰 단점입니다. 중앙집중식 데이터베이스에 비해 구현하는 방법이 복잡할 수 밖에 없습니다. 또한 서로 다른 저장소의 하드웨어 스펙과 에러 상황에 대처하는 예외처리가 필수적입니다.
② 비용 : 시스템이 복잡해지고 거대해짐에 따라 비용 증가속도가 가파릅니다.
③ 각 데이터 별로 동기화가 진행되어야 하고, 개별 데이터베이스도 안전하게 보관되어야 하므로, 보안에 더 많은 신경을 써야 합니다.
④ 표준 부재 : 중앙집중식 데이터베이스를 분산 데이터베이스로 변환하는데 명확한 표준이 정해져 있지 않습니다.
⑤ 동시성 제어가 필요하며, 분할 저장소에서 분산 컴퓨팅을 지원해야 합니다. 개별적인 요소들을 모두 고려하면서 데이터베이스를 관리해야 하기 때문에 시간과 비용이 많이 소모됩니다.
분할 데이터베이스와 블록체인 차이점
블록체인은 분할 데이터베이스의 한 종류이지만 두 개념은 분명 차이점이 존재합니다. 블록체인은 분산 데이터베이스 속성을 가지면서 악의적인 사용자가 있다는 건을 전제하고 만들어졌습니다. 따라서 모든 노드가 상호 감시/검증하면서 데이터를 유지하는 합의 알고리즘이 필수적입니다.
또한 분산 데이터베이스는 결국 중앙의 관리자를 필요로 하지만 블록체인은 운영 주체가 없어저 자동으로 네트워크 관리 및 운영이 가능합니다. 네트워크에 참여한 각 노드들이 active 하게 네트워크 운영에 참여하기 때문입니다. 여기서 필요한게 거버넌스 그리고 크립토 이코노미(Crypto Economy) 입니다.
물론 분산 데이터베이스 또한 재해 복구와 성능상 이점을 고려해서 창시되었지만 제3의 사용자가 등장하는 개념은 고려되지 않습니다. 블록체인이 각광받는 가장 큰 이유는 불특정 노드가 네트워크에 참여했음에도 불구하고 데이터 무결성을 보장하고, 네트워크 유지가 된다는 점입니다. 합의 알고리즘은 블록체인과 분산 데이터베이스의 가장 큰 차이점입니다.
분산 데이터베이스를 관리하는 기업 혹은 주체가 사라지만 네트워크 운영은 불가능합니다. 데이터만 분산 저장되어 있을 뿐 실제 거버넌스는 한개의 기업에서 관리하기 때문입니다. 하지만 블록체인은 탈중앙화 된 네트워크로 노드들의 자발적인 참여로 네트워크 유지가 가능합니다.
이런 차이점으로 모든 블록체인은 분산원장 혹은 분산 데이터베이스에 속하지만 모든 분산 데이터베이스가 블록체인이 될 수는 없습니다.
'Blockchain' 카테고리의 다른 글
[Blockchain] 비트코인 세그윗(SegWit) 이란? (0) | 2022.06.16 |
---|---|
[Blockchain] 블록체인 분산 원장 기술이란? (0) | 2022.06.16 |
[Blockchain] 블록체인 지갑(Wallet) 이란? (0) | 2022.06.14 |
[Blockchain] 블록체인 합의 알고리즘 종류 비교 (0) | 2022.06.14 |
[Blockchain] 블록체인 트랜잭션이란 (0) | 2022.06.14 |
댓글