KR20220060793A - 해싱 데이터 관리 장치 및 방법 - Google Patents

해싱 데이터 관리 장치 및 방법 Download PDF

Info

Publication number
KR20220060793A
KR20220060793A KR1020200146786A KR20200146786A KR20220060793A KR 20220060793 A KR20220060793 A KR 20220060793A KR 1020200146786 A KR1020200146786 A KR 1020200146786A KR 20200146786 A KR20200146786 A KR 20200146786A KR 20220060793 A KR20220060793 A KR 20220060793A
Authority
KR
South Korea
Prior art keywords
global heap
heap
global
hashing
data
Prior art date
Application number
KR1020200146786A
Other languages
English (en)
Inventor
차명훈
김홍연
안백송
이상민
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020200146786A priority Critical patent/KR20220060793A/ko
Publication of KR20220060793A publication Critical patent/KR20220060793A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

해싱 데이터 관리 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 해싱 데이터 관리 방법은, 해싱 요청된 키로부터 글로벌 힙 식별자를 발췌하는 단계, 해싱 요청 키에서 글로벌 힙 식별자 제외된 나머지 비트값을 해시 함수의 입력으로 해싱을 실행하는 단계 및 글로벌 힙 식별자를 글로벌 힙 정보 배열 인덱스로 사용하여 글로벌 힙 정보 배열 요소로부터 검색된 글로벌 힙에 해싱된 데이터를 저장하는 단계를 포함하되, 저장하는 단계는, 글로벌 힙에 대응되는 메타데이터가 존재하고, 메타데이터가 지시하는 글로벌 힙과 현 프로세스의 글로벌 힙이 일치할 경우, 해싱된 데이터를 현 프로세스의 글로벌 힙에 저장하는 단계, 글로벌 힙에 대응되는 메타데이터가 존재하고, 메타데이터가 지시하는 글로벌 힙과 현 프로세스의 글로벌 힙과 일치하지 않을 경우, 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 글로별 힙을 교체하고, 해싱된 데이터를 교체된 글로벌 힙에 저장하는 단계 및 글로벌 힙에 대응되는 메타데이터가 존재하지 않을 경우, 신규 글로벌 힙에 대한 메타데이터를 생성하고 대응되는 글로벌 힙 정보 배열의 요소에 그 메타데이터를 연결하고, 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 글로벌 힙을 교체하고, 해싱된 데이터를 교체된 글로벌 힙에 저장하는 단계 중 하나를 수행할 수 있다.

Description

