KR102189398B1 - 국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템 - Google Patents

국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR102189398B1
KR102189398B1 KR1020170062052A KR20170062052A KR102189398B1 KR 102189398 B1 KR102189398 B1 KR 102189398B1 KR 1020170062052 A KR1020170062052 A KR 1020170062052A KR 20170062052 A KR20170062052 A KR 20170062052A KR 102189398 B1 KR102189398 B1 KR 102189398B1
Authority
KR
South Korea
Prior art keywords
interval
search
hash
sub
section
Prior art date
Application number
KR1020170062052A
Other languages
English (en)
Other versions
KR20170140072A (ko
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 팔로 알토 리서치 센터 인코포레이티드
Publication of KR20170140072A publication Critical patent/KR20170140072A/ko
Application granted granted Critical
Publication of KR102189398B1 publication Critical patent/KR102189398B1/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/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • 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/903Querying
    • G06F16/90335Query processing
    • G06F16/90348Query processing by searching ordered data, e.g. alpha-numerically ordered data

Abstract

본 발명의 실시형태는 주어진 질의 구간 또는 지점과 겹치는 모든 구간을 찾아내도록 구간 집합을 표현 및 검색하기 위한 시간-효율적 및 공간-효율적 시스템을 제공한다. 소위 구간 해시 테이블이라는 새로운 구조가 도입되어 평균 검색 시간을 상당히 감축하고, 그로써 컴퓨팅 및 검색 기술을 개선한다. 연산 동안, 시스템은 해싱될 구간 집합을 표시하는 데이터를 획득한다. 시스템은 국소성-유지 해싱에 기반하여 각각의 구간을 부분-구간 집합으로 분할한다. 그 후 시스템은 각각의 부분-구간과 연관된 해시 코드를 획득하고, 그리고 해시 코드에 대응하는 위치에서 구간 해시 테이블에 각각의 부분-구간을 삽입한다. 시스템은 구간 해시 테이블을 더 검색할 수 있다.

Description

국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템{SYSTEM AND METHOD FOR EFFICIENT INTERVAL SEARCH USING LOCALITY-PRESERVING HASHING}
본 발명은 구간 검색에 관한 것이다. 더 구체적으로, 본 발명은 주어진 질의 구간 또는 지점과 겹치는 모든 구간을 찾아내도록 구간 집합을 표현 및 검색하기 위한 방법 및 시스템에 관한 것이다.
구간은 밀집한, 순서화된 요소(dense, ordered elements)의 중단되지 않은 집합이다. 밀집한 요소는 실수처럼 진정 연속적일 수 있거나, 또는 단순히 IP 주소 또는 URL과 같은 밀집한, 순서화된 요소일 수 있다. 구간은 중단되지 않은 것이고, 그래서 범위에서의 모든 밀집한, 순서화된 요소를 포함하고 있다.
주어진 질의 구간 또는 지점과 겹치는 모든 구간을 찾아내도록 구간 집합을 검색하는 문제는 인터넷 및 패킷 라우팅, 클래스리스 인터-도메인 라우팅(classless inter-domain routing: CIDR), 지오-IP 검색(geo-IP search), 지리학적 정보 시스템, 메모리 관리, 가비지 콜렉션, 영속적 객체-지향 데이터베이스, 및 웹-서버 액세스 제어를 포함하는 많은 애플리케이션을 갖는다. 예컨대, 지오-IP 검색 애플리케이션은 (추천 및 고객맞춤화를 위해) 그 또는 그녀의 IP 주소에 기반하여 고객의 지오-위치를 찾아내도록 고객 관리에서 사용될 수 있다.
구간 검색에 대한 관용적 접근법은, 효율적으로 구간 질의에 대답하도록 설계된 (통상 레드-블랙 트리(red-black tree)로서 구현되는) 특수 유형의 2진 검색 트리인, 소위 구간 트리라는 데이터 구조에 기반한다. 구간 트리는, O(n) 공간을 사용하여, O(n log n) 시간에서 구축될 수 있으며, 여기서 n은 구간의 수이다. 그것은 O(log n + k) 시간에서 검색될 수 있으며, 여기서 k는 출력에서 구간의 수이다.
구간 트리가 현재 최신식이기는 하지만, 그들의 O(log n + k) 검색 시간은, 흔히 구간 질의의 속도를 증가시키도록 특수 하드웨어를 사용하여야 하는, 패킷 라우팅과 같은 많은 애플리케이션에 대한 실시간 요건을 충족하지 않을 수 있다. 구간 트리는 요소를 좌측과 우측 브랜치 간 분할하여야 하여, 균형, 및 요소가 저장되는 순서에 대한 저장 위치의 가능한 종속성의 고려를 초래한다. 그래서, 어레이에서의 2진 검색은 통상, 브랜치 전부에서 완벽히 균형잡히지는 않을 수 있는, 트리에서의 2진 검색보다 더 시간 효율적이다. 저장에 관하여, 포인터의 구간 트리의 과중한 사용은, 특히, 포인터가 32-비트 머신 상의 그것의 크기의 2배인 64-비트 머신 상에서, 공간 오버헤드를 상당히 증가시킬 수 있다. 마지막으로, 구간 검색은 본질적으로는 2진 검색 트리에서의 포인터 추적으로서, 불량한 메모리 참조 국소성을 산출하고 그리하여 RAM보다 훨씬 더 빠른 L1 및 L2 캐시와 같은 현대 프로세서의 메모리 계층으로부터 혜택을 보지 못할 수 있다.
본 발명의 일 실시형태는 구간 해싱(hashing) 및 검색을 위한 방법 및 시스템을 제공한다. 연산 동안, 시스템은 해싱될 구간 집합을 표시하는 데이터를 획득한다. 시스템은 인근 요소를 인근 해시 코드에 매핑하는 국소성-유지 해싱에 기반하여 각각의 구간을 부분-구간 집합으로 분할한다. 그 후, 시스템은, 국소성-유지 해싱을 통하여, 각각의 부분-구간과 연관된 해시 코드를 획득한다. 그 후, 시스템은 각각의 부분-구간을 해시 코드에 대응하는 위치에서 구간 해시 테이블에 삽입한다. 그 후, 시스템은, 구간 해시 테이블을 비-일시적 저장 매체에 저장한다.
이러한 실시형태에 관한 변형에서, 시스템은, 국소성-유지 해싱을 통하여, 각각의 구간의 최저-순서 요소에 대한 하위 해시 코드 및 최고-순서 요소에 대한 상위 해시 코드를 획득할 수 있다. 시스템은 하위 해시 코드, 하위와 상위 해시 코드 중간에 있는 해시 코드 또는 코드들, 및 상위 해시 코드를 포함하는 해시 코드 집합을 형성할 수 있다. 시스템은 해시 코드 집합에서의 각각의 해시 코드에만 연관된 최대 구간을 획득할 수 있되, 최대 구간은 각각의 해시 코드에만 연관된 어느 더 큰 구간에 의해서도 포섭되지 않는다. 시스템은 각각의 구간의 최저-순서 요소 및 최고-순서 요소 및 획득된 최대 구간에 기반하여 각각의 해시 코드와 연관된 각각의 부분-구간을 식별할 수 있다.
이러한 실시형태에 관한 변형에서, 시스템은 검색 구간을 포함하는 검색 질의를 수신할 수 있다. 시스템은 국소성-유지 해싱에 기반하여 검색 구간을 검색 부분-구간 집합으로 분할할 수 있다. 시스템은, 국소성-유지 해싱을 통하여, 각각의 검색 부분-구간과 연관된 검색 해시 코드를 획득할 수 있다. 시스템은, 각각의 검색 부분-구간의 최저-순서 요소 및 최고-순서 요소와 제2 구간의 최저-순서 요소 및 최고-순서 요소를 비교하는 것에 기반하여, 각각의 검색 부분-구간과 겹치는 해시 코드와 연관된 구간을 찾도록 해시 테이블을 검색할 수 있다.
이러한 실시형태에 관한 변형에서, 구간 해시 테이블은, 검색 해시 코드와 연관된 획득된 구간 집합이 서로소가 되도록 하는, 서로소 구간 해시 테이블일 수 있다. 각각의 검색 부분-구간은, 각각의 검색 부분-구간의 최저-순서 요소 및 최고-순서 요소가 검색 요소와 같도록, 단일 검색 요소를 포함할 수 있다. 각각의 구간이 검색 요소와 겹치는지 결정하는 것은 2진 검색을 사용하는 것을 더 포함할 수 있다.
이러한 실시형태에 관한 변형에서, 시스템은 구간 해시 테이블에 기반하여 클래스리스 인터-도메인 라우팅(CIDR) 블록 룩업을 수행할 수 있다.
이러한 실시형태에 관한 변형에서, 시스템은 일측 2진 검색을 수행할 수 있다. 시스템은 각각의 구간의 각각의 최저-순서 요소에 기반하여 순서화된 검색 해시 코드와 연관된 구간 집합을 획득할 수 있다. 획득된 구간 집합에서의 중간 구간과 각각의 검색 부분-구간이 겹칠 수 없다고 결정하는 것에 응답하여, 시스템은 중간 구간의 일측 상에 순서화된 순서 집합에서의 구간을 폐기할 수 있다.
이러한 실시형태에 관한 변형에서, 구간 해시 테이블은, 검색 해시 코드와 연관된 획득된 구간 집합이 서로소가 되도록 하는, 서로소 구간 해시 테이블일 수 있다. 일측 2진 검색은 네스티드 2진 검색을 사용하는 것을 더 포함할 수 있다. 각각의 검색 부분-구간이 중간 구간과 겹칠 수 있다고 결정하는 것에 응답하여, 시스템은 내측 일측 2진 검색을 수행할 수 있다.
이러한 실시형태에 관한 변형에서, 구간 해시 테이블은 단일 최저-순서 또는 최고-순서 요소를 저장함으로써 각각의 구간을 표현하는 연이은 구간 해시 테이블일 수 있다. 2개의 각각의 구간이 빈 공간에 의해 분리되는 것에 응답하여, 시스템은 2개의 각각의 구간 중간에 있는 빈 공간을 표현하도록 연이은 구간 해시 테이블에 더미 구간을 저장할 수 있다.
도 1a는 구간의 일례의 예시도,
도 1b는 구간을 이산 부분-구간으로 분할하는 일례의 예시도,
도 1c는 국소성-유지 해싱에 기반하여 구간을 이산 부분-구간으로 분할하는 일례의 예시도,
도 2는, 본 발명의 실시형태에 따라, 구간 해시 테이블을 이용하는 구간 검색 시스템의 일례의 아키텍처를 예시하는 블록 선도,
도 3은 본 발명의 실시형태에 따라 구간 해싱을 위한 방법을 예시하는 블록 선도,
도 4는 본 발명의 실시형태에 따라 구간 이산화를 위한 방법을 예시하는 블록 선도,
도 5는, 본 발명의 실시형태에 따라, 구간 검색을 위한 방법을 예시하는 블록 선도,
도 6은, 본 발명의 실시형태에 따라, 일측 2진 검색으로 구간 검색을 위한 방법을 예시하는 블록 선도,
도 7a는 겹치는 구간의 일례의 예시도,
도 7b는 연이은 구간의 일례의 예시도,
도 8은, 실험 결과에 기반하는, 본 발명의 런타임 및 메모리 성능의 예시도,
도 9는, 본 발명의 실시형태에 따라, 구간 검색 및 해싱을 위한 일례의 장치를 예시하는 블록 선도, 및
도 10은, 본 발명의 실시형태에 따라, 구간 검색 및 해싱을 위한 일례의 컴퓨터 시스템을 예시하는 블록 선도.
도면에서, 유사한 참조 숫자는 동일한 도면 요소를 지칭한다.
이하의 설명은 당업자가 본 실시형태를 만들고 사용할 수 있게 하기 위해 제시되고, 그리고 특정 애플리케이션 및 그 요건의 맥락에서 제공된다. 개시된 실시형태에 대한 다양한 수정은 당업자에게는 쉽게 분명할 것이고, 여기에서 정의된 일반적 원리는 본 개시의 취지 및 범위로부터 벗어남이 없이 다른 실시형태 및 애플리케이션에 적용될 수 있다. 그리하여, 본 발명은 도시된 실시형태로 한정되지 않고, 여기에서 개시된 원리 및 특징과 일관된 최광 범위에 부합되려는 것이다.
개관
본 발명의 실시형태는 구간 해시 테이블에서 구간을 해싱함으로써 주어진 구간 또는 지점과 겹치는 모든 구간을 찾아내도록 구간 집합을 검색하는 문제를 해결한다. 여기에서 개시된 방법 및 장치는, 증명가능하게 점근적으로 최적인 지점 검색을 포함하는, 시간- 및 공간-효율적 방식으로 겹치는 구간을 찾아낼 수 있다. 본 발명은 또한 (양 기준에 대해 여전히 잘 수행하면서) 시간-공간 절충의 스펙트럼을 제의하여, 그것이 광범위한 각종 애플리케이션 및 디바이스에 대해 효과적이게 한다. 예컨대, 인스턴트 시스템은 수십 나노초 내에서 고성능 GeoIP 룩업을 가능하게 한다. 연산 동안, 시스템은 해싱될 구간 집합을 표시하는 데이터를 획득한다. 시스템은 국소성-유지 해싱에 기반하여 각각의 구간을 부분-구간 집합으로 분할한다. 그 후 시스템은 각각의 부분-구간과 연관된 해시 코드를 획득하고, 그리고 해시 코드에 대응하는 위치에서 구간 해시 테이블에 각각의 부분-구간을 삽입한다. 시스템은 구간 해시 테이블을 더 검색할 수 있다.
시스템은 구간 및 지점을 질의 및 검색할 수 있는 컴퓨터의 능력 및 컴퓨팅 기술을 개선한다. 여기에서 개시된 시스템 및 방법은 이전 기술에 비해 런타임을 상당히 개선할 수 있고, 그리고 일부 경우에서는 또한 더 공간-효율적일 수 있다. 여기에서 개시된 바와 같은 구간 해시 테이블은 또한 시간-공간 절충의 스펙트럼을 제의하여, 다양한 실시간 및 저장 요건을 갖는 여러 다른 애플리케이션에서 동일한 구현을 사용하는 것을 가능하게 한다. 본 발명은 인터넷 및 패킷 라우팅, 클래스리스 인터-도메인 라우팅(CIDR), 지오-IP 검색, IP-대-미디언-인컴 룩업, 지리학적 정보 시스템, 메모리 관리, 가비지 콜렉션, 영속적 객체-지향 데이터베이스, 및 웹-서버 액세스 제어를 포함하는 많은 애플리케이션을 갖는다.
도 1a는 구간의 일례를 예시한다. 도시된 바와 같이, 구간은 요소의 연속체(100)에서의 연속적 부분집합 또는 세그먼트이다. 연속체(100)는 실수 집합처럼 진정 연속적 집합일 수 있거나, 그것은 IP 주소 또는 URL 집합과 같은 요소의 밀집한, 순서화된 집합일 수 있다. 유한 정밀도에서는, 실수 집합을 표현하는 부동 소수점 수와 같은, 연속적 집합의 컴퓨터 표현이 또한 진정 연속적이지 않으면서 밀집하고 순서화될 수 있음을 유념한다. 구간은 중단되지 않은 것이고, 그래서 범위에서의 모든 밀집한, 순서화된 요소를 포함하고 있다. 예컨대, 구간(102, 104)은 연속체(100)의 부분집합이다. 도 1a에서 예시된 바와 같이, 구간(102)은 최저-순서 요소, 또는 종점(106), 및 최고-순서 요소(108)를 갖고, 그래서 연속체(100) 내에서 (106)과 (108) 사이에 모든 요소를 포함하고 있다. 본 발명의 일부 실시형태에서, 시스템은, 구간의 2개의 종점에 의해서는 물론, 또한 구간 ID 또는 인덱스 필드에 의해서, 구간 해시 테이블, 또는 다른 데이터 구조 내에서 구간을 표현한다.
도 1b는 연속체(110)에서의 구간을 이산 부분-구간으로 분할하는 일례를 예시한다. 본 발명의 실시형태에서, 시스템은 구간을 효율적으로 저장 및 검색하기 위해 구간을 "양자화" 또는 "이산화"한다. 이것은 연속체(110)에 세밀도를 도입한다. 예컨대, 경계(112, 114, 116)는 연속체(110) 내에서 이산 영역을 경계 표시한다. 본 발명의 실시형태에서, 구간의 양자화된 부분-구간은 구간에 의해 점유된 이산 영역에 기반하여 선택될 것이다.
구간은 하나보다 많은 이산 부분-구간에 걸쳐 이어질 수 있고 그리고 이산 영역의 경계와 일치하지 않는 종점을 가질 수 있음을 유념한다. 예컨대, 도 1b에서 도시된 바와 같이, 구간(120)은 하위 종점(122) 및 상위 종점(124)을 갖는다. 구간이 이산 영역을 완전히 포섭하는 경우에, 대응하는 양자화된 부분-구간은 이러한 이산 영역과 같을 것이다. 그러나 구간 종점이 이산 영역 내부에 있는 경우에, 일부 실시형태에서 대응하는 양자화된 부분-구간은 원래 구간의 종점에서 종료할 것이다. 예컨대, 구간(120)은 3개의 이산 부분-영역으로 분할될 것이다: 외측 2개의 이산 부분-영역은 종점(122, 124)에서 종료할 것이고, 그리고 중간 이산 부분-영역은 전체 이산 영역을 점유할 것이다. 유사하게, 구간(118)은 2개의 이산 부분-영역으로 분할될 것이다.
그것들을 양자화하는 것에 기반하여 구간을 검색할 때, 이산화의 비용과 품질 간 절충할 최적 세밀도를 구하는 것이 중요할 수 있다. 본 발명의 실시형태에서, 시스템은 구간을 이산화하도록 국소성-유지 해시 함수를 채용함으로써 이러한 문제를 해결할 수 있다.
도 1c는 국소성-유지 해싱에 기반하여 구간을 이산 부분-구간으로 분할하는 일례를 예시한다. 국소성-유지 해싱은 "인근" 구간을 동일하거나 이웃하는 해시 코드에 매핑한다. 이것은 그것들을 인덱싱하는데 사용되는 해시-테이블 슬롯에서 구간의 근접도를 유지한다. 시스템은 또한 국소성-유지 해시 함수의 역을 사용하여 주어진 해시 코드에 매핑하는 모든 가능한 구간의 최대 구간을 반환한다. 최대 구간은 구간 포섭에 대해 정의된다, 즉, 최대 구간은 주어진 해시 코드에 매핑하는 어느 다른 구간의 부분-구간이 아니다.
도 1c는, 일부 실시형태에 따라, 도 1b에서의 이산 영역이 어떻게 선택될 수 있는지 예시한다. 도시된 바와 같이, 연속체(110)에서의 각각의 이산 영역은 단일 해시 코드에 매핑하는 최대 구간이다. 그래서, 일부 실시형태에서, (118) 및 (120)과 같은 구간을 이산화하는 것은 각각의 구간과 연관된 해시 코드의 집합을 식별하고, 그리고 각각의 구간을 단일 해시 코드에 매핑하는 이산 부분-구간으로 분할하는 것을 수반한다. 예컨대, 구간(120)은 3개의 해시 코드와 연관되고, 그래서 3개의 이산 부분-구간으로 분할된다.
시스템 아키텍처
도 2는, 본 발명의 일 실시형태에 따라, 구간 해싱 및 검색 방법을 이용하는 구간 해싱 시스템(200)의 일례의 아키텍처를 예시하는 블록 선도를 제시한다. 구간 해싱 시스템(200)은 다중 프로세서와 병렬로, 실시형태에 따라, 구간 집합을 분할하고 그리고 겹치는 구간을 검색할 수 있다. 표준 시스템에서, 시스템(200)은 겹치는 구간을 검색하는데 상당한 컴퓨터 계산 비용 및 공간을 필요로 할 것이다. 그렇지만, 여기에서 개시된 방법을 사용하면, 시스템(200)은 더 적은 시간 및 공간으로 사용자가 겹치는 구간을 검색하는 것을 가능하게 한다.
구간 해싱 시스템(200)은 서버(206)에 결합된 저장 디바이스(204) 상에 설치된 구간 해시 테이블 모듈(202)을 포함할 수 있다. 본 발명의 다양한 구현은 어느 수의 서버 및 저장 디바이스라도 포함할 수 있음을 유념한다. 다양한 구현에서, 구간 해싱 모듈(202)은 여기에서 설명된 기술을 수행하기 위해 구간 해싱 시스템(200)의 구간 이산화 모듈 또는 다른 컴포넌트를 포함할 수 있다. 시스템(200)은 구간을 기술하는 데이터를 수신하고, 그리고 그러한 데이터를 저장 디바이스(204)에 저장할 수 있다. 시스템(200)은 구간 해시 테이블 모듈(202)에 대한 코드 및 구간(208)에 대한 데이터를 저장 디바이스(204)로부터 판독할 수 있다. 시스템(200)은 구간 집합을 분할하고 그것들을 배정된 구간 상에서 연산하는, 프로세서(210A-210H)와 같은, 프로세서에 배정할 수 있다.
구간 해싱을 위한 방법
도 3은, 본 발명의 실시형태에 따라, 구간 해싱을 위한 방법을 예시하는 순서도(300)를 제시한다. 연산 동안, 시스템은 해싱될 구간 집합을 표시하는 데이터를 획득한다(연산(302)). 그 후 시스템은 국소성-유지 해시 함수에 기반하여 각각의 구간을 이산 부분-구간 집합으로 이산화할 수 있다(연산(304)). 국소성-유지 해싱은 "인근" 구간을 동일하거나 이웃하는 해시 코드에 매핑한다.
국소성-유지 해시 함수를 생성하기 위한 하나의 방식은 국소성-유지 추상화를 사용하는 것이다. 추상화는 문제를 인코딩하는데 필요한 변수의 부분집합만이 고려되는 추상 공간으로 문제를 투영하는 완화이다. 예컨대, IP 주소 13.1.101.131는 그 쿼텟 인코딩에서 옥텟 중 일부를 무시함으로써 13.*.*.* (또는 *.*.*.131)로서 추상화될 수 있다. 보통은 동일한 문제에 대해 추상화를 수행하는 다수의 방식이 있고, 그리고 일부 추상화는 다른 것들보다 더 양호하게 국소성을 유지한다.
위의 IP 주소 예에서, 추상화 13.*.*.*는 추상화 *.*.*.131보다 더 양호한데 2개의 13.*.*.* IP 주소는, 매우 잘 2개의 별개 서브넷 상에 있을 수 있는, 2개의 *.*.*.131 주소보다 동일한 서브넷 상에 있을 가망이 더 높기 때문이다. 그리하여, 전자는 후자보다 더 국소성-유지적이다. 부가적 옥텟(들)을 고려함으로써 13.*.*.* 추상화를 더 정제할 수 있다. 예컨대, 13.1.*.* 및 13.1.101.*는 원래 단일-옥텟 추상화보다 더 국소성-유지적이다. 3개의 국소성-유지 추상화 중에서, 13.1.101.*는 가장 많이 정제되고, 그리고 그것은 총 크기 2563을 갖는 가장 큰 추상화 공간을 갖는 반면, 13.*.*.* 추상화는 가장 적게 정제되며, 3개 중 가장 작은, 크기 256의 추상화 공간을 갖는다. 이러한 예는 근본적 국소성 대 공간 절충을 초래한다: 국소성을 유지할 수 있는 추상화의 능력이 증가함에 따라, 그 공간 요건도 그렇다. 가설적으로는, 국소성의 100%를 유지하도록 보증되는 손실-없는 추상화를 생성할, 모든 변수(예컨대, 우리의 IP 주소 예에서는 모든 4개의 옥텟)를 고려함으로써 아이덴티티 추상화를 사용할 수 있지만, 불행하게도 그러한 "이상적" 추상화는 보통은 너무 공간 비효율적이어서 실용적이지 않다(예컨대, IPv4 주소 공간에 대해 2564 슬롯의 해시 테이블을 필요로 한다). 그리하여, 국소성을 유지하는 것과 메모리를 절약하는 것 간 절충하여야 한다. 여기에서 개시된 구간 해시 테이블은 이들 2개의 상충하는 목표 간 효과적 균형을 제의하는 그러한 데이터 구조이다.
그 후, 시스템은 국소성-유지 해시 함수를 통하여 각각의 이산 부분-구간과 연관된 해시 코드를 획득할 수 있다(연산(306)). 그 후, 시스템은 각각의 부분-구간을 해시 코드에 대응하는 위치에서 구간 해시 테이블에 삽입할 수 있다(연산(308)).
관용적 해시 테이블이 해시 충돌을 해결하도록 체인잉 또는 오픈 어드레싱 중 어느 하나를 사용할 수 있기는 하지만, 본 발명의 실시형태에서, 시스템은 구간의 국소성을 유지하도록 체인잉을 사용한다. 더욱, 본 발명의 실시형태에서, 구간 해시 테이블에서의 해시-테이블 슬롯의 수는 국소성-유지 해시 함수에 의해 산출된 가능한 해시 코드의 수(예컨대, 추상화 공간의 크기)와 같아야 한다. 그리하여, 2개가 구간 해시 테이블에서 동일하므로, 해시 코드로부터 대응하는 해시-테이블 슬롯으로 변환하기 위한 진법 연산을 수행할 필요가 없다. 본 발명의 실시형태에서, 해시 코드와 해시-테이블 슬롯은 호환가능한 개념으로서 사용된다.
그 후, 시스템은 해싱될 이산 부분-구간이 더 남아있는지 결정할 수 있다(연산(310)). 해싱될 이산 부분-구간이 더 남아있다고 결정하는 것에 응답하여, 그 후 시스템은 해싱 연산(306)으로부터 시작하여 해싱 프로세스를 반복할 수 있다.
해싱될 이산 부분-구간이 더 남아있지 않다고 결정하는 것에 응답하여, 그 후 시스템은 이산화될 구간이 더 남아있는지 결정할 수 있다. 이산화될 구간이 더 남아있다고 결정하는 것에 응답하여, 그 후 시스템은 이산화 연산(304)으로부터 시작하여 이산화 프로세스를 반복할 수 있다.
이산화될 구간이 더 남아있지 않다고 결정하는 것에 응답하여, 그 후 시스템은 이산화된 구간을 반환할 수 있다.
구간을 이산화하기 위한 방법
도 4는 본 발명의 실시형태에 따라 구간 이산화를 위한 방법(400)을 예시하는 블록 선도를 제시한다. 방법(400)은, 도 1c가 도 1b의 상세를 제공하는 것처럼, 방법(300)에서 각각의 구간을 이산화하는 단계(304)의 상세를 제공함을 유념한다. 구간을 이산화하는 것은 또한 구간을 분할 또는 양자화하는 것이라고 여기에서 지칭될 것이다. 연산 동안, 시스템은 이산화될 구간을 표시하는 데이터를 획득한다(연산(402)). 대안으로, 단계(402)에서, 시스템은 방법(300)으로부터 이산화될 구간을 수신할 수 있다. 시스템은 국소성 유지 해시 함수를 통하여 최저-순서 요소에 대한 하위 해시 코드 및 구간의 최고-순서 요소에 대한 상위 해시 코드를 획득할 수 있다(연산(404)).
그 후, 시스템은 하위 해시 코드, 하위와 상위 해시 코드 중간에 있는 어느 해시 코드, 및 상위 해시 코드를 포함하는 해시 코드 집합을 형성할 수 있다(연산(406)). 일부 경우에는, 하위와 상위 해시 코드가 같을 수 있고, 그 경우에, 해시 코드 집합은 하나의 해시 코드만을 포함하고 있을 것임을 유념한다. 하위와 상위 해시 코드가 이웃하고 있는 경우에, 해시 코드 집합은 어느 중간 코드도 포함하고 있지 않을 것이다.
그 후, 시스템은, 각각의 해시 코드에만 연관된 어느 구간에 의해서도 포섭될 수 없는, 배타적으로 하나의 각각의 해시 코드와 연관된 최대 구간을 획득할 수 있다(연산(408)). 제2 구간이 제1 구간의 부분-구간이면, 또는 등가적으로, 제2 구간의 종점이 제1 구간에 속하면 제1 구간은 제2 구간을 포섭하는 것으로 정의됨을 유념한다.
앞서 설명된 바와 같이, 양자화된 부분-구간은, 원래 구간이 이산 영역을 포섭하는지에 종속하여, 원래 구간의 종점에서, 또는 이산 영역의 경계에서 종료할 수 있다. 그래서, 다음으로, 시스템은 각각의 해시 코드가 하위 해시 코드를 초과하는지 결정할 수 있다(연산(410)). 각각의 해시 코드가 하위 해시 코드보다 작거나 같다고 결정하는 것에 응답하여, 그 후 시스템은 이산화된 부분-구간을 구간의 최저-순서 요소에서 시작하도록 설정할 수 있다(연산(412)). 각각의 해시 코드가 하위 해시 코드를 초과한다고 결정하는 것에 응답하여, 그 후 시스템은 이산화된 부분-구간을 최대 구간의 최저-순서 요소에서 시작하도록 설정할 수 있다(연산(414)).
그 후, 시스템은 각각의 해시 코드가 상위 해시 코드보다 작은지 결정할 수 있다(연산(416)). 각각의 해시 코드가 상위 해시 코드와 같거나 초과한다고 결정하는 것에 응답하여, 그 후 시스템은 이산화된 부분-구간을 구간의 최고-순서 요소에서 종료하도록 설정할 수 있다(연산(418)). 각각의 해시 코드가 상위 해시 코드보다 작다고 결정하는 것에 응답하여, 그 후 시스템은 이산화된 부분-구간을 최대 구간의 최고-순서 요소에서 종료하도록 설정할 수 있다(연산(420)).
마지막으로, 시스템은 해시 코드 집합에 추가적 해시 코드가 남아있는지 결정할 수 있다. 추가적 해시 코드가 있다고 결정하는 것에 응답하여, 그 후 시스템은 다음의 각각의 해시 코드에 대한 최대 구간을 획득하는 연산(408)으로부터 시작하여 이산화 프로세스를 반복할 수 있다. 집합에 해시 코드가 더 남아있지 않다고 결정하는 것에 응답하여, 그 후 시스템은 이산 부분-구간을 반환할 수 있다.
구간 검색
도 5는, 본 발명의 실시형태에 따라, 주어진 구간과 겹치는 해시 테이블에서의 구간을 찾도록 검색하기 위한 방법(500)을 예시하는 블록 선도를 제시한다. 연산 동안, 시스템은 검색 구간을 포함하는 검색 질의를 수신한다(연산(502)). 그 후, 시스템은, 예컨대, 방법(400)에 의해 검색 구간을 이산 검색 부분-구간 집합으로 이산화할 수 있다(연산(504)). 그 후, 시스템은, 앞서 설명된 바와 같이, 국소성-유지 해시 함수를 통하여 각각의 이산 검색 부분-구간과 연관된 검색 해시 코드를 획득할 수 있다(연산(506)). 그 후, 시스템은 획득된 검색 해시 코드와 연관된 해시 테이블에서의 구간 집합을 식별할 수 있다(연산(508)).
그 후, 시스템은, 각각의 구간의 최저- 및 최고-순서 요소를 검색 부분-구간의 최저- 및 최고-순서 요소와 비교하는 것에 기반하여, 식별된 구간 집합에서의 각각의 구간이 각각의 검색 부분-구간과 겹치는지 결정할 수 있다(연산(510)). 각각의 구간이 검색 부분-구간과 겹친다고 결정하는 것에 응답하여, 시스템은 각각의 구간을 발견된 겹치는 구간 집합에 추가할 수 있다(연산(512)).
그 후, 시스템은 검색 해시 코드와 연관된 해시 테이블에서의 구간 집합에 구간이 더 남아있는지 결정할 수 있다(연산(514)). 구간이 더 남아있다고 결정하는 것에 응답하여, 시스템은 비교 연산(510)으로부터 시작하여 비교 프로세스를 반복할 수 있다. 구간이 더 남아있지 않다고 결정하는 것에 응답하여, 그 후 시스템은 검색할 이산 부분-구간이 더 남아있는지 결정할 수 있다(연산(516)). 이산 부분-구간이 더 남아있다고 결정하는 것에 응답하여, 시스템은 해싱 연산(506)으로부터 시작하여 검색 프로세스를 반복할 수 있다. 구간이 더 남아있지 않다고 결정하는 것에 응답하여, 그 후 시스템은 발견된 겹치는 구간 집합을 반환할 수 있다.
일측 2진 검색
도 6은, 본 발명의 실시형태에 따라, 일측 2진 검색에 기반하는 구간 검색을 위한 방법(600)을 예시하는 블록 선도를 제시한다. 방법(600)은 방법(500)의 단계(510), 즉, 일반적 경우에, 각각의 구간이 각각의 검색 부분-구간과 겹치는지 결정하기 위해 요소들을 비교하는 단계의 상세를 제공함을 유념한다. 일측 2진 검색은 우선, 각각의 검색 부분-구간이 획득된 구간 집합에서의 중간 구간과 겹치는 것이 가능한지 결정하도록, 겹치기 위한 필요 조건을 시험하는 것을 수반할 수 있다. 이러한 필요 조건은 방법(600)에서 더 상세히 설명되고, 본 개시에서 추후 더 설명될 것이다. 그 후, 이러한 겹침이 불가능하다고 결정하는 것에 응답하여, 시스템은 중간 구간의 일측 상에 순서화된 순서 집합에서의 구간을 폐기할 수 있다. 일부 실시형태에서 사용된 일측 2진 검색은 순서화된 집합이 조건이 충족될 때만 이등분되기 때문에 표준 2진 검색과 다르다.
연산 동안, 시스템은 검색 해시 코드와 연관된 구간 집합을 획득한다(연산(602)). 대안으로, 단계(602)에서, 시스템은 방법(500)으로부터 구간 집합을 수신할 수 있다. 일부 실시형태에서, 획득된 집합은 각각의 구간의 각각의 최저-순서 요소에 기반하여 순서화될 수 있다.
그 후, 시스템은 순서화된 구간 집합에서 중간 구간을 선택할 수 있다(연산(604)). 일부 실시형태에서, 시스템은 순서화된 집합에서 최저- 및 최고-순서 구간과 연관된 구간 ID 또는 인덱스를 평균함으로써 중간 구간을 선택할 수 있다. 그 후, 시스템은 중간 구간이, 그것이 검색 부분-구간과 겹칠 수 있는 가능성이 있게 되도록, 필요 조건을 충족하는지 결정할 수 있다. 일부 실시형태에서, 시스템은 검색 부분-구간의 상위 종점을 중간 구간의 하위 종점에 비교함으로써 그렇게 한다(연산(606)). 검색 부분-구간의 상위 종점을 중간 구간의 하위 종점에 비교함으로써, 시스템은 중간 구간 아래에 순서화된 구간이 검색 부분-구간과 겹칠 수 있는지 동시에 결정함을 유념한다. 다른 실시형태에서, 시스템은 그보다는 검색 부분-구간의 하위 종점을 중간 구간의 상위 종점에 비교할 수 있는데, 그 또한 중간 구간 위에 순서화된 구간에 대한 정보를 제공할 것이다.
검색 부분-구간의 상위 종점이 중간 구간의 하위 종점과 같거나 초과한다(즉, 중간 구간과 또는 그 아래의 구간과 겹침이 가능하다)고 결정하는 것에 응답하여, 시스템은 중간 구간 아래의 구간을 선형 탐색할 수 있다. 일부 실시형태에서, 시스템은 각각의 구간의 상위 종점을 검색 부분-구간의 하위 종점에 비교함으로써 중간 구간과 같거나 아래에 순서화된 각각의 구간을 탐색할 수 있다(연산(608)). 연산(606, 608)은 함께, 아래에 설명되는 바와 같이, 겹치기 위한 필요 충분 조건을 표현함을 유념한다. 그리하여, 중간 구간의 일측 상의 구간이 검색 부분-구간과 겹칠 수 있는 가능성이 있다고 결정되고 나면, 이들 구간 중 어느 것이 그것과 겹치는지 결정하도록 선형 탐색이 사용될 수 있다. 그 후, 시스템은 중간 구간 아래에 탐색할 구간이 더 남아있는지 결정할 수 있다(연산(610)). 탐색할 구간이 남아있다고 결정하는 것에 응답하여, 시스템은 탐색 연산(608)으로부터 탐색 프로세스를 반복할 수 있다. 탐색할 구간이 남아있지 않다고 결정하는 것에 응답하여, 시스템은 연산(614)으로 계속할 수 있다.
검색 부분-구간의 상위 종점이 중간 구간의 하위 종점보다 작다(즉, 중간 구간과 또는 그 아래의 구간과 겹침이 불가능하다)고 단계(606)에서 결정하는 것에 응답하여, 시스템은 순서화된 구간 집합을 이등분할 수 있다. 일부 실시형태에서, 시스템은 중간 구간 및 그 위의 구간을 폐기함으로써 이것을 행할 수 있다(연산(612)). 그 후, 시스템은 순서화된 집합에서 검색할 구간이 남아있는지 결정할 수 있다(연산(614)). 검색할 구간이 남아있다고 결정하는 것에 응답하여, 그 후 시스템은, 연산(604)에서 새로운 중간 구간을 선택하는 것으로부터 시작하여, 검색 프로세스를 반복할 수 있다. 검색할 구간이 남아있지 않다고 결정하는 것에 응답하여, 시스템은 식별된 겹치는 구간을 반환할 수 있다.
서로소 해시 테이블 검색 및 서로소 지점 검색
일부 실시형태에서는, 특수 경우에 대해 방법(600)에 변형이 이루어질 수 있다. 예컨대, 단계(602)에서 획득된 검색 해시 코드와 연관된 구간 집합이 서로소일 때, 구간 해시 테이블은 서로소 구간 해시 테이블이라고 지칭될 수 있다. 이러한 경우에, 구간의 순서화는 각각의 집합의 어느 종점이 구간을 순서화하는데 사용되는지에 종속하지 않고, 그래서 순서화는 각각의 집합의 어느 종점에든 기반할 수 있다. 예컨대, 단계(602)에서와 같이, 각각의 구간의 하위 종점에 기반하여 구간을 순서화하는 것은 각각의 구간의 상위 종점에 기반한 것처럼 동일한 순서화를 산출할 것이다.
서로소 구간 해시 테이블 검색의 일반적 경우에 대해, 일부 실시형태에서, 시스템은, 단일 일측 2진 검색보다는, 네스티드 2진 검색을 수행할 수 있다. 네스티드 2진 검색은 2개의 일측 2진 검색을 수반할 수 있다. 이것은 서로소 구간이 서로 겹칠 수 없고, 그래서 기껏해야 하나가 검색 부분-구간의 각각의 종점과 겹칠 수 있을 뿐이기 때문이다. 그리하여, 선형 탐색은 어느 서로소 구간이 부분-구간의 내부와 겹치는지 결정하는데만 필요로 될 수 있다.
일부 실시형태에서, 각각의 검색 부분-구간이 중간 구간과 겹칠 수 있다고 결정(606)에서 결정하는 것에 후속하여, 그 후 시스템은 내측 일측 2진 검색을 수행할 수 있다. 내측 일측 2진 검색은 내측 중간 구간이 각각의 검색 부분-구간과 겹치는지 결정하도록 (아래에서 더 설명되는) 제2의, 충분 조건을 평가하는 것을 포함할 수 있다. 내측 중간 구간과 검색 부분-구간이 겹친다고 결정하는 것에 응답하여, 그 후 시스템은 검색 부분-구간과 겹치는 내측 최소치와 내측 최대치 간 모든 구간을 식별하도록 선형 탐색을 수행할 수 있다. 내측 중간 구간과 검색 부분-구간이 겹치지 않는다고 결정하는 것에 응답하여, 그 후 시스템은 내측 2진 검색 영역을 이등분할 수 있다. 예컨대, 외측 검색이 구간 집합의 상위 절반을 전지하는 것을 수반하는 일부 실시형태에서, 내측 검색에서 시스템은 그 후 내측 어레이의 하위 절반을, 즉, 내측 최소치로부터 내측 중간 구간까지 전지할 수 있다. 일부 실시형태에서, 외측 검색은 그보다는 구간 집합의 하위 절반을 전지하는 것을 수반할 수 있고, 그리고 내측 검색은 그 후 내측 어레이의 상위 절반을 전지하는 것을 수반할 수 있다.
일부 실시형태에서는, 지점 검색에 대해, 즉, 검색 구간이 단일 요소인 때의 경우에 대해 특수화가 또한 있을 수 있다. 그러한 경우에, 시스템은 방법(600)에서와 같이 구간 검색을 수행하지만, 같은 하위 및 상위 종점을 갖는 단일 검색 부분-구간만을 특정할 수 있다, 즉, 검색 부분-구간은 검색되는 지점과 같을 수 있다. 더욱, 검색 해시 코드는 국소성-유지 해시 함수에 의해 이러한 지점과 연관된 해시 코드일 수 있다.
일부 실시형태에서는, 서로소 구간 해시 테이블에서의 지점 검색에 대해 특수화가 또한 있을 수 있다. 일부 실시형태에서, 서로소 구간 해시 테이블에서의 지점 검색은 일측 2진 검색보다는 표준(즉, 2-사이디드) 2진 검색을 수반할 수 있다. 서로소 지점 검색의 경우에, 서로소 구간이 엄격히 순서화되고, 기껏해야 하나의 그러한 구간이 검색되는 지점과 겹칠 수 있을 뿐이기 때문에, 표준 2진 검색을 사용하기 위한 조건은 충족된다. 그리하여, 연산 동안, 시스템은 검색 해시 코드와 연관된 구간의 서로소, 순서화된 집합을 획득할 수 있되, 순서화는 구간의 어느 종점에든 따라서 될 수 있다. 그 후, 시스템은 구간 집합에서의 중간 구간의 인덱스를 획득할 수 있다. 그 후, 시스템은 중간 구간의 하위 종점이 검색 지점을 초과하는지 결정함으로써 중간 구간이 검색 지점과 겹칠 수 있는지 결정할 수 있다. 겹침이 불가능하다(예컨대, 중간 구간의 하위 종점이 검색 지점을 초과한다)고 결정하는 것에 응답하여, 시스템은 중간 구간 및 그 위의 모든 구간을 폐기함으로써 구간 집합의 상위 절반을 전지할 수 있다. 그 후, 시스템은 검색을 계속할 수 있다.
겹침이 가능하다고 결정하는 것에 응답하여, 그 후, 시스템은 중간 구간의 상위 종점이 검색 지점과 같거나 초과하는지 결정함으로써 중간 구간이 검색 지점과 겹치는지 결정할 수 있다. 중간 구간이 검색 지점과 겹치지 않는다(예컨대, 중간 구간의 상위 종점이 검색 지점보다 작다)고 결정하는 것에 응답하여, 시스템은 중간 구간 및 그 아래의 모든 구간을 폐기함으로써 구간 집합의 하위 절반을 전지할 수 있다. 그 후, 시스템은 검색을 계속할 수 있다. 중간 구간이 검색 지점과 겹친다고 결정하는 것에 응답하여, 시스템은 중간 구간을 발견된 겹치는 구간으로서 식별하고, 그리고 중간 구간의 인덱스를 반환할 수 있다.
겹치는 그리고 연이은 구간
도 7a는 겹치는 구간(702, 704)의 일례를 예시한다. 방법(600)에서와 같이, 구간(702, 704)이 그 하단과 상단 요소를 비교함으로써 겹치는지 결정하는 것이 가능한데, 그 하단과 상단 요소에 의해 구간이 정의될 수 있기 때문이다. 즉, 구간의 하위 종점은 그 상위 종점을 절대 초과하지 못하고, 그리고 구간은 항상 그 2개의 종점 중간에 있는 모든 요소를 포함하고 있다. 구간이 그들 2개의 종점에 의해 정의될 수 있기 때문에, 함께 필요 충분인 겹치기 위한 2개의 조건이 있다.
방법(600)에서와 같이, 이들 조건 중 단 하나만 특정하는 것은, 겹침이 가능한지 시험하는데 사용될 수 있는, 겹치기 위한 필요 조건을 제공한다. 예컨대, 도 7a에서 예시된 바와 같이, 구간(702)은 하위 및 상위 종점(706, 708)을 각각 갖고, 그리고 (704)는 하위 및 상위 종점(710, 712)을 각각 갖는다. 제1 구간(702)의 상위 종점(708)이 제2 구간(704)의 하위 종점(710)과 같거나 초과하면, 그때는 겹침이 가능하다.
그렇지만, 제1 구간 전체가 제2 구간 전체를 초과하면 2개의 구간은 역시 겹치지 못할 수 있다. 그래서, 겹치기 위해, 제1 구간(702)의 하위 종점(706)은 또한 제2 구간(704)의 상위 종점(712)과 같거나 작아야 한다.
도 7b는 연이은 구간(714, 716, 718)의 일례를 예시한다. 도시된 바와 같이, 연이은 구간은 그들 사이에 빈 공간을 갖지 않고, 그보다는 단일 경계점에서 겹친다. 예컨대, 구간(714, 716)은 경계 요소(720)를 공유하고, 그리고 구간(716, 718)은 경계 요소(722)를 공유한다.
일부 실시형태에서, 연이은 구간은 일반적 구간보다 더 효율적으로 저장 또는 프로세싱될 수 있다. 일부 실시형태에서, 시스템은 각각의 구간의 하위 종점만을 저장하고, 그리고 그 상위 종점은 다음 구간의 하위 종점에 의해 내포된다. 완벽하게 연이은 구간 집합에 대해, 그러한 저장 방법은 하위 및 상위 종점을 저장하는 것에 비해 50%만큼 메모리 요건을 감축할 수 있다.
구간의 대다수(그러나 전부는 아님)가 연이은 경우를 취급하기 위해, 구간 해시 테이블은 연이은 속성을 복원하도록 가장 가까운 비-연이은 구간들 사이에 더미 구간을 삽입할 수 있다. 예컨대, (714) 및 (718)과 같은 제1 및 제2 구간이 연이은 것이 아니면, 시스템은 연이은 속성을 복원하도록 제1 구간과 제2 구간 사이에 (716)과 같은 더미 구간을 추가할 수 있다. 더미 구간을 추가하는 것은 다소의 저장 오버헤드를 더할 수 있지만, 구간의 대다수가 한층 연이은 것이면, 전반적 메모리 요건은 전 구간을 저장하는 것에 비해 한층 감축될 수 있다. 더미 구간은 그것이 원래 구간 중 하나가 아님을 표시하도록 적당하게(예컨대, 0 또는 -1의 구간 ID로) 주석이 달려야 한다.
성능, 실험 결과, 및 애플리케이션
본 발명은 인터넷 및 패킷 라우팅, 클래스리스 인터-도메인 라우팅(CIDR), 지오-IP 검색, IP-대-미디언-인컴 룩업, 지리학적 정보 시스템, 메모리 관리, 가비지 콜렉션, 영속적 객체-지향 데이터베이스, 및 웹-서버 액세스 제어를 포함하는 많은 애플리케이션을 갖는다. 예컨대, 지오-IP 검색은 (추천 및 고객맞춤화를 위해) 그 또는 그녀의 IP 주소에 기반하여 고객의 지오-위치를 찾아내도록 고객 관리에서 사용될 수 있다.
도 8은 본 발명의 예시적 런타임 성능 및 메모리 사용량을 도시한다. 이러한 도면은 대략 3백만 블록의 데이터베이스에서 클래스리스 인터-도메인 라우팅(CIDR) 블록 룩업에 대해 단 하나의 스레드로 방법(600)에서처럼 구간 검색 방법을 사용하여 발명자에 의해 획득된 실험 결과에 기반한다. CIDR에서, IP 패킷은, 공통 전치 부호를 갖는 IP 주소의 연이은 블록을 표현하는, 그 대응하는 CIDR 블록에 기반하여 라우팅된다. 도면에서 예시된 바와 같이, 일부 실시형태에서, 시스템은 더 양호한 컴퓨터 계산 속도을 위해 교환으로 더 낮은 메모리 요건을, 양 기준에 대해 여전히 잘 수행하면서, 절충할 수 있다.
도 8에서 도시된 바와 같이, 25 또는 26 해시 비트가 사용될 때 단일 스레드만으로 15 ns의 가장 빠른 검색 시간이 달성되는데, 이전 기술에 비해 상당한 개선이다. 과거에는, 그러한 속도는 보통은, 네트워크 라우터에서 찾아볼 수 있는 바와 같은, 특수 하드웨어를 사용하는 것에 의해서만 달성되었다. 26 해시 비트를 넘어서는, 캐시 미스의 부작용이 해싱의 혜택을 능가하여, 검색 시간이 감소보다는 증가하게 야기한다. 메모리 요건은 해시 비트의 수가 24 위에 있을 때 더 급속히 커지기 시작한다. 이것은 24 전치 부호 비트를 갖는 CIDR 블록이 시험 데이터에서의 모든 CIDR 블록의 40%에 달하고, 그리고 이들 블록에 대한 양자화된 구간의 수는 24를 넘어서 사용된 각각의 부가적 해시 비트에 대해 두 배가 될 것이기 때문이라고 이해된다.
여기에서 개시된 구간 해시 테이블은 합리적인 메모리 점유를 유지하면서 구간 트리에 비해 상당히 런타임을 개선할 수 있다. 특정 경우에, 구간 해시 테이블은 또한 구간 트리보다 더 공간-효율적이어서, 더 많은 구간이 저장 및 검색되는 것을 가능하게 할 수 있다. 더 중요하게는, 구간 해시 테이블은 구간 트리, 또는 (정렬된) 구간의 어레이 또는 링크된 리스트와 같은 다른 데이터 구조에 의해 용이하게 달성될 수 없는 시간-공간 절충의 스펙트럼을 제의한다. 이것은 다양한 실시간 및 저장 요건을 갖는 여러 다른 애플리케이션에서 동일한 구간 해시 테이블 구현을 사용하는 것을 가능하게 한다.
통상의 해시 테이블은 그들 2진 검색 트리 상대자에 비해 최악-경우의 복잡도 이점을 향유하지 않는다고 알려져 있다. 구간 해시 테이블에 대해서도 동일하여, 최악의 경우에서 시간 복잡도를 감축하지 않았다. 그렇지만, 평균-경우의 복잡도는 전형적으로 해시 테이블에 유리하다. 구간 해시 테이블에 대해, 평균-경우의 복잡도는 원래의, 양자화되지 않은 구간의 총 수에 뿐만 아니라 양자화된 구간의 수에도 종속한다. q를 질의 구간에 대한 양자화된 구간의 수라고 하고, r을 각각의 양자화되지 않은 구간에 대한 양자화된 구간의 평균 수라고 하고, 그리고 mqr의 최소치라고 하자. 겹치는 구간을 가능하게 하는 해시 테이블에서의 구간 질의에 대한 평균 복잡도는 O(k m + q)이고, 여기서 k는 발견된 구간의 수이다. k에 부가하여, 평균 복잡도는 qr에 의해 영향을 받는데, k개의 겹치는 구간의 각각은 q > r이면 평균 r회, 또는 q r이면 기껏해야 q회 동안 반복적으로 발견될 수 있기 때문이다. O(k m + q)의 동일한 평균-경우의 복잡도가 서로소 구간 해시 테이블에 적용된다. 그렇지만, 지점 질의에 대해, 구간 양자화는 어떠한 복잡도 페널티도 초래하지 않는데, 검색이 항상 단일 해시 코드로 제한되기 때문이다(즉, q = 1). 즉, qr 양자는 지점 검색의 복잡도에 영향을 주지 않는다. 서로소 구간 해시 테이블에 대해서는, 단일의 겹치는 구간만이 발견될 수 있고, 그리하여 지점 검색에 대한 평균-경우의 복잡도는 O(1), 상수 시간 연산이라는 가외의 이점이 있다. 표 1은 이들 4개의 경우에 대한 평균-경우의 시간 복잡도를 요약한다.
구간 해시 테이블에 대한 평균-경우의 시간 복잡도
구간 질의 지점 질의
겹치는 구간 O(k m + q) O(k)
서로소 구간 O(k m + q) O(1)
구간 트리의 평균-경우의 시간 복잡도는 O(log n + k)이고, 여기서 n은 구간의 수임을 상기한다. 구간 해시 테이블은, k m + q < log n + k인 한, 구간 트리에 비해 복잡도 이점을 향유하며, 큰 n에 대해 유지될 수 있다. 지점 검색의 평균-경우의 복잡도 이점은 훨씬 더 상당한데, 그것이 n, q, 또는 r에 종속하지 않기 때문이다.
점근적 최적: 지점 검색에 대한 구간 해시 테이블의 평균 복잡도가 점근적 최적임을 보여주는 것은 직관적인데, 질의 결과를 인쇄하는데 적어도 O(k) 시간이 걸리기 때문이다. 발명자가 아는 한, 지금까지 이것은 점근적 최적 지점-기반 구간 검색을 수행하는 유일한 데이터 구조이다.
공간 복잡도: 구간 해시 테이블의 공간 복잡도는 O(n q')이며, q' ≥ 1이므로, 구간 트리의 O(n) 공간 복잡도보다 더 높을 수 있다. 그렇지만, 구간 해시 테이블이 구간 트리보다 더 적은 메모리가 필요한 경우가 있다. 예컨대, 64-비트 시스템 상에서, 포인터는 8 바이트의 저장소가 필요할 것이다. 하위 및 상위 종점이 32-비트 정수 또는 부동으로 인코딩되었으면, 그때 구간은 구간 트리에 저장하는데 24 바이트를 필요로 할 것이다. 구간 해시 테이블은 포인터를 사용할 필요가 없으므로, 양자화된 구간은, 원래의, 양자화되지 않은 구간을 저장하기 위한 8 바이트 더하기, 12 바이트의 저장소를 취할 수 있다. (해시 테이블 인덱스 어레이를 배제한) 총 메모리 요건은 동일한 64-비트 시스템 상에서 12r + 8 바이트일 것이고, r < 1.33인 한, 구간 해시 테이블은 구간 트리보다 더 공간 효율적일 수 있다.
예컨대, 위의 CIDR 실험에서, 2,978,567 CIDR 블록이 있고, 그래서 각각의 CIDR 블록이 32-비트 정수를 사용하여 한 쌍의 최소 및 최대 IPv4 주소로서 인코딩되면, 그때 그것은 바로 그 CIDR 블록을 저장하는데 2,978,567 x 8 = 23,828,536 바이트를 취할 것이다. 구간 양자화의 공간 오버헤드에 더하여, (해시 테이블 인덱스 어레이 및 원래의, 양자화되지 않은 구간을 포함하는) 총 메모리 요건은, 사용된 해시 비트의 수가 작을 때(예컨대, 8 또는 9), CIDR 블록의 크기의 약 2배이다. 비교를 위해, 구간 트리는 동일한 구간을 저장하는데 32-비트 머신 상에서 2,978,567 x 16 = 47,657,072 바이트를 또는 64-비트 머신 상에서 2,978,567 x 24 = 71,485,608 바이트를 필요로 할 것이다. 환언하면, 구간 해시 테이블은, 불과 20 해시 비트가 사용되면, 64-비트 머신 상에서 구간 트리보다 더 공간-효율적이다.
예시적 장치
도 9는, 일부 실시형태에 따라, 구간 검색 및 해싱을 용이하게 하는 일례의 장치(900)를 예시하는 블록 선도를 제시한다. 장치(900)는 유선 또는 무선 통신 채널을 통하여 서로 통신할 수 있는 복수의 모듈을 포함할 수 있다. 장치(900)는 하나 이상의 집적 회로를 사용하여 실현될 수 있고, 그리고 도 9에서 도시된 것들보다 더 적거나 더 많은 모듈을 포함할 수 있다. 더욱, 장치(900)는 컴퓨터 시스템에 통합될 수 있거나, 또는 다른 컴퓨터 시스템 및/또는 디바이스와 통신할 수 있는 별개의 디바이스로서 실현될 수 있다. 구체적으로, 장치(900)는 구간 데이터 구조-수신 모듈(902), 구간-이산화 모듈(904), 부분-구간-해싱 모듈(906), 구간-검색 모듈(908), 및 부분-구간-저장 모듈(910)을 포함할 수 있다. 장치(900)는 또한 도 9에서 묘사되지 않은 부가적 모듈을 포함할 수 있음을 유념한다.
일부 실시형태에서, 구간 데이터 구조-수신 모듈(902)은 구간의 표현을 포함하는 데이터를 수신할 수 있다. 구간-이산화 모듈(904)은 구간을 이산 부분-구간으로 분할할 수 있다. 부분-구간-해싱 모듈(906)은 부분-구간에 대한 해시 코드 값을 획득하도록 국소성-유지 해시 함수를 사용할 수 있다. 구간-검색 모듈(908)은 주어진 질의 구간 또는 지점과 겹치는 구간을 찾도록 구간 해시 테이블을 검색할 수 있다. 부분-구간-저장 모듈(910)은 구간 해시 테이블 데이터 구조에 부분-구간을 저장할 수 있다. 도 2에서 예시된 구간 해시 테이블 모듈(202)은 도 9에서 묘사된 다양한 모듈의 어느 그리고 모든 기능을 제공할 수 있음을 유념한다.
예시적 시스템
도 10은, 일부 실시형태에 따른, 일례의 구간 검색 및 해싱 컴퓨터 시스템(1000)을 예시한다. 일부 실시형태에서, 컴퓨터 시스템(1000)은 서버일 수 있다. 일부 실시형태에서, 시스템(1000)은 프로세서(1002), 메모리(1004), 및 저장 디바이스(1006)를 포함한다. 일부 실시형태에서, (1002)는 프로세서의 집합을 포함할 수 있다. 저장 디바이스(1006)는 본 발명의 실시형태에 따른 구간 검색 및 해싱을 사용할 수 있는 애플리케이션(1014, 1016), 및 운영 체제(1022)와 같은, 여러 애플리케이션을 저장할 수 있다. 또한, 저장 디바이스(1006)는 구간 데이터 구조-수신 모듈(902), 구간-이산화 모듈(904), 부분-구간-해싱 모듈(906), 구간-검색 모듈(908), 및 부분-구간-저장 모듈(910)을 포함할 수 있는 구간 해싱 시스템(1008)을 저장한다. 시스템(1000) 및/또는 구간 데이터 구조-수신 모듈(902)은 구간 데이터를 포함하는 구간 데이터(1030)를 수신 또는 발생시킬 수 있고 그리고 구간 해싱 시스템(1008)이 액세스가능한 메모리 섹션에 구간 데이터를 복사할 수 있다. 연산 동안, 구간 해싱 시스템(1008)과 같은 하나 이상의 애플리케이션은 저장 디바이스(1006)로부터 메모리(1004) 내로 로딩되고 그 후 프로세서의 집합(1002)에 의해 실행된다. 프로그램을 실행할 때, 프로세서의 집합(1002)은 전술한 기능을 수행한다. 시스템(1000)은 디스플레이(1010), 키보드(1018), 및 포인팅 디바이스(1020)에 결합될 수 있다.
일부 실시형태에서, 구간 데이터 구조-수신 모듈(902)은 구간의 표현을 포함하는 데이터를 수신할 수 있다. 구간-이산화 모듈(904)은 구간을 이산 부분-구간으로 분할할 수 있다. 부분-구간-해싱 모듈(906)은 부분-구간에 대한 해시 코드 값을 획득하도록 국소성-유지 해시 함수를 사용할 수 있다. 구간-검색 모듈(908)은 주어진 질의 구간 또는 지점과 겹치는 구간을 찾도록 구간 해시 테이블을 검색할 수 있다. 부분-구간-저장 모듈(910)은 구간 해시 테이블 데이터 구조에 부분-구간을 저장할 수 있다. 도 2에서 예시된 구간 해시 테이블 모듈(202)은 도 10에서 묘사된 다양한 모듈의 어느 그리고 모든 기능을 제공할 수 있음을 유념한다.
본 상세한 설명에서 기술된 데이터 구조 및 코드는 전형적으로는, 컴퓨터 시스템에 의한 사용을 위해 코드 및/또는 데이터를 저장할 수 있는 어느 디바이스 또는 매체라도 될 수 있는, 컴퓨터-판독가능한 저장 매체 상에 저장된다. 컴퓨터-판독가능한 저장 매체는, 국한되는 것은 아니지만, 휘발성 메모리, 비-휘발성 메모리, 디스크 드라이브, 자기 테이프, CD(콤팩트 디스크), DVD(디지털 다기능 디스크 또는 디지털 비디오 디스크)와 같은 자기 및 광학 저장 디바이스, 또는 지금 알려져 있거나 나중에 개발되는 컴퓨터-판독가능한 매체를 저장할 수 있는 다른 매체를 포함한다.
상세한 설명 절에서 기술된 방법 및 프로세스는, 위에서 기술된 바와 같은 컴퓨터-판독가능한 저장 매체에 저장될 수 있는, 코드 및/또는 데이터로서 구체화될 수 있다. 컴퓨터 시스템이 컴퓨터-판독가능한 저장 매체 상에 저장된 코드 및/또는 데이터를 판독 및 실행할 때, 컴퓨터 시스템은 데이터 구조 및 코드로서 구체화된 그리고 컴퓨터-판독가능한 저장 매체 내에 저장된 방법 및 프로세스를 수행한다.
더욱, 여기에서 기술된 방법 및 프로세스는 하드웨어 모듈 또는 장치에 포함될 수 있다. 이들 모듈 또는 장치는, 국한되는 것은 아니지만, 주문형 반도체(ASIC) 칩, 필드-프로그래머블 게이트 어레이(FPGA), 특정 시간에 일편의 코드 또는 특정 소프트웨어 모듈을 실행하는 전용 또는 공유 프로세서, 및/또는 지금 알려져 있거나 나중에 개발되는 다른 프로그래머블-로직 디바이스를 포함할 수 있다. 하드웨어 모듈 또는 장치가 활성화될 때, 그것들은 그것들 내에 포함된 방법 및 프로세스를 수행한다.

Claims (17)

  1. 구간 검색을 수행하는 컴퓨터-구현된 방법에 있어서:
    검색 구간을 포함하는 검색 질의를 수신하는 단계;
    국소성-유지 해시 함수에 기반하여 상기 검색 구간을 검색 부분-구간 집합으로 분할하는 단계;
    상기 국소성-유지 해시 함수를 통하여, 각각의 검색 부분-구간과 연관된 검색 해시 코드를 획득하는 단계; 및
    상기 국소성-유지 해시 함수에 기반하여 상기 각각의 검색 부분-구간과 겹치는 구간들을 위한 구간 해시 테이블을 검색하는 단계로서, 상기 구간 해시 테이블은 각각의 구간을 복수의 부분-구간으로 분할하고 상기 국소성-유지 해시 함수에 기반하여 각각의 부분-구간을 해시 코드에 매핑함으로써 구성되는, 상기 구간 해시 테이블을 검색하는 단계를 포함하고, 상기 각각의 구간을 분할하는 것은:
    상기 국소성-유지 해시 함수를 통하여, 상기 각각의 구간의 최저-순서 요소에 대한 하위 해시 코드 및 최고-순서 요소에 대한 상위 해시 코드를 획득하는 것;
    상기 하위 해시 코드, 상기 하위 및 상위 해시 코드들 중간에 있는 해시 코드, 및 상기 상위 해시 코드를 포함하는 해시 코드 집합을 형성하는 것;
    상기 해시 코드 집합에서의 각각의 해시 코드에만 연관된 최대 구간을 획득하고, 상기 최대 구간은 상기 각각의 해시 코드에만 연관된 어느 더 큰 구간에 의해서도 포섭되지 않는 것; 및
    상기 각각의 구간의 상기 최저-순서 요소 및 최고-순서 요소 및 상기 획득된 최대 구간에 기반하여 상기 각각의 해시 코드와 연관된 각각의 부분-구간을 식별하는 것을 더 포함하는, 구간 검색을 수행하는 컴퓨터-구현된 방법.
  2. 제1항에 있어서, 상기 구간 해시 테이블은 또한 상기 매핑된 해시 코드에 기반하여 상기 각각의 부분-구간을 상기 구간 해시 테이블에 삽입함으로써 구성되는, 구간 검색을 수행하는 컴퓨터-구현된 방법.
  3. 제1항에 있어서,
    상기 구간 해시 테이블은, 상기 검색 해시 코드와 연관된 상기 검색된 구간들이 서로소(disjoint)가 되도록 하는, 서로소 구간 해시 테이블(disjoint interval hash table)이고;
    상기 각각의 검색 부분-구간은, 상기 각각의 검색 부분-구간의 상기 최저-순서 요소 및 상기 최고-순서 요소가 검색 요소와 같도록 하는, 단일의 검색 요소를 포함하고;
    각각의 구간이 상기 검색 요소와 겹치는지 결정하는 것은 2진 검색을 사용하는 것을 더 포함하는, 구간 검색을 수행하는 컴퓨터-구현된 방법.
  4. 제1항에 있어서, 상기 구간 해시 테이블에 기반하여 클래스리스 인터-도메인 라우팅(classless inter-domain routing: CIDR) 블록 룩업을 수행하는 단계를 더 포함하는, 구간 검색을 수행하는 컴퓨터-구현된 방법.
  5. 제1항에 있어서, 상기 각각의 검색 부분-구간과 겹치는 구간들을 위한 검색은:
    각각의 구간의 각각의 최저-순서 요소에 기반하여 순서화된 상기 검색 해시 코드와 연관된 구간 집합을 획득하는 것; 및
    상기 획득된 구간 집합에서의 중간 구간과 상기 각각의 검색 부분-구간이 겹칠 수 없다고 결정하는 것에 응답하여, 상기 중간 구간의 일측 상에 순서화된 순서 집합에서의 구간을 폐기하는 것을 포함하는, 일측 2진 검색을 사용하는 것을 더 포함하는, 구간 검색을 수행하는 컴퓨터-구현된 방법.
  6. 제5항에 있어서,
    상기 구간 해시 테이블은, 상기 검색 해시 코드와 연관된 상기 획득된 상기 구간 집합이 서로소가 되도록 하는, 서로소 구간 해시 테이블이고;
    상기 일측 2진 검색을 사용하는 것은, 상기 각각의 검색 부분-구간이 상기 중간 구간과 겹칠 수 있다고 결정하는 것에 응답하여, 내측 일측 2진 검색을 수행하는 것을 포함하는, 네스티드 2진 검색(nested binary search)을 사용하는 것을 더 포함하는, 구간 검색을 수행하는 컴퓨터-구현된 방법.
  7. 제1항에 있어서,
    상기 구간 해시 테이블은 단일 최저-순서 또는 최고-순서 요소를 저장함으로써 각각의 구간을 표현하는 연이은 구간 해시 테이블이고,
    2개의 각각의 구간이 빈 공간에 의해 분리되는 것에 응답하여, 상기 연이은 구간 해시 테이블은 상기 2개의 각각의 구간 중간에 있는 상기 빈 공간을 표현하는 더미 구간을 더 포함하는, 구간 검색을 수행하는 컴퓨터-구현된 방법.
  8. 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 구간 검색을 수행하는 방법을 실행하게 하는 명령어를 저장하는 비-일시적 컴퓨터-판독가능한 저장 매체로서, 상기 방법은:
    검색 구간을 포함하는 검색 질의를 수신하는 단계;
    국소성-유지 해시 함수에 기반하여 상기 검색 구간을 검색 부분-구간 집합으로 분할하는 단계;
    상기 국소성-유지 해시 함수를 통하여, 각각의 검색 부분-구간과 연관된 검색 해시 코드를 획득하는 단계; 및
    상기 국소성-유지 해시 함수에 기반하여 상기 각각의 검색 부분-구간과 겹치는 구간들을 위한 구간 해시 테이블을 검색하는 단계로서, 상기 구간 해시 테이블은 각각의 구간을 복수의 부분-구간으로 분할하고 상기 국소성-유지 해시 함수에 기반하여 각각의 부분-구간을 해시 코드에 매핑함으로써 구성되는, 상기 구간 해시 테이블을 검색하는 단계를 포함하고, 상기 각각의 구간을 분할하는 것은:
    상기 국소성-유지 해시 함수를 통하여, 상기 각각의 구간의 최저-순서 요소에 대한 하위 해시 코드 및 최고-순서 요소에 대한 상위 해시 코드를 획득하는 것;
    상기 하위 해시 코드, 상기 하위 및 상위 해시 코드들 중간에 있는 해시 코드, 및 상기 상위 해시 코드를 포함하는 해시 코드 집합을 형성하는 것;
    상기 해시 코드 집합에서의 각각의 해시 코드에만 연관된 최대 구간을 획득하고, 상기 최대 구간은 상기 각각의 해시 코드에만 연관된 어느 더 큰 구간에 의해서도 포섭되지 않는 것; 및
    상기 각각의 구간의 상기 최저-순서 요소 및 최고-순서 요소 및 상기 획득된 최대 구간에 기반하여 상기 각각의 해시 코드와 연관된 각각의 부분-구간을 식별하는 것을 더 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  9. 제8항에 있어서, 상기 구간 해시 테이블은 또한 상기 매핑된 해시 코드에 기반하여 상기 각각의 부분-구간을 상기 구간 해시 테이블에 삽입함으로써 구성되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  10. 제8항에 있어서, 상기 각각의 검색 부분-구간과 겹치는 구간들을 위한 검색은:
    각각의 구간의 각각의 최저-순서 요소에 기반하여 순서화된 상기 검색 해시 코드와 연관된 구간 집합을 획득하는 것; 및
    상기 획득된 구간 집합에서의 중간 구간과 상기 각각의 검색 부분-구간이 겹칠 수 없다고 결정하는 것에 응답하여, 상기 중간 구간의 일측 상에 순서화된 순서 집합에서의 구간을 폐기하는 것을 포함하는, 일측 2진 검색을 사용하는 것을 더 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  11. 제10항에 있어서,
    상기 구간 해시 테이블은, 상기 검색 해시 코드와 연관된 상기 획득된 상기 구간 집합이 서로소가 되도록 하는, 서로소 구간 해시 테이블이고;
    상기 일측 2진 검색을 사용하는 것은, 상기 각각의 검색 부분-구간이 상기 중간 구간과 겹칠 수 있다고 결정하는 것에 응답하여, 내측 일측 2진 검색을 수행하는 것을 포함하는, 네스티드 2진 검색을 사용하는 것을 더 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  12. 제8항에 있어서,
    상기 구간 해시 테이블은 단일 최저-순서 또는 최고-순서 요소를 저장함으로써 각각의 구간을 표현하는 연이은 구간 해시 테이블이고,
    2개의 각각의 구간이 빈 공간에 의해 분리되는 것에 응답하여, 상기 연이은 구간 해시 테이블은 상기 2개의 각각의 구간 중간에 있는 상기 빈 공간을 표현하는 더미 구간을 더 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  13. 구간을 해싱하기 위한 컴퓨팅 시스템으로서,
    프로세서의 집합; 및
    상기 프로세서의 집합에 결합되어, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 구간 검색을 수행하는 방법을 실행하게 하는 명령어를 저장하는 비-일시적 컴퓨터-판독가능한 매체를 포함하고,
    상기 방법은:
    검색 구간을 포함하는 검색 질의를 수신하는 단계;
    국소성-유지 해시 함수에 기반하여 상기 검색 구간을 검색 부분-구간 집합으로 분할하는 단계;
    상기 국소성-유지 해시 함수를 통하여, 각각의 검색 부분-구간과 연관된 검색 해시 코드를 획득하는 단계; 및
    상기 국소성-유지 해시 함수에 기반하여 상기 각각의 검색 부분-구간과 겹치는 구간들을 위한 구간 해시 테이블을 검색하는 단계로서, 상기 구간 해시 테이블은 각각의 구간을 복수의 부분-구간으로 분할하고 상기 국소성-유지 해시 함수에 기반하여 각각의 부분-구간을 해시 코드에 매핑함으로써 구성되는, 상기 구간 해시 테이블을 검색하는 단계를 포함하고, 상기 각각의 구간을 분할하는 것은:
    상기 국소성-유지 해시 함수를 통하여, 상기 각각의 구간의 최저-순서 요소에 대한 하위 해시 코드 및 최고-순서 요소에 대한 상위 해시 코드를 획득하는 것;
    상기 하위 해시 코드, 상기 하위 및 상위 해시 코드들 중간에 있는 해시 코드, 및 상기 상위 해시 코드를 포함하는 해시 코드 집합을 형성하는 것;
    상기 해시 코드 집합에서의 각각의 해시 코드에만 연관된 최대 구간을 획득하고, 상기 최대 구간은 상기 각각의 해시 코드에만 연관된 어느 더 큰 구간에 의해서도 포섭되지 않는 것; 및
    상기 각각의 구간의 상기 최저-순서 요소 및 최고-순서 요소 및 상기 획득된 최대 구간에 기반하여 상기 각각의 해시 코드와 연관된 각각의 부분-구간을 식별하는 것을 더 포함하는, 컴퓨팅 시스템.
  14. 제13항에 있어서, 상기 구간 해시 테이블은 또한 상기 매핑된 해시 코드에 기반하여 상기 각각의 부분-구간을 상기 구간 해시 테이블에 삽입함으로써 구성되는, 컴퓨팅 시스템.
  15. 제13항에 있어서, 상기 각각의 검색 부분-구간과 겹치는 구간들을 위한 검색은:
    각각의 구간의 각각의 최저-순서 요소에 기반하여 순서화된 상기 검색 해시 코드와 연관된 구간 집합을 획득하는 것; 및
    상기 획득된 구간 집합에서의 중간 구간과 상기 각각의 검색 부분-구간이 겹칠 수 없다고 결정하는 것에 응답하여, 상기 중간 구간의 일측 상에 순서화된 순서 집합에서의 구간을 폐기하는 것을 포함하는, 일측 2진 검색을 사용하는 것을 더 포함하는, 컴퓨팅 시스템.
  16. 제15항에 있어서,
    상기 구간 해시 테이블은, 상기 검색 해시 코드와 연관된 상기 획득된 상기 구간 집합이 서로소가 되도록 하는, 서로소 구간 해시 테이블이고;
    상기 일측 2진 검색을 사용하는 것은, 상기 각각의 검색 부분-구간이 상기 중간 구간과 겹칠 수 있다고 결정하는 것에 응답하여, 내측 일측 2진 검색을 수행하는 것을 포함하는, 네스티드 2진 검색을 사용하는 것을 더 포함하는, 컴퓨팅 시스템.
  17. 제13항에 있어서,
    상기 구간 해시 테이블은 단일 최저-순서 또는 최고-순서 요소를 저장함으로써 각각의 구간을 표현하는 연이은 구간 해시 테이블이고,
    2개의 각각의 구간이 빈 공간에 의해 분리되는 것에 응답하여, 상기 연이은 구간 해시 테이블은 상기 2개의 각각의 구간 중간에 있는 상기 빈 공간을 표현하는 더미 구간을 더 포함하는, 컴퓨팅 시스템.
KR1020170062052A 2016-06-10 2017-05-19 국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템 KR102189398B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/179,780 US10387495B2 (en) 2016-06-10 2016-06-10 System and method for efficient interval search using locality-preserving hashing
US15/179,780 2016-06-10

Publications (2)

Publication Number Publication Date
KR20170140072A KR20170140072A (ko) 2017-12-20
KR102189398B1 true KR102189398B1 (ko) 2020-12-11

Family

ID=59067487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170062052A KR102189398B1 (ko) 2016-06-10 2017-05-19 국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템

Country Status (4)

Country Link
US (1) US10387495B2 (ko)
EP (1) EP3255571B1 (ko)
JP (1) JP6980412B2 (ko)
KR (1) KR102189398B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328639A (zh) * 2020-11-10 2021-02-05 杭州趣链科技有限公司 数据查询方法、装置、系统以及数据集处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691126B1 (en) 2000-06-14 2004-02-10 International Business Machines Corporation Method and apparatus for locating multi-region objects in an image or video database
US20050091443A1 (en) 2003-10-23 2005-04-28 Hywire Ltd. Search method using coded keys
US20120089647A1 (en) 2010-10-08 2012-04-12 Salesforce.Com, Inc. Methods and systems for latency-free database queries
KR101662957B1 (ko) 2015-07-30 2016-10-05 인하대학교 산학협력단 해싱기반의 순위다중패턴매칭 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1160682A1 (en) * 2000-06-02 2001-12-05 Thomas Dr. Seidl Relation interval tree
US6757686B1 (en) * 2000-06-14 2004-06-29 International Business Machines Corporation Method and apparatus for representing database and query information using interval hash tree
US7363325B2 (en) * 2000-08-10 2008-04-22 Nec Laboratories America, Inc. Synchronizable transactional database method and system
US20050050060A1 (en) * 2003-08-27 2005-03-03 Gerard Damm Data structure for range-specified algorithms
US7512617B2 (en) * 2004-12-29 2009-03-31 Sap Aktiengesellschaft Interval tree for identifying intervals that intersect with a query interval
US20070136243A1 (en) * 2005-12-12 2007-06-14 Markus Schorn System and method for data indexing and retrieval

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691126B1 (en) 2000-06-14 2004-02-10 International Business Machines Corporation Method and apparatus for locating multi-region objects in an image or video database
US20050091443A1 (en) 2003-10-23 2005-04-28 Hywire Ltd. Search method using coded keys
US20120089647A1 (en) 2010-10-08 2012-04-12 Salesforce.Com, Inc. Methods and systems for latency-free database queries
KR101662957B1 (ko) 2015-07-30 2016-10-05 인하대학교 산학협력단 해싱기반의 순위다중패턴매칭 방법

Also Published As

Publication number Publication date
EP3255571B1 (en) 2019-12-18
US20170357732A1 (en) 2017-12-14
US10387495B2 (en) 2019-08-20
EP3255571A1 (en) 2017-12-13
JP6980412B2 (ja) 2021-12-15
JP2017220226A (ja) 2017-12-14
KR20170140072A (ko) 2017-12-20

Similar Documents

Publication Publication Date Title
US11811660B2 (en) Flow classification apparatus, methods, and systems
Li et al. Packet forwarding in named data networking requirements and survey of solutions
CN108255958B (zh) 数据查询方法、装置和存储介质
JP4741134B2 (ja) 最長一致アドレスルックアップのための方法および装置
US9077669B2 (en) Efficient lookup methods for ternary content addressable memory and associated devices and systems
US7346009B2 (en) Dense mode coding scheme
US9269411B2 (en) Organizing data in a hybrid memory for search operations
US20130227092A1 (en) Methods of structuring data, pre-compiled exception list engines and network appliances
CN107528783B (zh) 利用对前缀长度进行两个搜索阶段的ip路由缓存
JP6190754B2 (ja) ネットワークスイッチにおける集中型メモリプールを用いるテーブル検索のための装置および方法
Qiao et al. Fast Bloom filters and their generalization
US6963868B2 (en) Multi-bit Patricia trees
US20050018683A1 (en) IP address storage technique for longest prefix match
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
US10586594B2 (en) Data tables in content addressable memory
KR102189398B1 (ko) 국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템
US8935508B1 (en) Implementing pseudo content access memory
US9760836B2 (en) Data typing with probabilistic maps having imbalanced error costs
US7788445B2 (en) Intelligent allocation of programmable comparison operations for reducing the number of associative memory entries required
US9703484B2 (en) Memory with compressed key
KR101587756B1 (ko) 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법
US9851902B2 (en) Searching memory for a search key
KR100309186B1 (ko) 경로배정기 기억장소 번지수를 이용한 인터넷경로배정기의 경로정보 할당 방법
Shen et al. CoDE: Fast name lookup and update using conflict-driven encoding
CN117194331A (zh) 一种支持隐匿查询的索引构建和检索方法及装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant