
보고서 요약:
보고서 요약:
조각화는 데이터베이스에서 파생된 확장 기술로 블록체인 시스템의 확장성을 향상시키는 데 사용할 수 있습니다.기본 아이디어는 네트워크의 노드를 다른 조각으로 나누고 각 조각은 다른 트랜잭션을 병렬로 처리할 수 있도록 하는 것입니다. 서로를 병렬로 처리할 수 있음 네트워크 동시성을 높이기 위해 그들 사이에 연결을 설정하지 않은 트랜잭션. 노드 수가 증가함에 따라 네트워크 처리량이 증가하는 것이 특징입니다. 핵심 어려움은 데이터 샤드의 핵심 특성 값 결정과 샤드 간 메타 데이터 통신 지연으로 인한 불일치에 있으며 빈번한 교차 샤드 통신은 블록체인 네트워크의 성능을 크게 저하시킵니다. 각 샤드의 데이터는 개별적으로 업데이트되기 때문에 애플리케이션 로직을 설계할 때 정보의 성공적인 업데이트를 보장하는 동시에 프로세스에서 발생할 수 있는 불일치를 처리하기 위해 일정량의 견고성을 확보해야 합니다. 최종 일관성을 달성하는 것입니다.
블록체인에서의 샤딩은 대상에 따라 트랜잭션 샤딩, 네트워크 샤딩, 상태 샤딩으로 구분되며, 네트워크 샤딩 기술이 블록체인에서 사용된다는 점, 즉 채굴자들이 여러 개의 서브 네트워크로 나누어진다는 점에 주목할 필요가 있다. 샤드에서 트랜잭션을 확인하기 위해서는 악의적인 노드의 수가 충분히 적은지 확인해야 하므로 채굴자 할당 규칙에서 임의성을 보장하도록 주의를 기울여야 합니다. 샤딩 기술을 블록체인에 적용함에 있어서 고려해야 할 문제는 시빌 공격, DDOS 공격, 이중지불 공격 등 다양한 공격에 대한 방어이며, 각 샤드의 총 노드 수를 보장해야 한다. 효율성을 평가하는 동안 충분하고 정직한 노드가 대다수를 차지하며 샤딩 기술은 매우 높은 보안 요구 사항을 가지고 있으며 동시에 블록체인 시스템의 노드 수는 기존 데이터베이스보다 많으며 대역폭 제한에 직면해 있습니다. 지연으로 인한 불일치로 인한 성능 및 보안 문제를 충분히 고려해야하므로 관련 프로젝트가 거의 없습니다. 설득력을 갖기 위해서는 엄격한 이론 솔루션 증명과 결합하여 장기간 대규모 네트워크에서 테스트하고 검증해야 합니다.
전통적인 개념의 조각화 기술은 데이터베이스를 여러 조각으로 나누어 서로 다른 서버에 배치하는 것입니다. 최신 클라우드 서비스에서 데이터는 종종 다른 사이트에서 호스팅되고 분할됩니다. 이 접근 방식을 사용하는 이유에는 확장성을 향상시키기 위한 여러 컴퓨터 간의 부하 분산, 가용성 향상을 위한 여러 사이트 간의 데이터 저장 등이 포함됩니다. 블록체인 샤딩 기술은 데이터베이스 샤딩 개념을 기반으로 한 확장 기술입니다.
블록체인이나 데이터베이스 분야에 관계없이 샤딩의 첫 번째 단계는 데이터의 주요 특성 값을 추출하고 특정 규칙에 따라 처리하기 위해 주요 특성 값을 다른 조각으로 나누는 것입니다. 핵심 특성 값의 선택은 매우 중요하며 데이터 표현의 고유성 보장 및 조각화 효과와 관련이 있습니다. 고유값의 선택 방법과 관련하여 기본 액세스 패턴이 될 것이라고 생각하는 것(기본 데이터 패턴이 될 것이라고 생각하는 것에 따라)에 따라 간결한 표준이 있습니다. 따라서 블록체인 프로젝트에서 샤딩이 사용자의 개인 키/계정 주소 등을 기반으로 하는 것을 종종 볼 수 있습니다. 이러한 값은 고유하고 시간이 지남에 따라 변경되지 않으며 샤딩의 논리가 비교적 명확하기 때문입니다.
기존 데이터베이스 기술에는 데이터를 샤딩하는 세 가지 주요 방법이 있습니다.
1. 해시 모드, 직접 모듈로:예를 들어 샤드가 3개라면 데이터를 해싱해서 모듈로 3으로 하고 그 결과에 따라 특정 샤드에 할당하는데 일부 핵심 특성 값은 부하량과 관련이 있기 때문에 불규칙성은 상황을 깨뜨린다. 다양한 샤드에 고르게 분포될 가능성이 높습니다. 반례로는 데이터의 주요 특성 값이 등록 시간 순서라면 새로 등록된 데이터가 더 활성화되어 특정 샤드에 할당할 수 있다는 것입니다. 하지만 이 방법의 단점은 새로운 샤드가 추가되면 샤드의 리밸런싱이 어렵다는 점이며, 추가적인 상태 정보를 유지할 필요가 없다는 장점이 있습니다.
2. 일관된 해싱:가상 노드가 없는 일관된 해시 방식은 데이터가 특성 값에 따라 엔드 투 엔드 해시 링에 매핑되고 노드도 일정한 규칙에 따라 매핑됨을 의미하며 시계 방향으로 데이터가 찾은 첫 번째 노드가 노드입니다. 그것이 저장되는 곳 . 가상 노드와의 일관된 해싱은 가상 노드가 해시 링에 매핑되어 실제 물리적 노드가 해시 링에서 여러 범위를 차지할 수 있다는 점을 제외하면 비슷합니다. 이 방식은 데이터가 어느 노드에 할당되었는지 상태 정보를 유지해야 하지만, 샤드 개수를 늘려야 할 경우 샤드의 리밸런싱이 더 쉽다는 장점이 있다. 그러나 샤드 상태 정보의 유지 관리는 일관성 문제를 고려해야 하며 이는 더 복잡합니다.
3. Range based:핵심 특성 값에 따라 서로 다른 간격으로 나뉘며 각 노드는 하나 이상의 간격에 해당하며 일관된 해싱 방식과 마찬가지로 상태 정보도 유지해야 합니다.
블록체인 시스템에서는 어떤 노드가 어떤 샤드를 구현하는지 알 수 있는 메커니즘이 필요하며, 기존의 데이터베이스 시스템에서는 일반적으로 샤드 정보(즉, 어떤 데이터가 어떤 샤드로 나뉘는 메타데이터) 전용 서버 저장소가 필요합니다. 메타데이터 서버에 대한 부담을 줄이고 분산 시스템에서 메타데이터는 다른 노드에 캐시됩니다.블록체인의 아이디어도 대략 비슷해서 노드 간에 캐싱된 메타데이터의 일관성을 보장하거나 성능을 보장하기 위해 유사한 마스터 서버를 도입해야 하지만 둘 다 일관성 문제가 있습니다.
여러 복제본의 일관성 및 가용성은 CAP 이론 논의의 범위이며 주로 두 가지 사용 가능한 솔루션이 있습니다.
첫 번째는 마스터-슬레이브 동기화입니다.먼저 마스터 서버를 선택하고 마스터 서버만 외부 서비스를 제공합니다.마스터 서버는 메타데이터의 업데이트 정보를 공유 저장 공간에 로그 형태로 저장한 다음 슬레이브 서버는 공유 저장 공간에서 읽습니다. 로그를 가져와 마스터 서버와 일치하는 상태를 달성하기 위해 적용합니다. 마스터 서버가 결함이 있는 것으로 감지되면(예: 하트비트를 통해) 새 마스터 서버가 다시 선출됩니다. . 네트워크 분할의 경우 원래 마스터 서버가 다운된 것으로 모두가 생각하고 새로운 마스터 서버가 선출될 수 있지만 실시간으로 원래 마스터 서버가 계속 서비스를 제공하므로 "듀얼 마스터 서버" 현상을 해결하기 위해서는 기존의 마스터 서버를 격리하여 외부 서비스를 정상적으로 제공할 수 없도록 하는 방안을 강구할 필요가 있다. 메타데이터의 강력한 일관성을 보장하기 위해 전환을 준비할 때 새로운 기본 서버는 외부 서비스를 계속 제공하기 전에 메타데이터가 완전히 동기화되었는지 확인해야 합니다. 이 목표를 달성하기 위한 한 가지 방법은 메타데이터가 변경될 때 즉시 모든 캐시 서버에 알리고 데이터를 잠그는 것입니다. 업데이트가 완료되기 전에 액세스가 거부됩니다. 확장성이 뛰어난 NoSQL 데이터베이스에서 종종 달성되는 복제 데이터 간의 높은 수준의 일관성을 유지하는 또 다른 방법은 읽기-쓰기 쿼럼 및 버전 관리를 사용하는 것입니다. 이 접근 방식은 데이터 읽기 및 쓰기가 복잡해지는 대신 데이터 잠금을 방지합니다.
두 번째 방법은 Paxos 및 Raft 프로토콜과 같은 분산 합의 프로토콜을 통해 여러 복제본의 일관성을 달성하는 것입니다 프로토콜은 모든 백업이 외부 서비스를 제공하고 강력한 일관성을 보장할 수 있음을 실현할 수 있습니다.
블록체인의 상태 샤딩은 각 노드가 블록체인 상태 정보의 일부만 저장한다는 것을 의미하며, 어떤 슬라이스가 필요한 상태를 저장하는지 알기 위해 상태 정보를 유지하기 위해 유사한 메커니즘이 필요합니다. 해결해야 할 일관성 문제는 위와 유사하며 트랜잭션 조각화 구현이 더 간단합니다. 계정 기반 블록체인 시스템에서 각 트랜잭션에는 보낸 사람의 주소가 있으며 시스템은 보낸 사람의 주소를 기반으로 샤드를 할당할 수 있습니다. 이렇게 하면 동일한 샤드에서 두 개의 이중 지출 트랜잭션이 확인되므로 시스템은 샤드 간 통신 없이 이중 지출 트랜잭션을 쉽게 감지할 수 있습니다. 노드가 결정적이면 위에서 설명한 메타데이터 업데이트로 인한 문제가 거의 없습니다. 그러나 트랜잭션 검증에 샤드 간의 통신이 포함되는 경우 일반적으로 오버헤드 비용이 높아 네트워크의 처리량과 경제적 이점에 영향을 미칩니다.
블록체인의 네트워크 샤딩은 채굴자를 여러 그룹으로 나누어 동시에 트랜잭션을 검증하고 트랜잭션을 병렬로 처리하는 시스템의 능력을 향상시켜 TPS를 향상시키는 것을 말합니다. 일반적으로 난수를 정기적으로 생성하여 합의 노드를 선택하는 것이 가능하며, 이미 번호가 매겨진 샤드에 매핑되어 있으면 문제 해결이 훨씬 쉬워집니다. 그러나 노드가 다운되어 노드가 재할당되는 경우 프래그먼트 간의 합의를 형성해야 합니다. 네트워크 샤딩 기술이 블록체인에 사용된다는 점은 주목할 가치가 있습니다. , 그래서 광부를 할당하는 규칙 임의성을 보장하기 위해 주의를 기울여야 합니다.
참조:
참조:
1. "질문이 있는 분산 시스템의 학습 데이터 단편화",https://www.cnblogs.com/xybaby/p/7076731.html
2. "샤딩 기술(Sharding) - 블록체인 확장 문제에 대한 좋은 해결책",http://www.8btc.com/sharding-blockchain-scalability
3. 《sharding》,https://docs.mongodb.com/manual/sharding/
4. 《Sharding pattern》,https://docs.microsoft.com/en-us/azure/architecture/patterns/sharding
5. 《Database sharding explained in plain English》,https://www.citusdata.com/blog/2018/01/10/sharding-in-plain-english/
6. Lu Xiaoming, "퍼블릭 체인의 미래로 간주되는 샤딩 기술은 우리와 얼마나 멀리 떨어져 있습니까?" ",https://www.odaily.com/post/5132394
7. 코인 아카데미, "샤딩 개요, 질리카와 쿼크체인",http://8btc.com/article-4660-1.html