해싱 데이터 관리 장치 및 방법{Apparatus and Method for Managing Hashing Data}
기재된 실시예는 해싱 데이터 관리 기술에 관한 것으로, 특히 메모리를 많이 장착한 서버들이 패브릭/고속 네트워크로 연결되어 있는 환경에서, 대량의 해싱 데이터를 장시간 동안 효율적으로 유지 관리하기 위한 시스템을 대상으로 한다.
해싱은 키(key)를 해시 함수의 입력으로 주고, 해시 함수의 계산에 따른 결과를 이용하여 해시 테이블의 저장 공간 위치를 찾아서 키-값 쌍을 저장하는 방법이며, 통상적인 트리(tree) 순회(traversal)와 같은 오버헤드 없이 즉시 데이터 검색이 가능하다.
단일 서버 기반의 해싱에서, 해싱 데이터를 메모리에만 유지할 경우에는 그 검색 속도는 빠르나 관리되는 데이터 규모가 매우 작은 한계를 가지고 있고, 디스크와 같은 2차 저장장치를 이용하는 해싱에서는 관리되는 데이터 규모는 커지지만 메모리 포맷으로의 변환 오버헤드와 잦은 디스크 입출력 등으로 인하여 속도가 느려지는 한계를 가지고 있다.
일반적으로는, 단일 서버로 해싱 데이터를 관리하다가, 관리되는 규모가 커지면 서버를 추가하고, 그에 따라 해시 함수를 수정해서, 기존의 해싱 데이터를 재해싱(re-hashing)한 후에 재배치하는 접근 방식을 취한다. 그러나, 재해싱과 재배치 오버헤드가 매우 크기 때문에 해싱 데이터를 대규모로 관리하면서 신속한 검색 속도를 항상 유지하는 것은 매우 어렵다.
따라서, 대규모의 해싱 데이터에 대해서도 신속한 검색 속도를 유지함과 아울러 주기적인 재해싱 및 재배치에 따른 오버헤드 없이 장시간 관리하기 위한 수단이 요구된다.
2020년 7월 7일 등록된 미국 특허 US 10706101 B2(출원인: Advanced Micro Devices사)는 해시 테이블을 구성하는 저장 공간의 오버플로우를 해결하기 위하여 재매핑 엔트리를 통한 해시 테이블 저장 공간 관리 방법을 제시하였다. 그러나, 장기간 동안의 모 해싱에 수반되는 해싱 데이터 재배치 오버헤드는 다루지 않았다.
2020년 4월 21일 등록된 미국 특허 US 10628487 B2(출원인: 영남대 산학협력단)는 버킷 단위로 정렬을 하지만 버킷 간에는 전역적인 정렬을 하지 않는 관리 효율적인 해시 충돌 처리 방법을 제시하였지만, 해싱 데이터를 대규모로 관리하는데 있어서의 재배치 오버헤드가 없는 방법은 제공하지 않았다.
종래의 기술들은 해싱 데이터를 효율적으로 관리하기 위해서 인메모리 형태를 유지하는 것이 좋지만, 그 규모의 한계 때문에 주기적으로 서버를 증설하면서 재해싱과 그로 인한 해싱 데이터 재배치 작업을 수행함으로써 그 관리 규모를 늘릴 수 밖에 없으며, 그 결과 해싱 속도가 균일하게 유지되지 못하는 오버헤드가 유발되었다.
또한, 다수 서버를 사용하더라도, 서버와 서버 사이가 네트워크로 연결되어 있으므로, 소켓과 같은 네트워크 기반 통신의 오버헤드로 인하여, 해싱 데이터가 저장된 서버가 변경될 경우의 접근 오버헤드가 크기 때문에, 신속한 검색 속도를 지속적으로 유지하면서 대규모의 해싱 데이터를 관리하기가 매우 어렵다.
미국등록특허 US 10706101 B2 미국등록특허 US 10628487 B2
기재된 실시예는 대규모의 해싱 데이터를 재해싱 및 재배치 오버헤드 없이 장시간 효율적으로 관리하는데 그 목적이 있다.
본 발명의 실시예에 따른 해싱 데이터 관리 방법은, 해싱 요청된 키로부터 글로벌 힙 식별자를 발췌하는 단계, 해싱 요청 키에서 글로벌 힙 식별자 제외된 나머지 비트값을 해시 함수의 입력으로 해싱을 실행하는 단계 및 글로벌 힙 식별자를 글로벌 힙 정보 배열 인덱스로 사용하여 글로벌 힙 정보 배열 요소로부터 검색된 글로벌 힙에 해싱된 데이터를 저장하는 단계를 포함하되, 저장하는 단계는, 글로벌 힙에 대응되는 메타데이터가 존재하고, 메타데이터가 지시하는 글로벌 힙과 현 프로세스의 글로벌 힙이 일치할 경우, 해싱된 데이터를 현 프로세스의 글로벌 힙에 저장하는 단계, 글로벌 힙에 대응되는 메타데이터가 존재하고, 메타데이터가 지시하는 글로벌 힙과 현 프로세스의 글로벌 힙과 일치하지 않을 경우, 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 글로별 힙을 교체하고, 해싱된 데이터를 교체된 글로벌 힙에 저장하는 단계 및 글로벌 힙에 대응되는 메타데이터가 존재하지 않을 경우, 신규 글로벌 힙에 대한 메타데이터를 생성하고 대응되는 글로벌 힙 정보 배열의 요소에 그 메타데이터를 연결하고, 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 글로벌 힙을 교체하고, 해싱된 데이터를 교체된 글로벌 힙에 저장하는 단계 중 하나를 수행할 수 있다.
실시예에 따라, 대규모의 해싱 데이터를 재해싱 및 재배치 오버헤드 없이 장시간 효율적으로 관리할 수 있다.
즉, 본 발명에서는 글로벌 힙들을 모든 프로세스들에서 전역적으로 보이도록 관리하며, 각 프로세스는 원하는 글로벌 힙으로 힙 영역을 교체할 수 있도록 함으로써, 거대 규모의 해싱 데이터가 재배치 오버헤드 없이 지속적으로 유지되는 체제를 제공한다.
또한, 본 발명의 방법에 따른 해싱 데이터 관리 방법에서는 해싱 데이터를 전역적으로 관리되는 글로벌 힙에 저장하며, 프로세스는 글로벌 힙을 매우 신속하게 교체할 수 있으며, 글로벌 힙이 담당하는 해싱 데이터 매핑 범위는 고정되어 있으며, 신규 글로벌 힙이 들어오더라도 기존 글로벌 힙에 저장되어 있던 해싱 데이터를 전혀 이동시킬 필요가 없으므로, 해싱 데이터 재배치 오버헤드가 전혀 없게 된다.
도 1은 실시예에 따른 해싱 데이터 관리 장치의 개략적인 블록 구성도이다.
도 2는 실시예가 적용될 메모리 중심 환경의 구성과 프로세스의 레이아웃 예시도이다.
도 3은 일반적인 해싱 데이터 관리 방식을 설명하기 위한 예시도이다.
도 4는 실시예에 따른 해싱 데이터 관리 방식을 설명하기 위한 예시도이다.
도 5는 실시예에 따른 해싱과 글로벌 힙의 대응 예시도이다.
도 6은 실시예에 따른 글로벌 힙에 해싱 데이터를 저장하는 방법을 설명하기 위한 순서도이다.
도 7은 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 7을 참조하여 실시예에 따른 해싱 데이터 관리 장치 및 방법이 상세히 설명된다.
리눅스와 같은 현대의 운영체제에서는 프로그램을 실행시키면, 프로세스(process)로 추상화되어 표현되며, 프로세스 내에는 프로그램의 실행 명령어 부분과, 전역 변수를 저장하는 부분과, 동적 관리할 데이터를 저장할 힙(heap) 부분 등이 구분되어 배치된다.
여기서, 힙은 프로그램이 자유롭게 데이터를 배치하고, 변경하고, 삭제할 수 있는 곳인데, 기존 운영체제에서 이러한 힙은 그 힙을 포함하고 있는 프로세스에 지역적으로 보이며, 다른 프로세스에서는 접근할 수가 없었다.
패브릭/고속 네트워크를 매개로 대규모의 메모리들이 장착된 서버들이 연동되어 있는 새로운 환경을 실시예에서는 메모리 중심 환경이라고 하며, 이러한 환경에서는, 프로세스의 힙 영역이 매핑될 물리적인 메모리를 단일 서버의 한계를 넘어 다수의 원격 메모리로 매우 빨리 패브릭 수준으로 교체할 수 있는 가능성이 존재한다. 즉, 단일 프로세스에서 단일 서버에 장착된 물리적 메모리만을 이용하여 매핑할 수 있었던 힙 영역이, 단일 서버의 한계를 뛰어넘어 매우 빠른 속도로 원격에 있는 많은 물리적 메모리들로 번갈아 매핑할 수 있으며, 그 결과, 단일 프로세스의 힙 영역의 크기가 거대 규모로 확대되는 효과가 도출된다.
즉, 실시예에 따른 메모리 중심 환경에서는, 힙 영역에 매핑될 메모리 조각들을 프로세스 내에 국한된 지역적 힙으로 관리하는 대신, 모든 프로세스들에 전역적으로 보이는 메모리 조각들로 관리하고, 그러한 메모리 조각들로 구성된 거대 힙을 글로벌 힙이라고 칭한다. 글로벌 힙은 다수개 존재할 수 있다.
도 1은 실시예에 따른 해싱 데이터 관리 장치의 개략적인 블록 구성도이다.
도 1을 참조하면, 실시예에 따른 해싱 데이터 관리 장치는 해싱부(110), 글로벌 힙 관리부(120) 및 메모리 관리부(130)를 포함한다.
해싱부(110)는, 해싱을 수행하고, 그 입력값 및 결과값을 글로벌 힙 관리부(102)에 전달한다.
메모리 관리부(130)는, 고속 네트워크 혹은 패브릭으로 직결된 다수의 메모리들이 글로벌 힙에 연동될 수 있도록 관리한다. 즉, 글로벌 힙을 물리적으로 구현하기 위해 필요한 메모리 관리/통신/제어 역할을 수행한다.
글로벌 힙 관리부(120)는, 다수의 메모리 들을 글로벌 힙(global heap)이라는 전역적으로 구분되고 지속적으로 존재하는 힙(heap) 메모리 개념으로 추상화하여 관리한다. 즉, 글로벌 힙을 구성하는 메모리 조각들의 특정한 모임을 찾을 수 있도록 일종의 메타데이터를 관리하며, 그 해싱 입력값의 일부를 이용하여 메타데이터에서 특정한 글로벌 힙을 식별하며, 그러한 글로벌 힙으로 프로세스의 힙을 교체한다.
즉, 실시예에 따른 글로벌 힙 관리부(120)는 메모리 관리부(130)의 도움을 얻어 글로벌 힙들을 모든 프로세스들에서 전역적으로 보이도록 관리하며, 각 프로세스가 원하는 글로벌 힙으로 힙 영역을 신속하게 교체할 수 있도록 하는 기반을 제공한다. 이를 통해 실시예는 거대 규모의 해싱 데이터가 재배치 오버헤드 없이 지속적으로 유지되는 체제를 제공할 수 있다.
이때, 해싱부(110)는, 글로벌 힙 관리부(120)에 의해 교체된 특정한 글로벌 힙 내에서 해싱 데이터를 배치할 수 있다.
도 2는 실시예가 적용될 메모리 중심 환경의 구성과 프로세스의 레이아웃 예시도이다.
도 2를 참조하면, 실시예가 적용될 메모리 중심 환경은 패브릭/고속 네트워크 형태의 통신 매개체(210)를 중심으로 복수의 컴퓨팅 노드들(220-1, 220-2, 220-3, ...)이 상호간에 연결되도록 구현된다.
이때, 컴퓨팅 노드들(220-1, 220-2, 220-3, ...) 각각에는 대용량 메모리(221-1, 221-2, 221-3,...)가 장착될 수 있다.
한편, 프로그램은 프로세스(230)로 추상화되는데, 일반적으로, 프로세스(230)는 프로그램 실행 바이너리가 기록되는 코드 영역(231), 전역 변수를 포함하는 데이터 영역(232), 동적 데이터 관리가 가능한 힙 영역(233) 및 LIFO(Last-In-First-Out) 형태의 데이터가 관리되는 스택 영역(234)으로 구성된 레이아웃을 가질 수 있다.
이 중에서 힙 영역(233)은 동적으로 할당되고 관리되는 응용 데이터(235)가 포함되는 곳인데, 예컨대, 유전체 응용에서는 유전체 데이터를 힙 영역에 올려놓고(loading) 분석을 수행하며, 그래프 응용에서는 그래프 데이터를 힙 영역에 올려 놓고 탐색 등의 분석 작업을 수행한다.
실시예에서는 대규모 해싱 데이터를 메모리 수준으로 유지하기 위하여 메모리 중심 환경에서 복수의 컴퓨팅 노드들(220-1, 220-2, 220-3, ...) 각각이 장착한 대용량 메모리들(221-1, 221-2, 221-3,...)을 활용하며, 프로세스(230)의 힙 영역(233)에 매핑되는 메모리 조각들(233-2, 233-3)을 상호간에 고속으로 교체할 수 있다.
예컨대, 도 2에 도시된 바와 같이, 프로세스(230)의 가상적인 힙 영역(233)이 물리적으로는 특정 노드(220-2)의 메모리(221-2) 내의 메모리 조각(233-2)으로 매핑되어 있다가, 다른 노드(220-3)의 메모리(221-3) 내의 메모리 조각(233-3)로 교체될 수 있다.
즉, 실시예에 따라, 메모리 중심 환경에서, 프로세스(230)의 힙 영역(233)을 다수 노드들에 구비된 메모리 조각들에 매핑해가면서 프로세스 레이아웃을 필요시 교체할 수 있다. 이는 후술할 거대 규모의 해싱 데이터가 재배치 오버헤드 없이 지속적으로 유지되는 체제를 뒷받침하기 위한 거대 메모리를 실현하기 위한 기반 기술이 될 수 있다.
그러면, 종래의 해싱 데이터 관리 방식과의 비교를 통해 실시예에 따른 해싱 데이터 관리 방식을 설명하기로 한다.
도 3은 일반적인 해싱 데이터 관리 방식을 설명하기 위한 예시도이다.
도 3은 해싱 데이터를 저장하기 위하여 노드 2개(301, 302)로 출발할 시스템에서 시간이 흐름에 따른 변화를 도시하고 있다.
초기에는 특정 노드(301)에 해싱 값 '0~512'에 대응되는 해싱 데이터가 저장되고, 다른 노드(302)에는 해싱 값 '513~1024'에 대응되는 해싱 데이터가 저장되고 있다.
시간이 경과되어, 최초 노드 2개(301, 302)의 용량이 충분히 소모되어, 해싱 데이터를 저장하기 위한 빈(free) 공간이 얼마남지 않게 되면, 새로운 공간을 확보하기 위해 적절한 시점(T1)에 신규 노드(304)가 추가된다.
그러나, 추가된 신규 노드(303) 때문에 해시 함수 자체 혹은 해시 함수의 출력값을 타겟 노드로 매핑해주는 범위 테이블(range table) 등이 변경되어야 한다. 그 이유는 처음에는 노드가 2개(301, 302)이므로 해싱 데이터가 저장될 타겟이 2개였으나, 신규 노드(303)가 투입된 시점(T1)부터는 노드의 총 개수가 3개(301, 302, 303)로 증가되기 때문에, 해싱 데이터가 저장될 타겟 장소도 3개로 변경되어야 하기 때문이다.
따라서, 기존 노드(302)가 관리하던 해싱 값 매핑 범위(513~1024)가 분할되어, 신규 노드(303)가 투입된 시점(T1)부터는 기존 노드(302)에 매핑되는 해싱 값의 범위가 '513~768'이고, 신규 노드(303)에 매핑되는 해상 값의 범위는 '769~1024'로 재조정되어야 신규 노드(303)에도 해싱 데이터가 저장될 수 있게 된다.
일 실시예에 따라, 해시 함수와 범위 테이블을 결합하여 사용하는 경우, 전술한 바와 같이 동작하고, 해시 함수를 직접 변경하는 경우에는 모든 노드들이 영향을 받아 재해싱/재배치 작업이 전체 노드들에 모두 발생하게 된다.
한편, 전술한 바와 같은 범위 조정 작업을 수행한 시점(T1) 직후부터, 기존 노드(302)에 들어 있던 해싱 데이터의 상당수가 신규 노드(303)로 이동되는 재해싱/재배치 작업이 관련 2개 노드(303)에 발생한다. 이러한 재해싱/재배치 과정은 해싱 데이터를 이동시키는 오버헤드를 유발할 뿐만 아니라, 이 기간 동안은 해싱 데이터를 저장하기 위한 본연의 트래픽도 지연시키게 된다.
그런 후, 시간이 다시 경과되어 노드 3개(301, 302, 303)로도 해싱 데이터 저장 공간이 부족한 시점(T2)이 도래되어, 또 다른 신규 노드(304)가 투입된다.
이때, 기존 노드(301)에 매핑되는 해싱값의 범위인 '0~512'가 분할되어, 기존 노드(301)에는 '0~256'이 할당되고, 신규 노드(304)에는 '257~512'가 할당되면서, 기존 해싱 데이터의 재해싱/재배치 작업이 2개의 노드들(301, 304)에 발생된다. 전술한 바와 같이 이러한 재해싱/재배치 과정은 해싱 데이터를 이동시키는 오버헤드를 유발할 뿐만 아니라, 이 기간 동안은 해싱 데이터를 저장하기 위한 본연의 트래픽도 지연시키게 된다.
즉, 종래의 해싱 데이터 관리 방식에 따르면, 복수의 노드들의 클러스터에 새로운 노드가 추가되는 것과 같은 변동이 필연적으로 발생하며, 이를 위해 수행되는 기저장되어 있던 해싱 데이터의 재해싱/재배치 작업은 굉장한 오버헤드를 야기하므로 클러스터의 성능이 급저하되는 부작용이 발생한다.
따라서, 이러한 종래의 문제점을 극복하기 위해, 실시예에 따른 해싱 데이터 관리 방식에서는 종래와 같이 노드에 해싱 데이터를 저장하는 것이 아니라, 글로벌 힙에 해싱 데이터를 저장하는 차이점을 갖는다.
전술한 바와 같이, 글로벌 힙은 대용량 메모리를 장착한 노드들 중에서 선택된 노드의 메모리의 일정 부분으로서, 프로세스에 매핑될 수 있고, 이러한 글로벌 힙-프로세스 매핑은 매우 빠른 속도로 전환될 수 있다. 글로벌 힙은 여러 개 존재하기 때문에 특정한 글로벌 힙을 지정하여 특정한 데이터를 구분하여 저장할 수 있다.
도 4는 실시예에 따른 해싱 데이터 관리 방식을 설명하기 위한 예시도이다.
도 4를 참조하면, 실시예에 따른 해싱 데이터 관리 방식에서는 글로벌 힙이 생성되지 않은 상태에서 시작하며, 해싱 데이터를 저장할 사건이 발생하는 시점(T1)에서 새로운 글로벌 힙(401)을 설정하고, 그 해싱 데이터를 저장하고자 하는 프로세스에 그 글로벌 힙(401)을 매핑한다.
예컨대, 현재 저장하고자 하는 해싱 데이터를 포함한 해싱 데이터 매핑 범위인 '513~768'를 현재의 글로벌 힙(401)에 할당한다.
그런 후, 시간이 경과된 시점(T2)에, 신규 저장할 해싱 데이터가 현 프로세스가 가지고 있는 글로벌 힙(401)의 매핑 범위(513~768)에 속하면, 신규 저장할 해싱 데이터를 현 글로벌 힙(401)에 직접 저장한다.
반면, 신규 해싱 데이터의 매핑 범위와 현 프로세스에 매핑된 글로벌 힙의 매핑 범위(513~768)가 상이하면, 신규 범위(가령, 0~256)에 해당하는 글로벌 힙(402)을 설정해서 현 프로세스의 글로벌 힙(401)을 신규 설정된 글로벌 힙(402)로 교체한다. 그런 후, 매핑 범위 '0~256'에 속하는 신규 해싱 데이터는 현 프로세스에 장착된 새 글로벌 힙(402)에 저장한다. 이때, 구 글로벌 힙(401)은 사라지는 것이 아니라 보존되므로, 추후 구 글로벌 힙(401)이 필요한 시점에는 신속히 구 글로벌 힙(401)으로 교체될 수 있다. 즉, 추후에 신규 저장할 해싱 데이터의 매핑 범위가 '513~768' 일 경우, 현 프로세스의 글로벌 힙을 다시 구 글로벌 힙(401)로 교체해서 신규 데이터를 저장할 수 있다.
시간이 경과된 시점(T3)에, 신규 저장할 해싱 데이터의 매핑 범위(769~1024)가 현 프로세스가 가지고 있는 글로벌 힙들(401, 402) 중 하나에 대응되지 않으면, 신규 글로벌 힙(403)을 설정해서 신규 설정된 글로벌 힙(403)으로 현 프로세스의 글로벌 힙을 전환한 후에 신규 해싱 데이터를 신규 설정된 글로벌 힙(403)에 저장한다.
마찬가지로, 다시 시간이 경과된 시점(T4)에, 신규 저장할 해싱 데이터의 매핑 범위(257~512)가 현 프로세스가 가지고 있는 글로벌 힙들(401, 402, 403) 중 하나에 대응되지 않으면, 신규 글로벌 힙(404)을 설정해서 신규 설정된 글로벌 힙(404)으로 현 프로세스의 글로벌 힙을 전환한 후에 신규 해싱 데이터를 신규 설정된 글로벌 힙(404)에 저장한다.
즉, 실시예에 따른 해싱 데이터 관리 방식에 따르면, 해싱 데이터를 전역적 관리 특성을 가진 글로벌 힙에 저장하며, 프로세스는 글로벌 힙을 매우 신속하게 교체할 수 있으며, 글로벌 힙이 담당하는 해싱 데이터 매핑 범위는 고정되어 있으며, 신규 글로벌 힙이 들어오더라도 기존 글로벌 힙에 저장되어 있던 해싱 데이터를 전혀 이동시킬 필요가 없으므로, 해싱 데이터 재해싱/재배치 오버헤드가 전혀 없다.
도 5는 실시예에 따른 해싱과 글로벌 힙의 대응 예시도이다.
도 5를 참조하면, 해시 함수(Hash Function)(501)에 입력될 키(502)는 복수 개의 비트들로 표현되는데, 실시예에 따른 해싱 기법에서는 키 전체(502)가 아닌, 일부(503)만 해시 함수(501)의 입력(504)으로 투입한다. 대신, 원래의 키(502)를 구성하는 비트 열들 중에서 다른 일부(506)는 글로벌 힙의 식별자 역할을 수행한다.
글로벌 힙의 메타데이터(507)는 운영체제 커널에 배치되며, 메모리 중심 환경 내의 모든 글로벌 힙을 찾기 위한 정보를 보관하는데, 이를 글로벌 힙 정보 배열(global heap information array)이라고 칭한다.
도 5에서 해싱 입력값 중의 일부(506)를 식별자로 이용하여 글로벌 힙 정보 배열(507) 내의 특정 인덱스를 검색하고, 그 인덱스에 연결된 정보를 읽으면 필요한 글로벌 힙을 찾기 위한 모든 정보(가령, 508)가 확인될 수 있다.
도 5에서 글로벌 힙 식별자(506)에 대응되는 글로벌 힙 정보 배열 내의 인덱스가 #4이고, #4에 해당되는 슬롯에 매달린 정보(508)를 이용하면 그 글로벌 힙을 찾을 수 있는 상황을 예시하고 있다.
만일, 글로벌 힙 식별자에 대응되는 정보가 없다면, 즉, 아직 해당 글로벌 힙이 존재하지 않는 상황이면, 그 글로벌 힙을 새롭게 구성하고 그 구성 정보를 글로벌 힙 정보 배열(507) 내에서 글로벌 힙 식별자에 대응되는 빈 슬롯에 매달아 놓는다.
일단, 글로벌 힙이 식별되면 해시 함수(501)에 적용한 키의 일부분(503)과 해싱 결과값(505)에 상응하는 해싱 데이터를 식별된 글로벌 힙에 저장한다.
즉, 전술한 바와 같이, 실시예에 따라 키 값 중에서 일부가 글로벌 힙 식별자로 사용되므로, 글로벌 힙 식별자를 이용하여 글로벌 힙을 찾기 위해 사용되는 내부 구성 요소가 무엇인지를 알 수 있다.
도 6은 실시예에 따른 글로벌 힙에 해싱 데이터를 저장하는 방법을 설명하기 위한 순서도이다.
도 6을 참조하면, 해싱 데이터 관리 장치는 해싱하고자 하는 키가 입력되면, 키에서 글로벌 힙 식별자 부분을 발췌한다(S610).
그런 후, 해싱 데이터 관리 장치는 원래의 키에서 글로벌 힙 식별자(ID)에 상응하는 부분을 제외된 나머지 비트값을 해시 함수의 입력으로 투입(S620)하고, 해싱을 실행한다(S630).
해싱 데이터 관리 장치는 원래의 키에서 발췌된 글로벌 힙 식별자를 글로벌 힙 정보 배열 인덱스로 사용해서 해당 배열 요소에 접근 시도(S640)하여, 글로벌 힙 정보 배열 요소에 검색하고자 하는 글로벌 힙에 대응되는 메타데이터가 존재하는지를 확인한다(S650).
S650의 확인 결과 글로벌 힙에 대응되는 메타데이터가 존재할 경우, 해싱 데이터 관리 장치는 그 메타데이터가 지시하는 글로벌 힙이 이미 현 프로세스의 힙과 일치하는지를 확인한다(S660).
S660의 확인 결과 메타데이터가 지시하는 글로벌 힙이 이미 현 프로세스의 힙과 일치할 경우, 해싱 데이터 관리 장치는 해싱된 데이터를 현 프로세스의 힙에 매핑된 특정한 글로벌 힙에 저장한다(S670).
반면, S650의 확인 결과 글로벌 힙에 대응되는 메타데이터가 존재하지 않을 경우, 해싱 데이터 관리 장치는 신규 글로벌 힙에 대한 메타데이터를 생성하고 대응되는 글로벌 힙 정보 배열의 요소에 그 메타데이터를 연결한다(S680). 그런 후, 그 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 힙을 교체한(S690) 후, S670을 수행한다.
또한, S660의 확인 결과 메타데이터가 지시하는 글로벌 힙과 현 프로세스의 힙이 일치하지 않을 경우, 해싱 데이터 관리 장치는 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 힙을 교체(S690)하고, S670을 수행한다.
도 7은 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
실시예에 따른 대규모 해싱 데이터 관리 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.
컴퓨터 시스템(1000)은 버스(1020)를 통하여 서로 통신하는 하나 이상의 프로세서(1010), 메모리(1030), 사용자 인터페이스 입력 장치(1040), 사용자 인터페이스 출력 장치(1050) 및 스토리지(1060)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1080)에 연결되는 네트워크 인터페이스(1070)를 더 포함할 수 있다. 프로세서(1010)는 중앙 처리 장치 또는 메모리(1030)나 스토리지(1060)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1030) 및 스토리지(1060)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1030)는 ROM(1031)이나 RAM(1032)을 포함할 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
110 : 해싱 부 120 : 글로벌 힙 관리부
130 : 메모리 관리부

