TIL - Shading

이인수·2022년 2월 23일
0

TIL

목록 보기
22/26

Sharding


Shard라는 개념은 기존에 데이터베이스에서 사용되던 개념이다. 하나의 데이터베이스를 여러개로 나누어서 각각의 데이터베이스(or 블록들의 구간)를 Shard(샤드)라고 한다. 이 개념이 생긴 이유는 거대한 데이터베이스 하나만 운영하게 된다면 리스크를 온전히 감당해야 하기때문에 여러 개로 나누어 리스크를 분할시킨 것이라고 보면 된다.
Sharding이란, 단일의 데이터베이스를 여러개의 Shard로 분산 저장하여 관리하는 것을 뜻하고 데이터를 구간별로 쪼개어 나눔으로써 노드에 무겁게 가지고 있던 데이터를 빠르게 검증할 수 있어 빠른 트랜잭션 속도를 향상 시키는 데이터베이스 저장기법 중 하나이다.

Sharding of Blockchain

샤딩은 블록체인의 트릴레마 중 확장성(Scalability)를 해결하기 위한 방법의 하나이다.
모든 서비스들은 시간이 지나면서 사용자 수가 늘어나기 마련이다. 사용자 수가 많아지면 처리량도 비약적으로 늘어나게 되는데, 이 늘어나는 처리량과 속도를 해결하기 위해 착안된 개념이라고 생각하면 된다.
2017년 말, 크립토키티라는 이더리움 플랫폼 블록체인 게임의 인기가 치솟으면서 이더리움 네트워크는 사용자들의 트랜잭션을 감당할 수 없게 된다. 당시 이 현상을 해결하기위해 여러가지 방법들이 시도되었고, 그중 하나가 샤딩이다.

Sharding의 한계

한 샤드 내에서의 전송이 아닌 여러 샤드 간의 전송은 절차가 훨씬 복잡하고 느려진다. 여러 샤드로 쪼갤수록 각 샤드는 자기 샤드의 데이터만 있고, 다른 샤드의 데이터는 가지고 있지 않으므로 샤드간 데이터를 어떻게 참조할 것인지, 어떻게 검증할 것인지 문제가 생겨서 알고리즘(쿼리)이 복잡해진다.
또한 블록체인은 풀 노드들이 동일한 데이터를 가지고 있음으로 정보손실에 대한 위험을 막을 수 있지만 샤딩을 하게 된다면 같은 데이터를 가지고 있지 않으므로 데이터의 손실이 생길 수 있다.

0개의 댓글