KR102023274B1 - 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘 - Google Patents
슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘 Download PDFInfo
- Publication number
- KR102023274B1 KR102023274B1 KR1020180025581A KR20180025581A KR102023274B1 KR 102023274 B1 KR102023274 B1 KR 102023274B1 KR 1020180025581 A KR1020180025581 A KR 1020180025581A KR 20180025581 A KR20180025581 A KR 20180025581A KR 102023274 B1 KR102023274 B1 KR 102023274B1
- Authority
- KR
- South Korea
- Prior art keywords
- bucket
- slot
- data
- bit counter
- key
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘이 개시된다. 일 실시예에 따른 데이터의 정렬 수행 방법은, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계를 포함할 수 있다.
Description
아래의 설명은 쿠쿠 해시 알고리즘에 관한 것이다.
해시 테이블(hash table)은 키-값(key-value)으로 이루어진 데이터를 빠르게 검색하거나 입력하기 위해 고안된 자료구조이다. 해시 함수(hash function)를 이용하여 키를 적절한 공간(버킷, bucket)에 대응시키고, 그곳에 키와 값을 저장한다. 하지만 저장하고자 하는 데이터가 많을 경우, 두 개 이상의 데이터가 동일한 버킷에 대응하는 경우가 생기는데, 이것을 해시 충돌(hash collision)이라고 한다. 해싱 알고리즘은 이러한 해시 충돌을 해결하는 알고리즘이다. 기존의 선형 탐색(linear probing), 분리 체인(separate chaining)과 같은 해싱 알고리즘은 이론적으로 검색 시간이 최악의 경우(worst case)에 상수 시간보다 크다.
해시 테이블은 빠른 검색이 중요한 역할을 하므로, 최악의 경우, 상수 시간 내에 탐색 연산을 수행하는 것이 필요했는데, 이를 위하여 발명된 알고리즘이 쿠쿠 해시 알고리즘(cuckoo hash algorithm)이다. 쿠쿠 해시 알고리즘은 키를 반드시 고정된 두 버킷에만 대응시키고, 그 두 버킷에서만 입력과 검색이 이루어지므로, 최악의 경우에 상수 시간 내에 검색을 완료할 수 있다. 하지만 처음에 고안된 쿠쿠 해싱 기법은 해시 테이블을 약 50%까지만 활용할 수 있었다. 그리고 두 버킷이 이미 다른 데이터에 의해서 차지되었을 때, 두 버킷에 있는 데이터 중 하나의 데이터를 밀어내고 그 자리를 차지하여야 하는데, 밀려난 데이터는 그 버킷을 제외한 다른 버킷에서 빈 공간을 발견할 때까지 같은 과정을 반복하므로 평균 입력 시간이 증가한다는 문제점이 있다.
기존의 쿠쿠 해싱 기법의 문제점을 해결하기 위하여 여러 가지 연구가 진행되었다. 그 중 가장 기본이 되는 변형이 버킷화 쿠쿠 해싱(bucketized cuckoo hashing)이다. 기존 쿠쿠 해싱 기법은 버킷 하나 당 슬롯(slot) 하나가 있다고 가정했다. 하지만 버킷화 쿠쿠 해싱 기법에서는 버킷 하나 당 둘 이상의 슬롯이 있다고 가정한다. 버킷 하나 당 슬롯이 많을수록 해시 테이블 이용률(load factor)이 올라가지만(버킷 당 슬롯이 4개일 경우 약 90% 이상) 평균 탐색 및 입력 시간은 확인해야 할 슬롯의 개수가 증가하였으므로 늘어난다.
참고자료: KR10-2010-0059901, KR10-2015-0045073
종래의 버킷화 쿠쿠 해싱 알고리즘의 평균 탐색 및 입력 시간을 단축시키기 위한 방법을 제공할 수 있다.
데이터의 정렬을 수행하는 방법은, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계를 포함할 수 있다.
상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는, 상기 1-비트 카운터를 추가로 할당하는 단계를 포함하고, 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계는, 상기 추가로 할당된 1-비트 카운터를 이용하여 입력 연산을 수행함에 따라 각 슬롯에 저장된 데이터가 두 개의 해시 함수 중 제1 해시 함수 또는 제2 함수를 통하여 저장되었는지 기록하는 단계를 포함할 수 있다.
상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계는, 키가 상기 해시 테이블에 존재하지 않을 경우, 입력 연산을 수행하고, 상기 키를 제1 해시 함수의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 검색하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하는지 여부를 판단하는 단계; 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키, 값 및 카운터 값을 입력하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제2 해시 함수를 이용하여 두 개의 버킷 중 다른 하나의 버킷을 검색하는 단계; 및 상기 검색된 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키-값을 삽입하는 단계를 포함할 수 있다.
상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는, 상기 1-비트 카운터를 추가로 할당하는 단계를 포함하고, 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계는, 상기 추가로 할당된 1-비트 카운터를 이용하여 탐색 연산을 수행함에 따라 제1 해시 함수를 사용하여 두 개의 버킷 중 어느 하나의 버킷에 키가 존재하는지 여부를 판단하는 단계; 상기 어느 하나의 버킷에 상기 키가 존재하면 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 제2 해시 함수를 사용하여 상기 두 개의 버킷 중 다른 하나의 버킷에 상기 키가 존재하는지 여부를 확인하는 단계; 및 상기 다른 하나의 버킷에 상기 키가 존재할 경우, 상기 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 널(Null)값을 반환하는 단계를 포함할 수 있다.
상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는, 상기 1-비트 카운터를 추가로 할당하는 단계를 포함하고, 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계는, 상기 할당된 1-비트 카운터를 이용하여 입력 연산을 수행 중에 상기 해시 테이블의 버킷에 풀(Full)상태가 발생하여 데이터를 밀어내는 연산을 할 경우, 카운트 값이 0인 슬롯 중 랜덤하게 선택된 슬롯의 데이터를 밀어내고, 상기 선택된 슬롯에 새로운 데이터를 삽입하고, 상기 선택된 슬롯의 데이터를 다른 버킷에 입력하는 단계를 포함할 수 있다.
상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는, 1-비트 카운터 이상의 복수의 비트 카운터를 추가로 할당하는 단계를 포함하고, 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계는, 상기 추가로 할당된 복수의 비트 카운터를 이용하여 입력 연산을 수행함에 따라 키를 제1 해시 함수의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 검색하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하는지 여부를 판단하는 단계; 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키, 값 및 카운터 값을 입력하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제2 해시 함수를 이용하여 두 개의 버킷 중 다른 하나의 버킷을 검색하는 단계; 및 상기 검색된 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키-값을 삽입하는 단계를 포함할 수 있다.
상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는, 1-비트 카운터 이상의 복수의 비트 카운터를 추가로 할당하는 단계를 포함하고, 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계는, 상기 할당된 복수의 비트 카운터를 이용하여 입력 연산을 수행 중에 상기 해시 테이블의 버킷에 풀(Full)상태가 발생하여 데이터를 밀어내는 연산을 할 경우, 기 설정된 기준 이하의 카운트 값을 갖는 슬롯의 데이터를 밀어내고, 상기 기 설정된 기준 이하의 카운트 값을 갖는 슬롯에 새로운 데이터를 삽입하고, 상기 기 설정된 기준 이하의 카운트 값을 갖는 슬롯의 데이터를 다른 버킷에 입력하는 단계를 포함할 수 있다.
상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는, 1-비트 카운터 이상의 복수의 비트 카운터를 추가로 할당하는 단계를 포함하고, 상기 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행하는 단계는, 상기 추가로 할당된 복수의 비트 카운터를 이용하여 탐색 연산을 수행함에 따라 제1 해시 함수를 사용하여 두 개의 버킷 중 어느 하나의 버킷에 키가 존재하는지 여부를 판단하는 단계; 상기 어느 하나의 버킷에 상기 키가 존재하면 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 제2 해시 함수를 사용하여 상기 두 개의 버킷 중 다른 하나의 버킷에 상기 키가 존재하는지 여부를 확인하는 단계; 및 상기 다른 하나의 버킷에 상기 키가 존재할 경우, 상기 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 널(Null)값을 반환하는 단계를 포함할 수 있다.
버킷화 쿠쿠 해시 테이블에서 테이블 이용률이 높을 때, 입력 연산 수행 시, 추가한 카운터를 이용하여 밀어내는 연산의 횟수를 줄임으로써 평균 입력 시간을 단축시킬 수 있다. 특별히, 1-비트만을 사용하였을 때는 각 버킷에 따른 사용된 해시 함수를 알 수 있으므로 평균 탐색 시간을 감소시킬 수 있다.
도 1은 일 실시예에 따른 데이터 정렬 시스템에서 1-비트 카운터를 추가로 사용한 입력 연산 과정을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 데이터 정렬 시스템에서 1-비트 카운터를 추가로 사용한 탐색 연산 과정을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 데이터 정렬 시스템에서 2-비트 이상의 카운터를 추가로 사용한 입력 연산 과정을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 데이터 정렬 시스템에서 2-비트 이상의 카운터를 추가로 사용한 탐색 연산 과정을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 데이터 정렬 시스템의 구성을 설명하기 위한 블록도이다.
도 6은 일 실시예에 따른 데이터 정렬 시스템의 데이터 검색 방법을 설명하기 위한 흐름도이다.
도 2는 일 실시예에 따른 데이터 정렬 시스템에서 1-비트 카운터를 추가로 사용한 탐색 연산 과정을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 데이터 정렬 시스템에서 2-비트 이상의 카운터를 추가로 사용한 입력 연산 과정을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 데이터 정렬 시스템에서 2-비트 이상의 카운터를 추가로 사용한 탐색 연산 과정을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 데이터 정렬 시스템의 구성을 설명하기 위한 블록도이다.
도 6은 일 실시예에 따른 데이터 정렬 시스템의 데이터 검색 방법을 설명하기 위한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
아래의 실시예에서는 데이터 정렬 시스템에서 쿠쿠 해싱을 수행할 수 있다. 이에 따라 슬롯별로 n-비트 카운터를 추가로 이용할 수 있다. 일례로, 데이터 정렬 시스템은 1-비트 카운터 또는 2-비트 이상의 카운터를 추가로 할당할 수 있다.
데이터 정렬 시스템이 1-비트 카운터를 추가로 할당할 수 있다. 이때, 입력 연산을 수행할 때, 추가로 할당한 1-비트 카운터를 이용하여 각 슬롯에 저장된 데이터가 제1 해시 함수를 통하여 저장되었는지, 제2 해시 함수를 통하여 저장되었는지 여부를 기록할 수 있다. 제1 해시 함수를 이용한 데이터들은 반드시 제2 해시 함수를 이용한 데이터보다 버킷 내에서 앞쪽에 위치하도록 설정할 수 있다. 제1 해시 함수는 첫 번째 해시 함수, 제2 해시 함수는 두 번째 해시 함수를 의미할 수 있으며. 첫 번째 해시 함수를 이용하여 버킷에 접근한 후에 두 번째 해시 함수를 이용하여 버킷에 접근할 수 있다.
탐색 연산은 두 개의 버킷 중 어느 하나의 버킷(예를 들면, 첫 번째 버킷)에서는 제1 해시 함수를 사용한 데이터, 두 개의 버킷 중 다른 하나의 버킷(예를 들면, 두 번째 버킷)에서는 제2 해시 함수를 사용한 데이터만 검색할 수 있다.
입력 연산을 수행 중에 버킷이 풀(Full) 상태(가득찬 상태)에서 밀어내는 연산을 수행할 때, 제1 해시 함수를 사용한 데이터 중 랜덤하게 하나의 데이터를 밀어낼 수 있다. 제2 해시 함수를 사용한 데이터는 어느 하나의 버킷에 더 이상 입력할 공간이 없는 것이 확실하기 때문이다. 제1 해시 함수를 사용한 데이터는 다른 하나의 버킷에 데이터가 가득 차 있는지, 차 있지 않은지 알 수 없다.
데이터 검색 시스템이 2-비트 이상의 카운터를 추가로 할당할 수 있다. 추가로 할당된 2-비트 이상의 카운터를 이용하여 각 데이터가 몇 번 접근되었는지 기록할 수 있다. 2-비트 이상의 카운터를 사용하기 때문에 최소 4번이 기록될 수 있다.
탐색 연산은 카운터 값으로 어떠한 해시 함수를 사용하였는지에 대한 구분이 없기 때문에 기존의 버킷화 쿠쿠 해싱과 같이 버킷 내 슬롯을 모두 탐색하여야 한다.
입력 연산은 밀어내는 연산을 시행할 때 적은 값일수록 밀려난 횟수가 적을 가능성이 높은 가장 적은 카운터 값을 가진 슬롯의 데이터를 밀어낸다. 그리고 나서, 밀려난 데이터에 대응하는 슬롯의 카운터 값을 1 증가시킬 수 있다.
도 1은 일 실시예에 따른 데이터 정렬 시스템에서 1-비트 카운터로 추가로 사용한 입력 연산 과정을 설명하기 위한 도면이다. 1-비트 카운터를 추가로 사용한 쿠쿠 해시 알고리즘의 입력 연산 과정을 설명하기 위한 도면이다. 입력 연산은 키(K)가 해시 테이블에 존재하지 않는 상태에서만 입력 연산을 수행할 수 있다. 먼저, 키를 제1 해시 함수(h 1)의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 획득할 수 있다. 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 빈 슬롯에 데이터를 입력할 수 있다.
어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제1 해시 함수의 해시 함수 값과 반드시 다른 값을 가지는 제2 해시 함수(h 2)를 이용하여 두 개의 버킷 중 다른 하나의 버킷(H 2)을 획득한 후, 획득된 다른 하나의 버킷에 키-값을 삽입할 수 있다. 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 입력이 완료된다. 이때, 다른 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 고정된 두 개의 버킷 모두 빈 자리가 존재하지 않으므로, 하나의 슬롯을 밀어내고, 밀어낸 슬롯을 차지할 수 있다. 이때, 제1 해시 함수를 사용한 경우, 카운터 값을 0, 제2 해시 함수를 사용한 경우, 카운터 값을 1로 저장할 수 있다.
도 1에 기재된 함수는 버킷에 데이터를 저장하는 과정을 나타낸 것이다. 먼저, 각 슬롯이 빈 상태인지 확인할 수 있다. 슬롯이 비어있으면, 키, 값, 카운터 값을 입력할 수 있고, 슬롯이 비어있지 않으면, 아무것도 하지 않는다. 키, 값, 카운터 값을 포함하는 데이터를 입력할 때, 슬롯의 카운터 값이 0인 경우는 슬롯에 대응되는 버킷에서 카운터 값이 1인 슬롯과 자리를 교체할 수 있다. 이때, 카운터 값이 1인 슬롯 중 가장 먼저 이동된 첫 번째 슬롯과 자리를 교체할 수 있다.
또한, 함수는 고정된 두 개의 버킷이 빈 상태가 아닐 경우, 카운터 값이 0인 슬롯 중 랜덤하게 하나의 슬롯을 밀어내고, 밀어낸 슬롯의 자리에 현재 넣고자 하는 키-값을 삽입하고, 슬롯에서 밀려난 데이터를 다른 하나의 버킷에 입력하는 작업을 수행할 수 있다. 이때, 빈 슬롯을 발견할 때가지 반복하여 데이터의 입력을 완료할 수 있다. 그러나, 미리 정해놓은 횟수 내에 빈 슬롯을 발견하지 못할 경우, 데이터의 입력은 실패한다. 이 경우, 해시 테이블의 크기를 증가시키거나, 해시 테이블 중 하나의 슬롯을 삭제하여야 한다. 그리고, 데이터가 슬롯에서 밀려날 때마다 상기 함수와 관련하여 카운터 값을 변경시킬 수 있다.
도 2를 참고하면, 1-비트 카운터를 추가로 사용한 쿠쿠 해시에서 탐색 연산 과정을 설명하기 위한 도면이다. 탐색 연산은 찾고자 하는 키가 해시 테이블에 존재할 경우, 해시 테이블에서 키에 대응하는 값이 반환되고, 해시 테이블에 키가 존재하지 않을 경우, 널(Null)을 반환할 수 있다. 입력에 사용된 제1 해시 함수(예를 들면, 첫 번째 해시 함수)를 이용하여 두 개의 버킷 중 어느 하나의 버킷(예를 들면, 첫 번째 버킷)에 키가 존재하는지 확인할 수 있다. 이때, 어느 하나의 버킷에서 제1 해시 함수를 사용한 데이터들만 비교하여 키가 존재하는지 여부를 확인할 수 있다. 어느 하나의 버킷에 키가 존재할 경우, 키와 대응하는 값을 반환하고, 키가 존재하지 않을 경우 제2 해시 함수(예를 들면, 두 번째 해시 함수)를 사용하여 두 개의 버킷 중 다른 하나의 버킷(예를 들면, 두 번째 버킷)을 확인할 수 있다. 다른 하나의 버킷에서 제2 해시 함수를 사용한 데이터만을 확인하여 키가 존재하는지 여부를 확인할 수 있다. 다른 하나의 버킷에 키가 존재할 경우, 키에 대응하는 값을 반환할 수 있다. 다른 하나의 버킷에도 키가 존재하지 않을 경우, 널(Null)을 반환하여 해시 테이블에 키가 존재하지 않음을 판단할 수 있다.
함수는 버킷에 키가 존재하는지 확인하는 함수로서, 어느 하나의 버킷에서 제1 해시 함수를 사용한 데이터를 확인하고, 다른 하나의 버킷에서 제2 해시 함수를 사용한 데이터를 확인할 수 있다. 이때, 버킷에 키가 존재할 경우, 키에 대응하는 값을 반환하고, 버킷에 키가 존재하지 않으면 널(Null)을 반환할 수 있다.
도 3을 참고하면, 2-비트 이상의 카운터를 추가로 사용한 쿠쿠 해시에서의 입력 연산 과정을 설명하기 위한 도면이다. 2-비트 이상의 카운터를 추가로 사용한 입력 연산 과정은 도 1과 같이 동일하게 동작할 수 있다. 입력 연산은 키(K)가 해시 테이블에 존재하지 않는 상태에서만 입력 연산을 수행할 수 있다. 먼저, 키를 제1 해시 함수(h 1)의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 획득할 수 있다. 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 빈 슬롯에 데이터를 입력할 수 있다. 어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제1 해시 함수의 해시 함수 값과 반드시 다른 값을 가지는 제2 해시 함수(h 2)를 이용하여 두 개의 버킷 중 다른 하나의 버킷(H 2)을 획득한 후, 획득된 다른 하나의 버킷에 키-값을 삽입할 수 있다. 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 입력이 완료된다. 이때, 다른 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 고정된 두 개의 버킷 모두 빈 자리가 존재하지 않으므로, 하나의 슬롯을 밀어내고, 밀어낸 슬롯을 차지할 수 있다. 이때, 제1 해시 함수를 사용한 경우, 카운터 값을 0, 제2 해시 함수를 사용한 경우, 카운터 값을 1로 저장할 수 있다. 2-비트 이상의 카운터를 추가한 쿠쿠 해시에서, 밀어내는 연산을 수행하기 이전에는 사용한 해시 함수에 따라 버킷 내에서의 위치가 정해지는 것이 제거될 수 있다. 밀어낼 때에는 버킷 내에서 가장 작은 카운터 값을 가지는 슬롯을 밀어낼 수 있다.
도 3에 기재된 함수는 버킷에 데이터를 저장하는 과정을 나타낸다. 먼저, 각 슬롯이 비어있는지 확인하고, 슬롯이 비어있을 경우, 빈 슬롯에 키, 값 및 카운터 값을 입력하고, 슬롯이 비어있지 않을 경우 아무것도 하지 않는다.
또한, 도 3에 기재된 함수는 고정된 두 개의 버킷이 비어있지 않을 경우, 밀어내는 버킷에서 카운터 값이 작은 슬롯을 밀어내고, 밀어낸 슬롯의 자리에 현재 넣고자 하는 키-값을 삽입하고, 밀려난 데이터를 다른 버킷에 입력할 수 있다. 슬롯을 밀어낼 때마다 카운터 값을 1씩 증가시킬 수 있다. 이때, 빈 슬롯을 발견할 때까지 반복하여 데이터의 입력을 완료할 수 있다.
도 4를 참고하면, 2-비트 이상의 카운터를 추가로 사용한 탐색 연산 과정을 설명하기 위한 도면이다. 탐색하고자 하는 키가 해시 테이블에 존재하면, 키에 대응하는 값이 반환되고, 키가 존재하지 않으면 널(Null)을 반환할 수 있다. 입력하였을 때 사용한 제1 함수를 이용하여 두 개의 버킷 중 어느 하나의 버킷에 키가 존재하는지 확인할 수 있다. 버킷에 키가 존재할 경우, 키에 대응하는 값을 반환하고, 키가 존재하지 않을 경우, 제2 해시 함수를 사용하여 다른 하나의 버킷을 확인할 수 있다. 다른 하나의 버킷에 키가 존재하면 키에 대응하는 값을 반환할 수 있고, 다른 하나의 버킷에도 키가 존재하지 않을 경우, 널(Null)을 반환하여 해시 테이블에 키가 존재하지 않음을 확인할 수 있다.
도 4에 기재된 함수는 해당 버킷에 키가 존재하는지 확인하는 함수로서, 버킷 내에 모든 슬롯을 참조하며 키가 일치하는지 확인할 수 있다. 이때 키가 존재하면 키에 대응하는 값을 반환하고, 버킷에 키가 존재하지 않을 경우, 널(Null)을 반환할 수 있다.
도 5는 일 실시예에 따른 데이터 정렬 시스템의 구성을 설명하기 위한 블록도이고, 도 6은 일 실시예에 따른 데이터 정렬 시스템의 데이터 정렬 방법을 설명하기 위한 흐름도이다.
데이터 정렬 시스템(100)은 할당부(510) 및 연산부(520)를 포함할 수 있다. 이러한 구성요소들은 데이터 정렬 시스템(100)에 저장된 프로그램 코드가 제공하는 제어 명령에 따라 프로세서에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 구성요소들은 도 6의 데이터 정렬 방법이 포함하는 단계들(610 내지 620)을 수행하도록 데이터 정렬 시스템(100)을 제어할 수 있다. 이때, 구성요소들은 메모리가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
프로세서는 데이터 정렬 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리에 로딩할 수 있다. 예를 들면, 데이터 정렬 시스템(100)에서 프로그램이 실행되면, 프로세서는 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드를 메모리에 로딩하도록 서버를 제어할 수 있다. 이때, 프로세서 및 프로세서가 포함하는 할당부(510) 및 연산부(520) 각각은 메모리에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(610 내지 620)을 실행하기 위한 프로세서의 서로 다른 기능적 표현들일 수 있다.
단계(610)에서 할당부(510)는 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당할 수 있다. 할당부(510)는 1-비트 카운터를 추가로 할당할 수 있고, 또는, 1-비트 카운터 이상의 복수의 비트 카운터를 추가로 할당할 수 있다.
단계(620)에서 연산부(520)는 추가로 할당된 n-비트 카운터를 이용하여 연산을 수행할 수 있다. 연산부(520)는 추가로 할당된 1-비트 카운터를 이용하여 입력 연산을 수행함에 따라 각 슬롯에 저장된 데이터가 두 개의 해시 함수 중 제1 해시 함수 또는 제2 해시 함수를 통하여 저장되었는지 기록할 수 있다. 이때, 버킷 내에서 두 개의 해시 함수 중 제1 해시 함수를 이용하여 저장된 데이터를 상기 제2 해시 함수를 이용한 데이터보다 앞쪽에 위치시킬 수 있다. 연산부(520)는 키가 해시 테이블에 존재하지 않을 경우, 입력 연산을 수행하고, 키를 제1 해시 함수의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 검색하고, 검색된 어느 하나의 버킷에 빈 슬롯이 존재하는지 여부를 판단할 수 있다. 연산부(520)는 검색된 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 빈 슬롯에 키, 값 및 카운터 값을 입력하고, 검색된 어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제2 해시 함수를 이용하여 두 개의 버킷 중 다른 하나의 버킷을 검색할 수 있다. 연산부(520)는 검색된 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 빈 슬롯에 키-값을 삽입할 수 있다.
연산부(520)는 추가로 할당된 1-비트 카운터를 이용하여 탐색 연산을 수행함에 따라 제1 해시 함수를 사용하여 두 개의 버킷 중 어느 하나의 버킷에 키가 존재하는지 여부를 판단할 수 있다. 연산부(520)는 어느 하나의 버킷에 키가 존재하면 키에 대응하는 값을 반환하고, 키가 존재하지 않을 경우, 제2 해시 함수를 사용하여 두 개의 버킷 중 다른 하나의 버킷에 키가 존재하는지 여부를 확인할 수 있다. 연산부(520)는 다른 하나의 버킷에 키가 존재할 경우, 키에 대응하는 값을 반환하고, 키가 존재하지 않을 경우, 널(Null)값을 반환할 수 있다.
연산부(520)는 할당된 1-비트 카운터를 이용하여 입력 연산을 수행 중에 해시 테이블의 버킷에 풀(Full)상태가 발생하여 데이터를 밀어내는 연산을 할 경우, 카운트 값이 0인 슬롯 중 랜덤하게 선택된 슬롯의 데이터를 밀어내고, 선택된 슬롯에 새로운 데이터를 삽입하고, 선택된 슬롯의 데이터를 다른 버킷에 입력할 수 있다.
연산부(520)는 추가로 할당된 복수의 비트 카운터를 이용하여 입력 연산을 수행함에 따라 키를 제1 해시 함수의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 검색하고, 검색된 어느 하나의 버킷에 빈 슬롯이 존재하는지 여부를 판단할 수 있다. 연산부(520)는 검색된 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 빈 슬롯에 키, 값 및 카운터 값을 입력하고, 검색된 어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제2 해시 함수를 이용하여 두 개의 버킷 중 다른 하나의 버킷을 검색할 수 있다. 연산부(520)는 검색된 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 빈 슬롯에 키-값을 삽입할 수 있다.
연산부(520)는 할당된 복수의 비트 카운터를 이용하여 입력 연산을 수행 중에 해시 테이블의 버킷에 풀(Full)상태가 발생하여 데이터를 밀어내는 연산을 할 경우, 기 설정된 기준 이하의 카운트 값을 갖는 슬롯의 데이터를 밀어내고, 기 설정된 기준 이하의 카운트 값을 갖는 슬롯에 새로운 데이터를 삽입하고, 기 설정된 기준 이하의 카운트 값을 갖는 슬롯의 데이터를 다른 버킷에 입력할 수 있다.
연산부(520)는 추가로 할당된 복수의 비트 카운터를 이용하여 탐색 연산을 수행함에 따라 제1 해시 함수를 사용하여 두 개의 버킷 중 어느 하나의 버킷에 키가 존재하는지 여부를 판단할 수 있다. 연산부(520)는 어느 하나의 버킷에 키가 존재하면 키에 대응하는 값을 반환하고, 키가 존재하지 않을 경우, 제2 해시 함수를 사용하여 두 개의 버킷 중 다른 하나의 버킷에 키가 존재하는지 여부를 확인할 수 있다. 연산부(520)는 다른 하나의 버킷에 키가 존재할 경우, 키에 대응하는 값을 반환하고, 키가 존재하지 않을 경우, 널(Null)값을 반환할 수 있다.
해시 테이블은 컴퓨터 공학 전반에 걸쳐 널리 사용되고 있는 자료구조이다. 특히, Redis나 Memcached 같은 메모리를 이용하는 키-값 스토어(key-value store)에서 데이터를 저장하는 자료구조가 해시 테이블이다. 기존에는 분리 체인과 같은 방법을 사용하고 있지만, 일 실시예에 따른 쿠쿠 해싱 알고리즘을 적용함으로써 더 좋은 성능을 발휘할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (8)
- 할당부 및 연산부를 포함하는 데이터 정렬 시스템에 의해 수행되는 데이터의 정렬을 수행하는 방법에 있어서,
상기 할당부에서, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계
를 포함하고,
상기 할당부에서, 상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는,
1-비트 카운터를 추가로 할당하는 단계
를 포함하고,
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계는,
상기 추가로 할당된 1-비트 카운터를 이용하여 입력 연산을 수행함에 따라 각 슬롯에 저장된 데이터가 두 개의 해시 함수 중 제1 해시 함수 또는 제2 함수를 통하여 저장되었는지 기록하는 단계
를 포함하는 데이터의 정렬 수행 방법. - 삭제
- 제1항에 있어서,
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계는,
키가 상기 해시 테이블에 존재하지 않을 경우, 입력 연산을 수행하고, 상기 키를 제1 해시 함수의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 검색하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하는지 여부를 판단하는 단계;
상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키, 값 및 카운터 값을 입력하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제2 해시 함수를 이용하여 두 개의 버킷 중 다른 하나의 버킷을 검색하는 단계; 및
상기 검색된 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키-값을 삽입하는 단계
를 포함하는 데이터의 정렬 수행 방법. - 할당부 및 연산부를 포함하는 데이터 정렬 시스템에 의해 수행되는 데이터의 정렬을 수행하는 방법에 있어서,
상기 할당부에서, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계
를 포함하고,
상기 할당부에서, 상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는,
1-비트 카운터를 추가로 할당하는 단계
를 포함하고,
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계는,
상기 추가로 할당된 1-비트 카운터를 이용하여 탐색 연산을 수행함에 따라 제1 해시 함수를 사용하여 두 개의 버킷 중 어느 하나의 버킷에 키가 존재하는지 여부를 판단하는 단계;
상기 어느 하나의 버킷에 상기 키가 존재하면 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 제2 해시 함수를 사용하여 상기 두 개의 버킷 중 다른 하나의 버킷에 상기 키가 존재하는지 여부를 확인하는 단계; 및
상기 다른 하나의 버킷에 상기 키가 존재할 경우, 상기 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 널(Null)값을 반환하는 단계
를 포함하는 데이터의 정렬 수행 방법. - 할당부 및 연산부를 포함하는 데이터 정렬 시스템에 의해 수행되는 데이터의 정렬을 수행하는 방법에 있어서,
상기 할당부에서, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계
를 포함하고,
상기 할당부에서, 상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는,
1-비트 카운터를 추가로 할당하는 단계
를 포함하고,
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계는,
상기 할당된 1-비트 카운터를 이용하여 입력 연산을 수행 중에 상기 해시 테이블의 버킷에 풀(Full)상태가 발생하여 데이터를 밀어내는 연산을 할 경우, 카운트 값이 0인 슬롯 중 랜덤하게 선택된 슬롯의 데이터를 밀어내고, 상기 선택된 슬롯에 새로운 데이터를 삽입하고, 상기 선택된 슬롯의 데이터를 다른 버킷에 입력하는 단계
를 포함하는 데이터의 정렬 수행 방법. - 할당부 및 연산부를 포함하는 데이터 정렬 시스템에 의해 수행되는 데이터의 정렬을 수행하는 방법에 있어서,
상기 할당부에서, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계
를 포함하고,
상기 할당부에서, 상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는,
1-비트 카운터 이상의 복수의 비트 카운터를 추가로 할당하는 단계
를 포함하고,
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계는,
상기 추가로 할당된 복수의 비트 카운터를 이용하여 입력 연산을 수행함에 따라 키를 제1 해시 함수의 인자로 사용하여 두 개의 버킷 중 어느 하나의 버킷을 검색하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하는지 여부를 판단하는 단계;
상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키, 값 및 카운터 값을 입력하고, 상기 검색된 어느 하나의 버킷에 빈 슬롯이 존재하지 않을 경우, 제2 해시 함수를 이용하여 두 개의 버킷 중 다른 하나의 버킷을 검색하는 단계; 및
상기 검색된 다른 하나의 버킷에 빈 슬롯이 존재할 경우, 상기 빈 슬롯에 키-값을 삽입하는 단계
를 포함하는 데이터의 정렬 수행 방법. - 할당부 및 연산부를 포함하는 데이터 정렬 시스템에 의해 수행되는 데이터의 정렬을 수행하는 방법에 있어서,
상기 할당부에서, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계
를 포함하고,
상기 할당부에서, 상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는,
1-비트 카운터 이상의 복수의 비트 카운터를 추가로 할당하는 단계
를 포함하고,
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계는,
상기 할당된 복수의 비트 카운터를 이용하여 입력 연산을 수행 중에 상기 해시 테이블의 버킷에 풀(Full)상태가 발생하여 데이터를 밀어내는 연산을 할 경우, 기 설정된 기준 이하의 카운트 값을 갖는 슬롯의 데이터를 밀어내고, 상기 기 설정된 기준 이하의 카운트 값을 갖는 슬롯에 새로운 데이터를 삽입하고, 상기 기 설정된 기준 이하의 카운트 값을 갖는 슬롯의 데이터를 다른 버킷에 입력하는 단계
를 포함하는 데이터의 정렬 수행 방법. - 할당부 및 연산부를 포함하는 데이터 정렬 시스템에 의해 수행되는 데이터의 정렬을 수행하는 방법에 있어서,
상기 할당부에서, 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계; 및
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계
를 포함하고,
상기 할당부에서, 상기 해시 테이블에서 버킷의 각각의 슬롯에 n(n은 자연수)-비트 카운터를 추가로 할당하는 단계는,
1-비트 카운터 이상의 복수의 비트 카운터를 추가로 할당하는 단계
를 포함하고,
상기 연산부에서, 상기 추가로 할당된 n-비트 카운터를 이용하여 입력 연산 또는 탐색 연산을 수행하는 단계는,
상기 추가로 할당된 복수의 비트 카운터를 이용하여 탐색 연산을 수행함에 따라 제1 해시 함수를 사용하여 두 개의 버킷 중 어느 하나의 버킷에 키가 존재하는지 여부를 판단하는 단계;
상기 어느 하나의 버킷에 상기 키가 존재하면 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 제2 해시 함수를 사용하여 상기 두 개의 버킷 중 다른 하나의 버킷에 상기 키가 존재하는지 여부를 확인하는 단계; 및
상기 다른 하나의 버킷에 상기 키가 존재할 경우, 상기 키에 대응하는 값을 반환하고, 상기 키가 존재하지 않을 경우, 널(Null)값을 반환하는 단계
를 포함하는 데이터의 정렬 수행 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180025581A KR102023274B1 (ko) | 2018-03-05 | 2018-03-05 | 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180025581A KR102023274B1 (ko) | 2018-03-05 | 2018-03-05 | 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190105268A KR20190105268A (ko) | 2019-09-17 |
KR102023274B1 true KR102023274B1 (ko) | 2019-09-19 |
Family
ID=68067715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180025581A KR102023274B1 (ko) | 2018-03-05 | 2018-03-05 | 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102023274B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100011028A1 (en) | 2008-07-14 | 2010-01-14 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
KR101543841B1 (ko) | 2013-07-17 | 2015-08-11 | 인하대학교 산학협력단 | 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템 |
US9798756B2 (en) | 2012-07-25 | 2017-10-24 | International Business Machines Corporation | Systems, methods and computer program products for probing a hash table for improved latency and scalability in a processing system |
-
2018
- 2018-03-05 KR KR1020180025581A patent/KR102023274B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100011028A1 (en) | 2008-07-14 | 2010-01-14 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US9798756B2 (en) | 2012-07-25 | 2017-10-24 | International Business Machines Corporation | Systems, methods and computer program products for probing a hash table for improved latency and scalability in a processing system |
KR101543841B1 (ko) | 2013-07-17 | 2015-08-11 | 인하대학교 산학협력단 | 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템 |
Non-Patent Citations (1)
Title |
---|
장룡호 등, "Cuckoo Hashing을 이용한 RCC에 대한 성능향상", 한국통신학회논문지 제41권 제6호, pp 663-671, 2016.6 1부.* |
Also Published As
Publication number | Publication date |
---|---|
KR20190105268A (ko) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11082206B2 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
US20200249849A1 (en) | Method and apparatus for managing storage system | |
US10885005B2 (en) | Disk optimized paging for column oriented databases | |
US11461027B2 (en) | Deduplication-aware load balancing in distributed storage systems | |
US10255287B2 (en) | Method and apparatus for on-disk deduplication metadata for a deduplication file system | |
JP4206586B2 (ja) | データベース管理方法および装置並びにデータベース管理プログラムを記録した記憶媒体 | |
US11586629B2 (en) | Method and device of storing data object | |
US10783115B2 (en) | Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset | |
US11048757B2 (en) | Cuckoo tree with duplicate key support | |
US11288275B2 (en) | Technique for fast join processing of dictionary encoded key columns in relational database systems | |
JP6479186B2 (ja) | 計算機システム及びデータベース管理方法 | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
EP3707614B1 (en) | Redistributing table data in database cluster | |
Bender et al. | Iceberg hashing: Optimizing many hash-table criteria at once | |
KR102354343B1 (ko) | 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치 | |
CN114518841A (zh) | 存储器中处理器和使用存储器中处理器输出指令的方法 | |
KR102085132B1 (ko) | 버킷 내부에서 해시 함수의 분류를 이용한 효율적인 쿠쿠 해시 방법 | |
KR102023274B1 (ko) | 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘 | |
KR101993555B1 (ko) | Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템 | |
KR101543841B1 (ko) | 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템 | |
US11593010B2 (en) | Systems and methods for block-data clustering-based deduplication | |
KR20210101454A (ko) | 공간 조인 수행 방법 및 장치 | |
KR20220158832A (ko) | 데이터 스토리지 시스템에서 라이트 소트 관리 | |
CN117349259A (zh) | 对象版本索引方法、装置和设备 | |
CN115373582A (zh) | 一种布隆过滤器配置方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |