분산 데이터베이스 (Distributed Database)
- 분산된 저장소(노드)들이 네트워크를 통해 연결되어 작동하는 하나의 데이터베이스 관리 시스템(DBMS)
- 물리적으로는 여러 위치에 분산 저장하고 흩어져 있지만 논리적으로는 하나인 것 처럼 활용
** 물리적으로 떨어져 있는 저장소(노드)들은 네트워크를 통해 연결됨
** 노드들은 투명성 확보가 가장 중요함
분산 데이터베이스에서 목표로 하는 투명성의 특징
종류 | 내용 | 특징 |
병행 | 다수의 트랜잭션 실행 시 결과가 일관성 유지 | 자원처리 양 및 속도 개선 |
장애 | 장애 발생이 All or Nothing 유지 (원자성 유지) | 데이터 일관성 |
지역사상 | 개별 지역의 물리적 이름과 관계없이 접근 가능 | 확장성 확보 |
위치 | 데이터를 물리적 저장 위치가 아닌 논리적 입장에서 접근 | 생산성, 활용성 강화 |
중복 | 데이터를 지역별로 중복으로 저장하여도 처리 가능 | 병목현상 제거 |
분할 | 물리적 구조가 여러 단편으로 분할 저장되어 논리적 사용 | 성능 향상 |
분산 데이터베이스의 장단점
장점 | 단점 |
- 시스템의 가용성 확보 - 지역 업무에 특화된 서비스 제공 - 시스템 확장 및 적응성 - 장애에 대한 신뢰성 증진 - 지역별 자원 활용 및 확장성 용이 |
- 트랜잭션에 대한 처리 알고리즘이 복잡함 - 관리가 복잡하여 비용 증대 - 통신망 장애 시 부가적 피해 가능성 - 잠재적 오류 내재 가능성 - 설계 및 구현의 어려움 |
분산 데이터베이스의 대표 기술
** 데이터베이스를 물리적으로 여러개로 만들고 관리하기 위한 기술
** 일반적인 데이터베이스
→ 서버(데이터 요청을 처리), 스토리지(실제 데이터를 저장)가 각 1개씩 있음
클러스터링 (Clustering)
- DB 서버를 여러개 두어 서버 한 대가 죽었을 때 대비할 수 있는 기법
장점 | 단점 |
- 성능 유리 | - 병목 현상 - 비용 증가 |
1. Active - Active
- 클러스터를 항상 가동하여 가용할 수 있는 상태로 두는 구성 방식
- 2개의 DB 서버를 모두 활성화 시킴
2. Active - Standby
- 일부 클러스터는 가동하고, 일부 클러스터는 대기 상태로 구성하는 방식
** 하나의 Active 서버만을 사용하다가 DB 서버에 문제가 생기면 failover를 통해 Stand by 서버가 Active가 되고, 기존 Active는 Stand by 상태로 전환함으로서 장애에 대응함
- Active - Active의 단점을 보완한 것
** failover
- 데이터베이스의 클러스터의 일부 노드에 장애가 발생해서 해당 노드가 서비스를 제공할 수 없는 상태가 되었을 때, 다른 노드가 그 역할을 대신 수행하여 서비스의 지속성을 보장하는 과정
- 단일 노드 시스템보다 더 높은 가용성과 신뢰성 제공 가능
레플리케이션 (Replication)
- 데이터베이스 스토리지를 여러개로 하는 방식
- 단순 백업 방식과 부하 분산 방식이 있음
장점 | 단점 |
- DB Read(SELECT) 성능을 높일 수 있음 - 지연시간 거의 없음 |
- 각 노드 간의 데이터 동기화 보장 어려움 - Master 노드가 다운되면 복구 및 대처가 어려움 |
- 최소 구성 : Master/Slave 구성
1. Master
- 웹 서버로부터 등록/ 수정/삭제 (CUD)의 요청을 담당
- 요청 처리 후 즉시, Slave DB 서버에 변결된 데이터를 전달
2. Slave
- Master로 부터 받은 데이터를 반영
- 주로 읽기(R)에 대한 요청을 담당 (부하 분산 방식)
** 많은 서비스에서 읽기(R) 요청의 비율이 60%~70% 정도를 차지한다고 함
샤딩 (Sharding) (참고하면 좋음)
- 테이블을 나누어 데이터를 저장하는 방식
장점 | 단점 |
- 서버의 수평 확장 가능 - 질의 반응 속도 빨라짐 |
- 한번 분리한 뒤에는 합치기 어려움 - 데이터를 적절히 분리하지 못하면 오히려 비효율적일 수 있음 |
1. Hash Sharding
- 해시 함수를 사용해 샤드 키를 나누는 방식
- 샤드의 수만큼 해싱하면 되기때문에 구현이 간단함
- 샤드가 늘어나면 해시 함수가 달라져야해서 확장성이 떨어짐
- 각 샤드별 공간에 대한 효율을 고려하지 않음
2. Dynamic Sharding
- Locator Service를 통해 샤드키를 구성하는 방식
- 샤드가 하나 더 추가되어도 Locator Service에 샤드키만 추가하면되기 때문에 확장성 유연함
- Locator Service에 종속
→ 데이터 재배치 시 Locator Service 역시 동기화 요구됨
→ Locator Service 에 문제가 생기면 DB에도 문제가 전이됨
3. Entity Groups Sharding
- 관계가 되어 있는 엔티티를 같은 샤드내에 구성하는 방식
- 단일 샤드 내 쿼리가 효율적이고 강한 응집도를 보임
- 다른 샤드의 엔티티가 연관 되는 쿼리를의 경우 효율이 떨어짐
분산 데이터베이스 VS 블록체인 (퍼블릭)
퍼블릭 블록체인
- 악의적인 사용자를 전제하고 만들어진 시스템 (합의 알고리즘)
** 합의 과정을 통해 악의적인 사용자의 공격을 방지함
- 운영 주체가 사라져도 시스템 유지 가능 (거버넌스)
** 합의 알고리즘에 따라 특정 조건을 만족시키는 노드가 블록을 생성하지만, 탈중앙화가 되어 있기 때문에 해당 노드가 네트워크를 떠나도 다른 노드들에 의해 운영이 지속됨
분산 데이터베이스
- 재해 복구, 백업, 성능상의 이점을 고려하여 만들어졌기 때문에 특별히 악의적인 사용자를 전제하지 않음
** 일반적인 데이터베이스와 비슷하게 중앙 관리자가 각 데이터베이스를 관리함
** 특정 기업이나 단체에 종속되기 때문에 중앙화된 운영주체의 정책, 규칙에 따라 언제든지 서비스가 중단될 수 있음
⇒ 블록체인은 합의 알고리즘 + 탈중앙화 가버넌스 특징이 포함된 분산 데이터베이스의 한 형태
분산원장 (DLT, Distributed Ledger Technology)
- 분산 데이터베이스의 한 종류
- 거래 정보를 기록한 원장을 특정 기관의 중앙 서버가 아닌 P2P 네트워크에 분산하여 참가자가 공동으로 저장하고 기록하는 기술
분산원장의 장단점
장점 | 단점 |
- 효율성 - 보안성 - 시스템 안정성 - 투명성 |
- 신뢰 형성에 필요한 메커니즘 설계의 필요성 - 악의적인 참가자에 대한 방지 기술 필요 |
중앙집중형 원장 VS 분산원장
중앙집중형 원장
- 신뢰할 수 있는 제 3의 기관을 중심으로 원장을 기록하는 방식
- 안정성과 일관성, 보안을 제공
- 하나의 중앙 서버가 모든 데이터를 처리하기 때문에 확장성 제한됨
분산원장
- P2P 네트워크에 분산하여 참가자가 공동으로 저장하고 기록하는 기술
- 높은 확장성과 보안성 제공
- 일관성 유지가 어렵고 구현이 복잡함
⇒ 모든 블록체인은 분산원장 또는 분산 데이터 베이스라고 할 수 있지만, 반대 명제는 성립하지 않음
세그윗 (SwgWit, Segregated Witness)
- 속도와 확장성 개선을 위한 기술로, 블록 용량 증대를 통한 개선 방법의 하나
- 디지털 서명 데이터를 별도의 공간에 저장하고, 대신 블록에 더 많은 트랜잭션을 담는 방식
⇒ 고정된 블록의 가용 공간을 늘려서 속도를 개선하는 것
** 속도 : 합의에 도달하여 거래기록이 장부에 기록되는 데 걸리는 시간
** 확장성 : 갑자기 많은 트래픽이 발생했을 경우 중단이나 지연 없이 서비스 연속성이 보장되는 성질
블록체인의 속도와 확장성을 개선하기 위한 방법은 크게 4가지로 구분됨
1. 블록의 용량 증대 (가용 용량 늘리기) → 세그윗
2. 블록체인 기술 도입 (샤딩 등)
3. 블록체인 외부와 연계 (레이어 2 솔루션)
4. 합의 알고리즘 재설계
기존 비트코인의 블록 구조
데이터 종류 | 비율 |
디지털 서명 데이터 | 75% |
그 외 데이터 | 25% |
- 서명란에 실제 서명 데이터가 차지하는 크기는 크지 않지만 서명란 자체가 차지하는 부피가 큼
- 세그윗은 서명 부분을 따로 Witness라는 데이터 영역으로 분리해 더 많은 거래를 처리할 수 있도록 업데이트함
** 단순히 블록의 크기를 늘리는 방법 → 블록의 크기가 커지면 더 많은 해시 파워를 요구함, 소수의 해시파워를 가진 채굴 노드들로 인해 탈중앙화에서 점차 멀어질 수 있음
디지털 서명 데이터가 저장되는 위치
- 각 트랜잭션에 있는 디지털 서명 데이터는 머클루트 형태로 저장됨 ⇒ witness merkle root
- witness merkle root는 블록의 코인 베이스 트랜잭션 안에 들어감
** 코인 베이스 트랜잭션 : 블록을 생성한 채굴자에게 보상을 주기위해 비트코인에서 코인을 생성해 제공하는 트랜잭션
** 보통 블록의 가장 첫 번째 트랜잭션으로 들어감
비트코인은 2017년 8월 1일 업그레이드 진행
→ 세그윗을 처음으로 활성화한 암호화폐 : 그로스톨코인(Groestlcoin)
→ 세그윗에 반대한 채굴 세력가들 : 세그윗을 진행 할 경우 기존에 사용하던 방식의 비트코인 채굴이 불가능 해지게 됨
그래서 기존 비트코인을 하드포크 시켜 블록 용량을 늘린 비트코인 캐시(BCH, Bitcoin Cash)라는 새로운 암호화폐를 생성함
출처 :
코드스테이츠 BEB
https://medium.com/nerd-for-tech/all-about-database-sharding-scaling-up-the-database-3b6172491cd
'블록체인' 카테고리의 다른 글
[블록체인 기술 1] 블록체인 지갑 (+ 영지식 증명) (2) | 2023.05.05 |
---|---|
[블록체인 기술 1] 암호화폐 내용 정리 (0) | 2023.05.04 |
[블록체인 기술 1] 머클트리와 머클 패트리샤 트리 (1) | 2023.05.03 |
블록체인 이더리움 지분증명 (1) | 2023.02.26 |
블록체인과 솔리디티 (1) | 2023.02.15 |