Claims (1)

  1. 해싱 요청된 키로부터 글로벌 힙 식별자를 발췌하는 단계;
    해싱 요청 키에서 글로벌 힙 식별자 제외된 나머지 비트값을 해시 함수의 입력으로 해싱을 실행하는 단계; 및
    글로벌 힙 식별자를 글로벌 힙 정보 배열 인덱스로 사용하여 글로벌 힙 정보 배열 요소로부터 검색된 글로벌 힙에 해싱된 데이터를 저장하는 단계를 포함하되,
    저장하는 단계는,
    글로벌 힙에 대응되는 메타데이터가 존재하고, 메타데이터가 지시하는 글로벌 힙과 현 프로세스의 글로벌 힙이 일치할 경우, 해싱된 데이터를 현 프로세스의 글로벌 힙에 저장하는 단계;
    글로벌 힙에 대응되는 메타데이터가 존재하고, 메타데이터가 지시하는 글로벌 힙과 현 프로세스의 글로벌 힙과 일치하지 않을 경우, 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 글로별 힙을 교체하고, 해싱된 데이터를 교체된 글로벌 힙에 저장하는 단계; 및
    글로벌 힙에 대응되는 메타데이터가 존재하지 않을 경우, 신규 글로벌 힙에 대한 메타데이터를 생성하고 대응되는 글로벌 힙 정보 배열의 요소에 그 메타데이터를 연결하고, 메타데이터가 지시하는 글로벌 힙으로 현 프로세스의 글로벌 힙을 교체하고, 해싱된 데이터를 교체된 글로벌 힙에 저장하는 단계 중 하나를 수행하는, 해싱 데이터 관리 방법.
