샤딩
샤딩(sharding)이란 하나의 거대한 데이터베이스나 네트워크 시스템을 여러 개의 작은 조각으로 나누어 분산 저장하여 관리하는 것을 말한다. 이는 단일의 데이터를 다수의 데이터베이스로 쪼개어 나누는 걸 말하는데, 단일의 데이터베이스에서 저장하기 너무 클 때 사용하여 데이터를 구간별로 쪼개어 나눔으로써 노드에 무겁게 가지고 있던 데이터를 빠르게 검증할 수 있어 빠른 트랜잭션 속도를 향상시킬 수 있다. 샤딩을 통해 나누어진 블록들의 구간(epoch)을 샤드(shard)라고 부른다.[1]
개요[편집]
샤딩은 "조각내다"라는 뜻으로 데이터베이스 저장기법 중 하나이며, 전체 네트워크를 분할한 뒤 트랜잭션을 영역별로 저장하고 이를 병렬적으로 처리하여 블록체인에 확장성을 부여하는 온체인 솔루션으로 데이터를 샤드라는 단위로 나눠서 저장 및 처리한다. 샤딩 개념의 근원은 데이터베이스 샤딩에 있고, 데이터베이스 샤딩이란 대용량의 데이터를 처리하기 위해 테이블을 수평 분할하여 데이터를 분산 저장하고 처리하는 것이다.[2] 만약 10만큼의 데이터와 10명의 노드가 참여했다고 가정한다면 기존의 블록체인은 10명의 노드 개개인은 10만큼을 모두 가지고 있으면서 공유하지만, 샤딩은 10을 조각내서 10명의 노드 개개인은 1만큼씩만 보관함으로써 보관 데이터가 가벼워져 거래처리 속도가 크게 향상된다.[3]
등장배경[편집]
샤딩은 블록체인 시스템의 확장성(scalability) 문제를 해결하기 위한 방법의 하나이다. 확장성은 시간이 지남에 따라 생겨나는 변화를 받아들이는 능력이다.[4] 시간이 지남에 따라 블록체인 기반 서비스는 대체로 사용자 수가 증가하기 때문에, 확장성 문제란 결국 더 많은 사용자가 만들어내는 트랜잭션을 블록체인 시스템으로 처리할 수 있는 능력의 문제이다. 대개 블록체인의 확장성 지표로 TPS 를 사용한다. TPS는 Transaction per Second의 약자로서 1초당 처리할 수 있는 트랜잭션의 개수를 나타내는 단위이다. 기존비트코인과 이더리움 의 경우 확장성 문제가 심각하여, TPS를 획기적으로 증가시키기 위한 다양한 방법이 고안되고 있는데, 그 중 대표적인 것이 샤딩이다. 샤딩은 플라즈마, 라이덴 네트워크 등과 마찬가지로 확장성 문제를 해결하기 위해 제안된 솔루션이고, 플라즈마, 라이덴