샤딩 편집하기
최신판 | 당신의 편집 | ||
20번째 줄: | 20번째 줄: | ||
* '''샤딩의 문제점''' | * '''샤딩의 문제점''' | ||
− | |||
− | |||
− | |||
− | |||
: 확장성의 문제를 해결방책으로 나온 샤딩에 중앙화의 문제와 보안성의 문제를 가지게 되는데 보안의 문제에는 1% attack의 문제가 생길 수 있고, 100개의 샤드의 시스템에서는 오직 1%의 hash rate로 샤드를 지배할 수 있어 샤드 간의 커뮤니케이션이 너무 빈번하게 일어난다면, 커뮤니케이션으로 인한 시간 지연의 문제가 생기게 된다.<ref name="딩"></ref> 데이터 재분배(Rebalancing data)로는 Sharding된 [[DB]] 의 물리적인 용량 한계나 성능 한계에 따르면 샤드의 수를 늘리는 scale-up 작업이 필요하며 서비스 정지 없이 scale-up 할 수 있도록 설계 방향을 잡아야 하며, Global Transaction을 사용하면 샤드 DB 간의 트랜잭션도 가능하여 [[XA]] 임에도 성능 저하의 문제가 있다.<ref>hanburn, 〈[https://genesis8.tistory.com/211 샤딩(sharding)이란?]〉,《티스토리》, 2012-01-17 </ref> | : 확장성의 문제를 해결방책으로 나온 샤딩에 중앙화의 문제와 보안성의 문제를 가지게 되는데 보안의 문제에는 1% attack의 문제가 생길 수 있고, 100개의 샤드의 시스템에서는 오직 1%의 hash rate로 샤드를 지배할 수 있어 샤드 간의 커뮤니케이션이 너무 빈번하게 일어난다면, 커뮤니케이션으로 인한 시간 지연의 문제가 생기게 된다.<ref name="딩"></ref> 데이터 재분배(Rebalancing data)로는 Sharding된 [[DB]] 의 물리적인 용량 한계나 성능 한계에 따르면 샤드의 수를 늘리는 scale-up 작업이 필요하며 서비스 정지 없이 scale-up 할 수 있도록 설계 방향을 잡아야 하며, Global Transaction을 사용하면 샤드 DB 간의 트랜잭션도 가능하여 [[XA]] 임에도 성능 저하의 문제가 있다.<ref>hanburn, 〈[https://genesis8.tistory.com/211 샤딩(sharding)이란?]〉,《티스토리》, 2012-01-17 </ref> | ||
66번째 줄: | 62번째 줄: | ||
* '''질리카 샤딩''' | * '''질리카 샤딩''' | ||
− | : 질리카의 샤딩 기술은 [[네트워크 샤딩]](network | + | : 질리카의 샤딩 기술은 [[네트워크 샤딩]](network sharking), [[트랜잭션 샤딩]](transaction sharking), [[연산 샤딩]](computational sharking)과 같은 다양한 형태로 구성되어 있고 그중 네트워크 샤딩은 질리카 채굴 네트워크를 샤드라는 작은 노드 그룹으로 나눌 수 있는 메커니즘이다. 이 네트워크 샤딩은 질리카를 확장할 수 있는 도구로서, 이 샤딩을 활용하게 되면 초당 수천 건의 트랜잭션 처리가 가능해진다. 질리카는 샤딩 기술을 통해 노드가 많아질수록 처리 속도가 더욱더 빨라진다. 질리카는 채굴 네트워크를 작은 그룹으로 나눠 병렬로 트랜잭션을 처리하기 때문에 네트워크 크기가 증가할수록 처리할 수 있는 트랜잭션 수가 선형적으로 증가하여 블록체인의 확장성 문제를 해결할 수 있으며, 테스트 넷에서 총 3,600 노드가 참가하여 1초당 2,488개의 트랜잭션을 처리했다. 질리카는 2018년 싱가포르에서 열린 밋업에서 진행된 테스트에서 1개 샤드로 481TPS, 2개 샤드로 995TPS, 4개 샤드로 1,967TPS, 그리고 6개 샤드로 2,828TPS를 달성하면서 네트워크 수 증가에 따른 트랜잭션 수의 선형적 증가 한다. |
− | |||
− | |||
− | |||
== 종류 == | == 종류 == | ||
− | * ''' | + | * '''데이터베이스 샤딩'''(database sharking) : 하나의 거대한 [[데이터베이스]] [[테이블]] 을 수평 분할(horizontal partitioning)하여 여러 개의 작은 단위로 나눈 후, 물리적으로 다른 위치에 분산하여 저장·관리하는 기술이다. 이때 수평 분할된 1개의 작은 [[테이블]] 을 샤드(shard)라고 한다. |
− | * ''' | + | * '''네트워크 샤딩'''(network sharking) : 블록체인 기반 암호화폐를 채굴하기 위한 네트워크를 샤드라는 작은 [[노드]] 그룹으로 나누어 관리하는 기술이다. 네트워크 샤딩은 임의로 네트워크가 무작위로 노드를 샘플링하여 블록 단위로 샤드를 형성하지만, 네트워크가 샤드의 구성원에 대한 동의를 구하지 않아 구성원들이 원하는 방향으로 가지 않는 경우, 구성원들의 불만을 해결하지 못한다는 단점을 가지고 있다.<ref name="딩"></ref> |
− | * ''' | + | * '''트랜잭션 샤딩''' : 트랜잭션[[해시]]의 마지막 몇 비트를 기반으로 샤드를 결정하고 트랜잭션의 유효성을 확인하지만, 사용자가 악의적인 경우, 동일한 두 입력이지만 출력이 다른 트랜잭션을 생성할 수 있고, 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들은 서로 간에 통신이 필요하다.<ref name="딩"></ref> |
− | * ''' | + | * '''스테이트 샤딩''' : account-based model로, 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하지만, 교차분할 트랜잭션을 수행하지 못하도록 제한되고, 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 오프라인 샤드에 대한 트랜잭션의 요 효성을 검사하지 못하게 되는데 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협되어 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때까지 전체 시스템을 사용할 수 없게 된다.<ref name="딩"></ref> |
== 활용 == | == 활용 == | ||
100번째 줄: | 93번째 줄: | ||
== 같이 보기 == | == 같이 보기 == | ||
* [[질리카]] | * [[질리카]] | ||
− | |||
{{블록체인 기술|검토 필요}} | {{블록체인 기술|검토 필요}} |