KR1020200146786A 2020-11-05 2020-11-05 해싱 데이터 관리 장치 및 방법 KR20220060793A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200146786A KR20220060793A (ko) 2020-11-05 2020-11-05 해싱 데이터 관리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200146786A KR20220060793A (ko) 2020-11-05 2020-11-05 해싱 데이터 관리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20220060793A true KR20220060793A (ko) 2022-05-12

Family

ID=81590707

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200146786A KR20220060793A (ko) 2020-11-05 2020-11-05 해싱 데이터 관리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20220060793A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628487B2 (en) 2015-12-03 2020-04-21 Industry Academic Cooperation Foundation Of Yeungnam University Method for hash collision detection based on the sorting unit of the bucket
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628487B2 (en) 2015-12-03 2020-04-21 Industry Academic Cooperation Foundation Of Yeungnam University Method for hash collision detection based on the sorting unit of the bucket
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries

Similar Documents

Publication Publication Date Title
CN102455942B (zh) 一种广域网虚拟机动态迁移方法及系统
US8996611B2 (en) Parallel serialization of request processing
US8868926B2 (en) Cryptographic hash database
JP6025149B2 (ja) データを管理するシステムおよび方法
US11099771B2 (en) System and method for early removal of tombstone records in database
CN110147407B (zh) 一种数据处理方法、装置及数据库管理服务器
US9875259B2 (en) Distribution of an object in volatile memory across a multi-node cluster
KR20190095089A (ko) 분산 파일 시스템에 데이터 및 메타데이터를 효율적으로 저장하기 위한 키-값 스토리지를 활용하는 시스템 및 방법
CN102609446B (zh) 一种分布式Bloom过滤系统及其使用方法
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
KR20160060550A (ko) 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
CN104184812A (zh) 一种基于私有云的多点数据传输方法
US20240264773A1 (en) Data Prefetching Method, Computing Node, and Storage System
KR20220060793A (ko) 해싱 데이터 관리 장치 및 방법
CN107832097A (zh) 数据加载方法及装置
CN114840488B (zh) 一种基于超融合结构的分布式存储方法、系统及存储介质
US20220413940A1 (en) Cluster computing system and operating method thereof
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium
Bin et al. An efficient distributed B-tree index method in cloud computing
EP2405360A1 (en) Information processing system and method
CN112835873A (zh) 电网调控异构系统服务化访问方法、系统、设备及介质
Cha et al. Fast and secure Global-Heap for memory-centric computing
CN107168646B (zh) 一种分布式数据存储控制方法及服务器
KR102388458B1 (ko) 데이터 키 값 변환 방법 및 장치