검수요청.png검수요청.png

분산해시테이블

위키원
Asadal (토론 | 기여)님의 2019년 5월 18일 (토) 21:02 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색

분산해시테이블(Distributed hash tables, DHT)은 해시테이블(hash table)을 분산하여 관리하는 기술이다.

개요[편집]

해시테이블은 실제 값에 해시함수를 적용하여 형성한 키 또는 식별자의 조합에 대해 배열을 사용하여 빠른 검색을 하기 위한 자료 구조이다. 분산해시테이블은 이 해시테이블을 네트워크 환경에 위치한 노드들에 분산하여 적용한 것이다.

특징[편집]

분산해시테이블은 시스템 전체를 중앙에서 관리하는 조직이 없고, 시스템을 이루고 있는 노드 수에 영향을 받지 않고 확장 가능하며, 시스템 내부에 노드가 추가되거나 없어지거나 오동작을 하더라도 시스템 전체의 기능에 영향을 끼치지 않는다는 특징이 있다.[1] 보통 어떤 항목을 찾아갈 때 해시테이블을 이용하는데, 분산해시테이블은 이때 중앙 시스템이 아닌 각 노드들이 이름을 값으로 맵핑하는 기능을 하는 방식이다.[2]

분산해시테이블은 P2P 네트워크에 특히 많이 사용된다. 이전의 P2P 솔루션은 냅스터(Napster)처럼 중앙 집중 관리 방식과 그누텔라(Gnutella)처럼 주변 노드들을 활용하여 분산된 네트워크를 구성하는 방식이 있다. P2P 네트워크를 중앙에서 컨트롤 할 경우 네트워크의 이용효율이 좋아진다는 이점이 있지만 컨트롤이 중앙화 되어 있어 중앙 관리 시스템이 취약점이 될 수 있다.[1] 반면에 피어에 의지하는 방식은 중앙 집중 조직이 없기 때문에 뚜렷한 취약점은 없지만 네트워크가 비효율적으로 사용된다는 문제가 있다. 분산해시테이블은 Structured key based routing 방식을 통해 P2P 시스템의 한계를 극복했다.

P2P 네트워크는 냅스터와 같은 하이브리드 P2P와 그누텔라와 같은 순수 P2P로 나뉜다. 하이브리드 방식은 중앙의 서버가 콘텐츠와 콘텐츠가 배치되는 각 노드의 주소를 목록화 하여 관리함으로써 검색 기능을 제공한다. 그러나 이 경우 중앙의 서버가 개별 노드와 콘텐츠를 관리하므로 서버 관리에 많은 비용이 지출된다. 순수형은 중앙 서버가 없어 개별 노드가 애드 혹 방식으로 서로 접속하는 형태의 P2P이다.[2] 이 경우 사용자가 늘어남에 따라 네트워크의 데이터 유동량, 즉 트래픽이 증가하고 네트워크상의 콘텐츠를 찾기가 어렵다는 단점이 있다.

장단점[편집]

분산해시테이블은 부하가 집중되지 않고 분산된다는 장점이 있어 순수 P2P라도 네트워크의 부하를 억제하여 네트워크상의 콘텐츠를 빠르고 정확히 검색할 수 있다.[3] 또한 기존의 순수 P2P에서 채택했던 방식에서는 수십만 노드 정도가 한계였으나 극단적으로 큰 규모의 노드들도 관리할 수 있으며 수십억 개의 노드를 검색범위로 할 수 있게 되었다.[4] 하지만 분산해시테이블은 실질적으로 구현하는데 어려움이 따르는데, 특히 완전한 일치검색만 가능하여 와일드카드 등을 활용한 복잡한 검색은 할 수 없다는 단점이 있다.

구성[편집]

분산해시테이블은 크게 키 공간 분할(Keyspace partitioning)과 오버레이 네트워크(Overlay network)로 나뉜다. 키 공간 분할은 분산된 서버에 키를 어떻게 배치시킬 것인가를 결정하는 것으로 데이터의 해시값을 이용히 키 영역을 파티셔닝 시킨다. 오버레이 네트워크는 물리적인 서버의 연결과 상관없이 논리적인 서버 간의 연결 관리와 키를 담당하는 노드를 찾아가는 매커니즘을 제공하며 특정 키를 서비스하는 노드를 찾아가는 라우팅 알고리즘을 제공한다.[5]

해시의 키 집합들을 분산해시테이블 시스템 내부의 각 노드에 분산(Keyspace partitioning) 시키고, 엔트리 포인트에 상관없이 키의 위치를 찾아갈 수 있도록 라우팅 하는 알고리즘을 이용하여 시스템 내부의 네트워크(Overlay network)를 떠돌며 목적지를 찾아가게 된다. 이게 바로 이게 바로 Structured key based routing인데 쉽게 얘기하자면 해시 테이블 내부의 버킷(bucket)을 그룹으로 묶고 그룹 사이를 링크로 연결하여 자기가 원하는 정보가 있는 그룹을 찾아갈 수 있도록 해주는 것이다.[1] 외부에서 보면 해시처럼 보이지만 내부에서 원하는 버킷을 찾아가는 방식으로 기존의 해시와 다르다.

각주[편집]

  1. 1.0 1.1 1.2 더블비안코, 〈DHT(Distributed Hash Table)〉, 《네이버 블로그》, 2007-04-27
  2. 2.0 2.1 분산 해시 테이블〉, 《위키백과》
  3. kblock, 〈(케블리) #8. IPFS(InterPlanetary File System)이해하기 1부 : HTTP Web을 넘어서, IPFS Web으로〉, 《스팀잇》
  4. 딥블루, 〈DHT(Distributed Hash Table 분산 해시 테이블)〉, 《티스토리》, 2013-04-10
  5. Oracle SQL 강좌〉, 《구루비》

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 분산해시테이블 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.