KR102382607B1 - 확률적 필터 쿼리 레이턴시의 감소 - Google Patents
확률적 필터 쿼리 레이턴시의 감소 Download PDFInfo
- Publication number
- KR102382607B1 KR102382607B1 KR1020207008805A KR20207008805A KR102382607B1 KR 102382607 B1 KR102382607 B1 KR 102382607B1 KR 1020207008805 A KR1020207008805 A KR 1020207008805A KR 20207008805 A KR20207008805 A KR 20207008805A KR 102382607 B1 KR102382607 B1 KR 102382607B1
- Authority
- KR
- South Korea
- Prior art keywords
- segment
- query
- filter
- probabilistic
- file
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- 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
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Human Computer Interaction (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Surgical Instruments (AREA)
- Ultra Sonic Daignosis Equipment (AREA)
Abstract
확률적 필터 쿼리 레이턴시를 감소시키기 위한 시스템 및 기술이 본원에서 기술된다. 제 1 매체에 저장된 확률적 필터에 대한 쿼리는 호출자로부터 수신될 수 있다. 쿼리를 수신한 것에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트가 획득될 수 있다. 여기서, 확률적 필터는 요소가 세트 내에 있지 않다는 결정으로 결론나는 세트 멤버쉽 결정을 제공한다. 캐시된 세그먼트에 대해 쿼리를 실행하여 부분 쿼리 결과를 생성할 수 있다. 제 1 매체로부터 제 2 매체로의 확률적 필터의 나머지 데이터의 검색은 호출자의 개입없이 개시될 수 있다. 여기서, 나머지 데이터는 캐시된 세그먼트에 있지 않은 쿼리 및 데이터에 대응한다. 이어서, 부분 쿼리 결과가 호출자에게 리턴될 수 있다.
Description
우선권 출원
본 출원은 2017년 8월 31일자로 출원된 미국 출원 번호 제 15/691,998 호를 우선권으로서 주장하며, 그의 내용 전체는 본원에서 참고로 포함된다.
기술 분야
본원에서 기술되는 실시형태는 일반적으로는 블록 디바이스(예를 들면, 디스크) 동작에 관한 것으로, 보다 구체적으로는 확률적 필터 쿼리 레이턴시(probabilistic filter query latency)를 감소시키는 것에 관한 것이다.
컴퓨터 저장 디바이스는 NAND 또는 다른 비휘발성 메모리(NVM) 기술을 기반으로 하는 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD), 콤팩트 디스크(CD) 등과 같은 블록 주소 지정 가능(block-addressable) "디스크", 및 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 위상 변화 메모리(PCM), 저항성 랜덤 액세스 메모리(RRAM), 또는 3D 크로스 포인트 등과 같은 바이트 주소 지정 가능 "메모리"로 분류될 수 있는 다양한 저장 기술을 포함한다. 일반적으로, 데이터는 컴퓨팅 시스템의 프로세서에 의해 사용되기 전에 디스크에서 메모리로 이동된다. 파일 시스템 내에 저장된 데이터에 대해, 파일 시스템 또는 운영 체제는 종종 이러한 이동을 관리하여, 결과적으로 디스크에 저장된 데이터의 일부를 반영하는 메모리 내의 파일 시스템 캐시가 된다.
확률적 필터는 예를 들면 디스크로부터 전체 데이터 구조를 로딩할 필요없이 데이터 아이템이 데이터 구조에 저장되어 있는지 여부를 효율적으로 결정하기 위해 데이터 저장 시스템에서 일반적으로 사용된다. 예를 들면, 키-값(key-value) 데이터 저장 시스템에서 키-스토어(key-store)를 로딩 및 서치하지 않고서도 키 스토어 내에서의 키의 존재 가능성을 결정하기 위해 확률적 필터가 사용될 수 있다. 확률적 필터는 일반적으로는 일방적 에러(one-sided error)를 갖는 세트-멤버쉽 테스트를 지원하는 고속 및 공간 효율적 데이터 구조이다. 이들 필터는 주어진 설정된 엔트리가 엔트리의 세트 내에 확실히 표시되어 있지 않다고 규정할 수 있다. 엔트리가 확실히 세트 내에 있지 않다고 필터가 규정하지 않으면, 엔트리가 세트 내에 있거나 있지 않을 수 있다. 다시 말하면, 부정적 응답(예를 들면, 세트 내에 있지 않음)은 확정적인 반면, 긍정적 응답(예를 들면, 세트 내에 있을 수 있음)은 허위의 긍정적 확률(FPP : false positive probability)을 초래한다. 일반적으로, 이러한 일방적 에러에 대한 절충은 공간 효율성이다. 예를 들면, 쿠쿠(Cuckoo) 필터 및 블룸(Bloom) 필터와 같은 몇몇 확률적 필터는 엔트리의 사이즈에 관계없이, 3% FPP를 제공하기 위해 엔트리 당 약 7 비트를 사용한다.
쿠쿠 필터 및 블룸 필터를 포함하는 다양한 확률적 필터가 존재하며, 이들의 동작은 예시적인 목적으로 제공된다. 쿠쿠 필터는 키의 f 비트 핑거프린트를 2 개의 버킷 중 하나에 삽입함으로써 동작한다. 제 1 버킷은 키의 해시이고 제 2 버킷은 핑거프린트를 해시함으로써 도출된다. 버킷 둘 다가 풀 상태(full)이면, 공간을 확보하기 위해 기존 핑거프린트가 제거되고, 그 다음, 그 핑거프린트가 자신 소유의 대체 버킷으로 이동된다. 키를 위치시키는 것은 핑거프린트가 존재하는지 여부를 결정하기 위해 키에 대한 버킷을 검사하는 것과 관련되어 있다. 기본 블룸 필터는 개의 비트(0과 같은 빈 값으로 초기화됨)와, 각각이 설정 요소(set element)를 개의 비트 중 하나에 매핑하여 설정 요소가 블룸 필터 내에서 개의 비트로 표시되는 개의 상이한 해시 함수와의 어레이(예를 들면, 블룸 필터 어레이)를 포함한다. 요소가 필터에 추가될 때, 어레이 내의 해시 함수기능에 대응하는 비트 각각은 1로 설정된다. (예를 들면, 블룸 필터 쿼리 또는 블룸 쿼리를 수행하여) 요소의 존재를 결정하기 위해, 쿼리된 요소에 대한 어레이 내에서의 대응하는 위치를 결정하도록 동일한 해시 함수가 적용된다. 모든 위치가 0이 아닌 1의 값을 가지면, 키는 세트 내에 있을 수 있다. 하나의 위치가 0의 값을 가지면, 키는 세트 내에 있지 않다.
반드시 축척대로 도시되지 않은 도면에서, 유사한 도면 부호는 유사한 구성 요소를 상이한 관점에서 기술할 수 있다. 상이한 문자 접미사를 갖는 유사한 도면 번호는 유사한 구성 요소의 상이한 예를 나타낼 수 있다. 일반적으로, 도면은 본 명세서에서 논의되는 다양한 실시예를 예시적이지만 제한적이지 않게 도시한다.
도 1은 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 시스템의 일 예의 블록도이다.
도 2는 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 제어 흐름의 일 예의 구획면도이다.
도 3은 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법의 일 예의 흐름도이다.
도 4는 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법의 일 예의 흐름도이다.
도 5는 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법의 일 예의 흐름도이다.
도 6은 하나 이상의 실시형태가 구현될 수 있는 머신의 일 예를 나타내는 블록도이다.
도 1은 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 시스템의 일 예의 블록도이다.
도 2는 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 제어 흐름의 일 예의 구획면도이다.
도 3은 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법의 일 예의 흐름도이다.
도 4는 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법의 일 예의 흐름도이다.
도 5는 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법의 일 예의 흐름도이다.
도 6은 하나 이상의 실시형태가 구현될 수 있는 머신의 일 예를 나타내는 블록도이다.
상술된 바와 같이, 확률적 필터는 디스크에서 메모리로 데이터를 로딩하는 것과 같은 고가의 동작을 수행하기 전에 세트 멤버쉽을 테스트하는데 일반적으로 사용된다. 확률적 필터는, 매체에 저장될 수 있고 그리고 일부 데이터 세트에서는 페이지, 블록 등과 같은 몇몇 로딩 가능한 유닛에 자체적으로 분산될 수 있는 데이터 구조이다. 예를 들면, 나머지 부분이 디스크에 상주하는 동안에, 확률적 필터는 메모리에 부분적으로 캐시될 수 있다. 따라서, 필터를 사용하기 위해, 나머지 부분은 디스크로부터 검색되고 그리고 쿼리되는 메모리에 저장된다. 이 동작은 확률적 필터를 쿼리할 때 추가의 레이턴시를 발생한다.
본 발명의 구현은 확률적 필터 쿼리 레이턴시를 감소시키는 기술을 설명한다. 이는 체크-앤-페치(check-and-fetch) 기술을 통해 달성될 수 있어, 필터 쿼리에 응답하여, 현재 캐시된 데이터(예를 들면, 메모리 내의 필터의 일부)는 쿼리 제약 조건에 대해 체크되고 나머지 데이터는 디스크로부터 조건부로 검색되어 메모리에 로딩될 수 있다. 나머지 데이터를 로딩하기 위한 조건은 캐시된 데이터가 쿼리에 대한 명확한 응답을 제공하는지 여부를 포함한다. 예를 들면, 비어 있는(예를 들면, 0) 임의의 체크된 비트는 테스트 중인 요소가 세트 내에 있지 않다고 하는 명확한 응답을 제공하기 때문에, 어레이 내의 모든 비트가 체크되기 전에 블룸 쿼리는 "단락" 또는 중지될 수 있다. 따라서, 필터의 캐시된 부분이 부정적 세트 멤버쉽을 표시하면, 디스크로부터 나머지 필터를 로딩할 필요가 없다. 캐시된 필터 부분이 명확한 응답(예를 들면, 모든 대응하는 비트는 비어 있지 않은 값을 가짐)을 제공하지 않으면, 부분 체크의 결과(예를 들면, 캐시된 데이터 부분)가 호출자(caller)에게 반환되는 동안에, 필터의 나머지 부분은 디스크로부터 로딩된다. 따라서, 호출 애플리케이션이 부분 필터 쿼리 결과를 처리하는 동안에, 필터의 디스크-투-메모리 로딩이 개시되었으며 부분 쿼리 결과가 처리될 때 호출 애플리케이션이 사용할 준비가 될 수 있다. 이 시퀀스는 일부 경우에 디스크로부터 전체 필터를 로딩하지 않고 쿼리에 대한 응답을 제공함으로써 그리고 다른 경우에 처리 애플리케이션이 필터의 서브세트를 조사할 수 있게 함으로써 필터 쿼리의 레이턴시를 감소시킨다. 논의를 단순화하기 위해, 설명된 기술을 설명하는데 표준의 블룸 필터가 사용되지만, 이 기술은 위에서 논의된 "단락" 원리를 충족시키는 다른 확률적 필터 또는 데이터 구조에 사용될 수 있다.
도 1은 하나의 실시형태에 따른, 확률적 필터 쿼리 레이턴시를 감소시키기 위한 시스템(100)의 일 예의 블록도이다. 도시된 바와 같이, 시스템(100)은 제 1 매체(115)(예를 들면, KVS 트리 및 대응하는 키-값 세트 파일(120)을 갖는 디스크), 제 2 매체(110)(예를 들면, 키-값 세트 파일(120)의 캐시된 세그먼트(125)를 갖는 메모리), 및 처리 회로(105)(예를 들면, 프로세서)를 포함한다. 처리 회로(105), 제 2 매체(110), 및 제 1 매체(115)는 모두 전자 하드웨어로 구현된다. 도시된 바와 같이, 캐시된 세그먼트(125)의 크로스-해칭 블록은 쿼리되는 확률적 필터(130)의 세그먼트에 대응한다. 여기서, 세그먼트는 파일이 블록, 메모리 페이지(예를 들면, 페이지) 또는 일부 다른 분할로 분할될 때 발생할 수 있는 파일(120) 또는 필터(130)의 분할에 대응한다.
처리 회로(105)는 제 1 매체(115)에 저장된 확률적 필터(130)에 대한 쿼리를 호출자로부터 수신하도록 배열(예를 들면, 하드와이어 또는 소프트웨어에 의해 구성)된다. 여기서, 호출자는 애플리케이션 구성 요소, 또는 요청을 생성할 수 있는 다른 엔티티이다. 예를 들면, 처리 회로(105)는 디스크 액세스를 관리하는 운영 체제(OS)를 구현할 수 있고, 호출자는 OS에 대한 요청을 생성하는 애플리케이션이다. 따라서, 사용자-공간(예를 들면, 커널-스페이스의 반대) 프로세스는 OS 호출을 통해 쿼리를 유도할 수 있다.
일 예에서, 쿼리는 확률적 필터(130)의 세그먼트 식별자를 포함한다. 여기서, 세그먼트 식별자는 확률적 필터(130)의 모든 세그먼트 중 어느 세그먼트가 쿼리와 관련이 있는지를 지정한다. 세그먼트는 쿼리에 결과를 제공할 수 있으면 쿼리와 관련이 있다. 예를 들면, 확률적 필터(130)는, 블룸 필터에 대한 쿼리에서의 키의 개의 해시에 대한 블룸 필터 어레이에서의 대응 버킷은 제 1 및 제 3 가상 메모리(VM) 페이지에 있으면 제 1 및 제 3 가상 메모리(VM) 페이지는 키의 쿼리에 대한 블룸 필터의 관련 세그먼트인 4 개의 가상 메모리(VM) 페이지를 확장하는 키-값 세트에 대한 블룸 필터일 수 있다. (파일 시스템, OS, 프로그램 등과 같은) 쿼리하는 엔티티는 블룸 해시를 수행할 수 있기 때문에, 그 엔티티는 호출을 생성할 때 쿼리에 관심있는 세그먼트를 제공할 수도 있다. 일 예에서, 세그먼트 식별자는 파일(120)에서의 바이트 오프셋이다. 일 예에서, 쿼리는 파일(120)에 대한 파일 식별자를 포함한다.
일 예에서, 파일(120)은 키-값 세트 파일이다. 키-값 세트(예를 들면, kvset)는 KVS 트리에서 키-값 엔트리를 보유하는데 사용되는 데이터 구조이다. KVS 트리는 트리의 콘텐츠보다는 키의 미리 결정된 도출(derivation)에 기초하는 부모 노드와 자식 노드 사이의 연결을 갖는 노드를 포함하는 트리 데이터 구조이다. 노드는 KVS라고도 알려진 시간 순서로 정렬된 키-값 세트 시퀀스를 포함한다. 키-값 세트는 키-분류 구조의 키-값 쌍을 포함한다. KVS 트리 내의 키-값 세트는 일단 기록된 후에는 변경할 수 없다. 노드 내의 키-값 세트, 분류된 키를 포함하는 키-값 세트, 및 블룸 필터와 같은 키 메트릭을 유지함으로써 WB 트리 서치를 개선하면서, KVS 트리는 WB 트리의 기록-처리량을 달성한다. 따라서, 이러한 예에서, 파일(120)은 필터(130)를 포함할 수 있는 적어도 하나의 키-값 세트를 포함한다.
일 예에서, 키-값 세트 파일은 하나 이상의 KVS 트리(예를 들면, 반드시 전체 KVS 트리가 아닌 하나 이상의 KVS 트리로부터의 메타 데이터, 키-값 세트 등과 같은 구성 요소)를 포함한다. 일 예에서, 확률적 필터(130)는 키-값 세트 파일 내의 단일 KVS 트리에 적용된다. 다수의 키-값 세트를 단일 키-값 세트 파일로 결합하거나 다른 데이터 구조들을 단일 파일로 결합하면 환경의 특성을 활용할 수 있다. 예를 들면, 운영 체제가 파일 관리, 파일 로딩 등에 상당한 오버헤드를 부과하면, 이들 오버헤드를 감소시키기 위해 몇몇 엔티티를 하나의 파일로 결합하는 것이 더 효율적일 수 있다.
일 예에서, 쿼리는 테스트 파라미터의 세트를 포함한다. 여기서, 테스트 파라미터는 쿼리가 필터(130)에 대해 테스트할 것을 표시한다. 예를 들면 테스트 파라미터는 키의 비트를 찾을 수 있는 블룸 필터의 인덱스일 수 있다. 일 예에서, 테스트 파라미터는 (예를 들면, 필터(130) 내에서의) 위치를 포함한다. 일 예에서, 위치는 세그먼트 내의 비트 오프셋이다.
처리 회로(105)는 쿼리를 수신한 것에 응답하여, 제 2 매체(110)에 저장된 확률적 필터(130)의 캐시된 세그먼트(125)를 획득하도록 배열된다. 여기서, 캐시된 세그먼트(125)는 제 1 매체(115)(예를 들면, 파일(120))에 저장된 모든 확률적 필터(130)보다 적다. 따라서, 쿼리에 응답하여 캐시된 세그먼트(125)를 획득하기 위해, 처리 회로(105)는 제 2 매체(110)로부터 캐시된 세그먼트(125)를 판독할 수 있다. 일 예에서, 확률적 필터(130)의 세그먼트는 제 2 매체(110) 내의 확률적 필터(130)의 표현에 기초한다. 따라서, 파일(120)은 제 1 매체(115)(예를 들면, 디스크)에 의해 정의된 블록으로 세그먼트화될 수 있지만, 제 2 매체(110)(예를 들면, 메모리)에서, 세그먼트는 메모리에 대한 페이지 사이즈로서 정의된다. 일 예에서, 세그먼트는 균일한 사이즈를 갖는다. 일 예에서, 균일한 사이즈는 메모리 페이지 사이즈이다. 일 예에서, 세그먼트 식별자는 페이지 식별자이다. 일 예에서, 세그먼트 식별자는 메모리 어드레스이다. 쿼리가 세그먼트 식별자를 포함하는 일 예에서, 캐시된 세그먼트(125)를 획득하는 것은 세그먼트 식별자에 대응하는 제 2 매체(110) 내의 확률적 필터의 세그먼트를 획득하는 것을 포함한다.
처리 회로(105)는 부분 쿼리 결과가 되는 캐시된 세그먼트(125)에 대한 쿼리를 실행하도록 배열된다. 쿼리가 테스트 파라미터를 포함하는 일 예에서, 부분 쿼리 결과는 캐시된 세그먼트(125)에 대해 수행되는 테스트 파라미터의 서브세트에 대한 결과를 포함한다. 테스트 파라미터가 하나 이상의 위치(예를 들면, 블룸 필터 어레이의 인덱스)를 포함하는 일 예에서, 테스트 파라미터의 서브세트는 각각의 위치에서 (예를 들면, 테스트할) 비트 값을 포함한다. 일 예에서, 부분 쿼리 결과는, 쿼리에 관련되어 있으면서 캐시된 세그먼트(125) 내에 있지 않은 세그먼트 식별자의 리스트를 포함한다.
처리 회로(105)는 캐시된 세그먼트(125)에 대한 쿼리를 실행하는 동안 호출자의 개입없이 제 1 매체(115)로부터 제 2 매체(110)로의 확률적 필터(130)의 나머지 데이터의 검색을 개시하도록 배열된다. 여기서, 나머지 데이터는 캐시된 세그먼트(125) 내에 있지 않다는 쿼리 및 데이터(예를 들면, 캐시된 세그먼트(125) 내에 있지 않은 필터(130)의 일부)에 대응한다. 따라서, 호출자는 파일(120)로부터 나머지 세그먼트를 로딩하기 위해 별도의 요청을 생성할 필요가 없다. 호출자에 의해 생성된 호출의 수를 감소시키면 종종 시스템(100)에 대한 오버헤드 및 레이턴시가 감소된다. 일 예에서, 처리 회로(105)는 부분 쿼리 결과에서 확률적 필터(130)의 정지 조건을 식별하도록 그리고 나머지 데이터의 검색을 피하도록 배열된다. 이 예는 쿼리가 부분 쿼리 결과에 의해 응답될 수 있는 "단락" 동작을 예시한다. 예를 들면, 0(예를 들면, 비어 있는)인 키에 대한 인덱스를 포함하는 캐시된 세그먼트(125)를 갖는 블룸 필터에서, 키가 블룸 필터에 의해 표시된 세트 내에 없기 때문에 나머지 데이터를 로딩할 필요가 없다. 일 예에서, 확률적 필터는 블룸 필터, 카운팅 블룸 필터, 또는 쿠쿠 필터 중 적어도 하나이다.
처리 회로(105)는 부분 쿼리 결과를 호출자에게 리턴하도록 배열된다. 부분 쿼리 결과는, 필터(130)의 세그먼트가 제 2 매체(110) 내에 있지 않았기 때문에 쿼리 수행에서 생략되었던 것을 가능성 있게 식별하면서, 쿼리가 필터(130)의 일부에 대해 수행되었음을 나타낸다. 따라서, 호출자의 요청은 확률적 쿼리에 관련하여 부분적으로 이행되며, 나머지 쿼리 세그먼트도 디스크로부터 로딩된다. 테스트 파라미터가 호출자에 의해 제공되는 일 예에서, 부분 쿼리 결과는 캐시된 세그먼트(125)에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함한다. 일 예에서, 부분 쿼리 결과는, 쿼리에 관련되어 있으면서 캐시된 세그먼트(125) 내에 있지 않은 세그먼트 식별자의 리스트를 포함한다.
일 예에서, 처리 회로(105)는 부분 쿼리 결과를―예를 들면, 호출자에 의해―수신하도록, 즉 확률적 필터(130)에 의해 정의된 정지 조건(예를 들면, true의 경우에 서치를 중지하도록 정의된 조건)에 대한 테스트 파라미터의 서브세트를 서치하고, 또한 정지 조건이 테스트 필터의 서브세트에서 발견되지 않을 때 세그먼트 식별자의 세그먼트 내에서 정지 조건을 서치(예를 들면, 서치를 정지)하도록 배열된다. 여기서, 세그먼트는 확률적 필터의 나머지 데이터의 검색을 개시한 결과로서 제 2 매체(110)에 상주한다. 즉, 나머지 데이터의 개시된 검색은 나머지 데이터를 제 2 매체(110)에 넣는 것을―예를 들면, 필터(130)가 쿼리된 키의 가능한 존재를 표시하는지 여부를 결정하기 위해 부분 쿼리 결과가 호출자에 의해 서치되는 동안―완료되었다. 따라서, 쿼리의 단일 결과는 호출자에게 캐시 된 세그먼트(125)에 대한 필터 쿼리의 결과와, 호출자가 필터 쿼리의 나머지를 수행하게 하면서 이 시간에 제 1 매체(115)로부터 제 2 매체(110)로 로딩된 나머지 세그먼트의 식별 둘 다를 제공한다.
본원에서 기술되는 체크-앤-페치 기술은 파일 페이지가 캐시되는지(예를 들면, 리눅스 핀코어(Linux fincore)) 또는 캐시되지 않은 파일 페이지를 로딩하는지(예를 들면, 리눅스 패비즈(Linux fadvise))를 테스트하는 종래 기술에 비해 몇 가지 장점을 갖는다. 예를 들면, 본원에서 기술되는 체크-앤-페치 기술은 페이지 상주 정보―예를 들면, 캐시된 페이지에서의 관심 비트의 값―를 획득할 수 있고 단일 시스템 호출에서 캐시되지 않은 페이지의 백그라운드 로딩을 개시할 수 있다. 일반적으로, 핀코어 또는 패비즈와 같은 기술은 수행을 크게 감소시키면서 동일한 작업을 수행하기 위해 적어도 3 개의 시스템 호출을 사용한다. 예를 들면, 체크-앤-페치를 수행하기 위해, 종래의 핀코어 및 패비즈는 캐시된 페이지로부터 판독된 하나 이상의 파일 및 캐시되지 않은 페이지에 대한 패비즈 호출을 사용한다. 또한, 본원에서 기술되는 체크-앤-페치 기술은 파일 내의 비연속 페이지에 대해 동작할 수 있다. 일반적으로, 핀코어 및 패비즈와 같은 기술은 파일 내의 연속 페이지에 대해서만 동작한다. 또한, 기존 방법은 수행을 크게 감소시키면서 비연속 페이지에 대해 동작하도록 다수의 시스템 호출 각각을 사용한다. 추가로, 본원에서 기술되는 체크-앤-페치 기술은 파일 페이지가 참조되는 순서를 지정할 수 있다. 이는 페이지 로딩을 최적화할 기회를 제공한다. 이러한 정보는 기존 방법, 예를 들면 "랜덤" 및 "순차"로 제한되는 패비즈에 의해 통신되지 않는다.
상기 장점은 파일 기반 액세스 기술에 관한 것이지만, 본원에서 기술되는 체크-앤-페치 기술은 또한 메모리 기반 파일 액세스(예를 들면, 파일이 메모리 매핑될 때)에 비해 장점을 갖는다. 이러한 맥락에서, 리눅스 민코어(Linux mincore) 및 리눅스 매비즈(Linux madvise)와 같은 기존 기술은 단점이 있다. 예를 들면, 본원에서 기술되는 체크-앤-페치 기술은 페이지 상주 정보를 획득할 수 있고 단일 시스템 호출에서의 캐시되지 않은 페이지의 백그라운드 로딩을 개시할 수 있다. 또한, 기존 기술은 동일한 작업(예를 들면, 민코어를 호출한 다음 매비즈)을 수행하기 위해 적어도 2 개의 시스템 호출을 사용한다. 또한, 체크-앤-페치는 파일 내의 연속 페이지에 대해 일반적으로 동작하는 다른 기술(예를 들면, 민코어 및 매비즈)과 달리 파일 내의 비연속 페이지에 대해 동작할 수 있다. 또한, 기존 기술은 수행을 크게 감소시키면서 비연속 페이지에 대해 동작하기 위해 다수의 시스템 호출 각각을 사용한다. 또한, 체크-앤-페치는 파일 페이지가 참조되는 순서를 지정할 수 있고, 이는 페이지 로딩을 최적화할 수 있는 기회를 제공한다. 이 정보는 일반적으로 "랜덤" 및 "순차"로 제한되는 매비즈와 같은 기존 기술에 의해 통신되지 않는다.
다른 운영 체제 또는 파일시스템이 유사하게 수정될 수 있지만, 실제 예에 대한 본 기술을 설명하기 위해, KVS 트리를 지원하는 리눅스 가상 파일 시스템(VFS: Virtual File System)을 갖는 리눅스 운영 체제가 이하의 예에서 사용된다. KVS 트리 내의 키-값 세트 각각은 해당 키-값 세트에 저장된 엔트리(예를 들면, 키-값 쌍 또는 톰스톤(tombstone), 톰스톤은 키에 대응하는 값이 삭제되었음을 나타냄)와 관련된 키를 추적하기 위해 블룸 필터를 포함할 수 있다. 판독 전용 파일로서 디스크에 저장된 키-값 세트를 사용자-공간 프로세스와 리눅스 커널 모두에 노출시키는 리눅스 VFS를 구현할 수 있다. 이러한 키-값 세트 파일 내의 블룸 필터는 기지의 오프셋(바이트 단위)에서 시작하고 기지의 사이즈(바이트 단위)를 갖는 연속적인 바이트 시퀀스를 포함한다. 표준 파일 동작에 따르면, 키-값 세트 파일로부터 판독된 데이터는 각각이 가상 메모리(VM) 페이지의 사이즈인 유닛의 표준 리눅스 페이지 캐시 내(예를 들면, 메모리 내)에 있다. 이러한 각 유닛은 VM 페이지 사이즈의 배수인 키-값 세트 파일 내의 0 기반 오프셋에서 시작한다. 예를 들면, 4096 바이트의 VM 페이지 사이즈가 주어지면, 키-값 세트 파일 내의 페이지는 오프셋 0, 4096, 8192 등에서 시작한다. 예를 들면, 다른 파일과 마찬가지로, 사용자-공간 프로세스는 표준 리눅스 mmap 시스템 호출을 사용하여 키-값 세트 파일을 프로세스의 가상 주소 공간에 선택 사양으로 메모리 매핑할 수 있다. 여기서, 사용자-공간 프로세스는 메모리 판독 커맨드를 통해 블룸 필터를 포함한 키-값 세트 데이터에 액세스할 수 있으며 운영 체제(또는 VM 관리자)는 기본 비트의 디스크-투-메모리 로딩을 관리한다.
도 2 내지 도 4는 다음 단락에서 설명되는 다양한 예를 나타낸다. 다음의 정의는 키-값 세트 파일(F)의 블룸 필터(B)와 키(K)를 B의 비트에 매핑하는 해시 함수(H)를 가정한다:
● BF_FILE_OFFSET_BYTE(F, B)는 블룸 필터(B)의 제 1 바이트에 대한 키-값 세트 파일(F)에서의 바이트 오프셋이다.
● BF_SIZE_BYTE(F, B)는 키-값 세트 파일(F)에서의 블룸 필터(B)의 사이즈(바이트)이다.
● BF_OFFSET_BIT(B, H, K)는 키(K)에 대해 해시 함수(H)를 실행함으로써 선택된 블룸 필터(B)의 비트 오프셋이다.
● VMPAGE_SIZE_BYTE(F)는 키-값 세트 파일(F)의 페이지 사이즈(바이트)이다.
본원에서 기술되는 바와 같이, 키-값 세트 파일(F)의 모든 바이트 오프셋은 제로 기반이다. 즉, 키-값 세트 파일(F)의 제 1 바이트는 오프셋 제로(0)에 있는 것으로 정의된다. 또한, 설명된 바와 같이, 블룸 필터(B)의 모든 비트 오프셋은 또한 0에 기초하고; 블룸 필터(B)의 제 1 비트는 오프셋 제로(0)에 있는 것으로 정의된다. 이들 제로-기반 인덱스가 본원에서 사용되지만, 그들은 필요하지 않다(예를 들면, 제 1 비트는 오프셋 1(1)에 있을 수 있다). 또한, 본원에서 사용되는 바와 같이, floor(x)는 실수 x보다 작거나 같은 가장 큰 정수로 정의된다.
이들 정의가 주어지면, 다음을 계산할 수 있다:
● BFPAGE_FILE_OFFSET_FIRST_BYTE(F, B) = floor(BF_FILE_OFFSET_BYTE(F, B)/VMPAGE_SIZE_BYTE(F)) * VMPAGE_SIZE_BYTE(F), 이는 블룸 필터(B)의 제 1 바이트를 포함하는 키-값 세트 파일(F)에서의 페이지의 바이트 오프셋이다.
● BFPAGE_FILE_OFFSET_LAST_BYTE(F, B) = floor((BF_FILE_OFFSET_BYTE(F, B) + BF_SIZE_BYTE(F, B) - 1)/VMPAGE_SIZE_BYTE(F)) * VMPAGE_SIZE_BYTE(F), 이는 블룸 필터(B)의 마지막 바이트를 포함하는 키-값 세트 파일(F)에서의 페이지의 바이트 오프셋이다.
● BFPAGE_COUNT(F, B) = (((BFPAGE_FILE_OFFSET_LAST_BYTE(F, B) - BFPAGE_FILE_OFFSET_FIRST_BYTE(F, B))/VMPAGE_SIZE_BYTE(F)) + 1, 이는 블룸 필터(B)의 적어도 하나의 바이트를 포함하는 키-값 세트 파일(F)에서의 페이지의 카운트이다.
● HBYTE_FILE_OFFSET_BYTE(F, B, H, K) = BF_FILE_OFFSET_BYTE(F, B) + floor(BF_OFFSET_BIT(B, H, K)/8), 이는 키(K)에 대해 해시 함수(H)를 실행함으로써 선택된 블룸 필터(B)에서의 비트를 포함하는 키-값 세트 파일(F)에서의 바이트의 바이트 오프셋이다.
● HBYTE_OFFSET_BIT(F, B, H, K) = BF_OFFSET_BIT(B, H, K) modulo 8, 이는 키(K)에 대해 해시 함수(H)를 실행함으로써 선택된 블룸 필터(B)에서의 비트인 오프셋 HBYTE_FILE_OFFSET_BYTE(F, B, H, K)에서 키-값 세트 파일(F)의 바이트에서의 비트 오프셋이다.
● HPAGE_FILE_OFFSET_BYTE(F, B, H, K) = floor(HBYTE_FILE_OFFSET_BYTE(F, B, H, K)/VMPAGE_SIZE_BYTE(F)) * VMPAGE_SIZE_BYTE(F), 이는 키(K)에 대해 해시 함수(H)를 실행함으로써 선택된 블룸 필터(B)의 비트를 포함하는 키-값 세트 파일(F)에서의 페이지의 바이트 오프셋이다.
● HPAGE_OFFSET_BIT(F, B, H, K) = ((8 * BF_FILE_OFFSET_BYTE(F, B)) + BF_OFFSET_BIT(B, H, K))modulo(8 * VMPAGE_SIZE_BYTE (F)), 이는 키(K)에 대해 해시 함수(H)를 실행함으로써 선택된 블룸 필터(B)에서의 비트인 바이트 오프셋 HPAGE_FILE_OFFSET_BYTE(F, B, H, K)에서 키-값 세트 파일(F)의 페이지에서의 비트 오프셋이다.
이들 값은 일단 계산되면 다양한 방식으로 사용될 수 있다. 예를 들면, 키(K)에 대해 해시 함수(H)를 실행함으로써 선택된 블룸 필터(B)의 비트를 판독하기 위해, 다음 동작이 사용될 수 있다:
● 바이트 오프셋 HPAGE_FILE_OFFSET_BYTE(F, B, H, K)에서 시작하는 키-값 세트 파일(F)에서의 페이지를 메모리 버퍼로 판독하는 동작; 그 다음
● 비트 오프셋 HPAGE_OFFSET_BIT(F, B, H, K)에서 상기 메모리 버퍼로부터 관심있는 비트를 판독하는 동작.
다른 예에서, 키(K)에 대해 해시 함수(H)를 실행함으로써 선택된 블룸 필터(B)에서의 비트를 판독하기 위해, 다음 동작들이 사용될 수 있다:
● 바이트 오프셋 HBYTE_FILE_OFFSET_BYTE(F, B, H, K)에서 키-값 세트 파일(F)의 바이트를 메모리 버퍼로 판독하는 동작; 그 다음
● 비트 오프셋 HBYTE_OFFSET_BIT(F, B, H, K)에서 상기 메모리 버퍼로부터 관심있는 비트를 판독하는 동작.
상술된 바와 같이, 몇몇 예가 아래에 제시된 상황은 이들 정의 및 계산된 값을 포함한다.
도 2는 하나의 실시형태에 따른 확률적 필터 쿼리 레이턴시를 감소시키기 위한 제어 흐름(200)의 일 예의 구획면도(swim-lane diagram)이다. 다음의 예는 리눅스 OS와 관련된 파일 기반 체크-앤-페치 기술을 지칭한다. 이 기술은, 경우에 따라, 블룸 필터 데이터를 포함하는 키-값 세트 파일 페이지의 지정된 세트의 어느 세그먼트가 리눅스 페이지 캐시에 있는지를 결정하고, 그리고 필요한 경우에만 그들 페이지의 밸런스를 비동기적으로 로딩한다. 또한, 이 기술은 페이지 캐시에 있는 페이지(예를 들면, 캐시된 페이지)에서의 지정된 비트의 값에 대한 정보를 제공한다. 일 예에서, 체크-앤-페치 기술은 VFS의 일부이다. 일 예에서, 이 기술은 시스템 호출을 통해 사용자-공간 프로세스에 의해 실행된다. 일 예에서, 이 기술은 직접 메서드 호출(예를 들면, 표준 C-언어 함수 호출)을 통해 리눅스 커널에 의해 실행된다.
제어 흐름(200)은 요청자(예를 들면, 호출자), OS 또는 파일시스템, 캐시 매체(예를 들면, 메모리 또는 메모리 서브시스템) 및 저장 매체(예를 들면, 디스크 또는 디스크 서브시스템) 사이의 체크-앤-페치 함수의 동작을 도시한다. 호출자가 블룸 쿼리의 일부로서 체크-앤-페치 함수를 실행한 후(동작 205), 블룸 필터 어레이의 캐시된 부분이 결정된다(동작 210). 캐시 내의 블룸 필터 어레이의 일부가 판독되고(215), 블룸 쿼리가 그들에 대해 수행된다(동작 220). 동작 220의 결과가 쿼리 용어가 블룸 필터 내에 있지 않음을 나타내면, 핸들러(예를 들면, OS 또는 파일시스템)는 쿼리 용어(예를 들면, 아이템)가 키-값 세트 내에 있지 않다는 표시를 리턴한다(동작 225). 일 예에서, 표시는 부분 쿼리 결과의 일부로서 리턴된다.
핸들러가 쿼리를 완전히 해결할 수 없는 경우(예를 들면, 블룸 필터의 캐시된 부분이 쿼리 용어가 키-값 세트 내에 있음을 나타냄), 블룸 필터 어레이의 캐시되지 않은 부분의 비동기 로딩이 개시된다(동작 230). 여기서, 비동기는 호출자가 다른 동작으로 이동하기 전에 완료를 차단(예를 들면, 대기)하지 않는 동작이다. 따라서, 핸들러는 블룸 필터 어레이의 캐시되지 않은 부분이 저장 매체로부터 캐시 매체로 이동하는 것을 기다리지 않고(동작 240) 캐시된 부분에 대한 쿼리 결과(예를 들면, 부분 쿼리 결과)를 즉시 제공할 수 있다(동작 235).
다음은 의사 코드를 사용하는 파일 기반 체크-앤-페치의 일 예를 나타낸다. 먼저, 이 기술에는 다음의 구조와 프로토타입이 사용된다:
여기서,
● fd는 체크-앤-페치 함수(예를 들면, 개방 시스템 호출에 응답하여 리눅스 VFS에 의해 리턴된 파일 설명자)에 대한 입력인 개방 키-값 세트 파일에 대한 핸들이다.
● pagev는 함수에 대한 입력인 page_info 구조의 어레이이다. 여기서, 아래에 설명되는 바와 같이, gev의 각 요소는 키-값 세트 파일(fd)에서의 페이지의 바이트 오프셋(예를 들면, "page_offset")과, 해당 페이지의 비트 오프셋(예를 들면, "bit_offset")을 지정한다.
● page_cached는 아래에 설명되는 바와 같이 함수의 출력으로 설정된 부울 값의 어레이이다.
● bit_set은 아래에 설명되는 바와 같이 함수의 출력으로 설정된 부울 값의 어레이이다.
● count는 함수에 대한 입력인 pagev, page_cached 및 bit_set 어레이에서의 요소의 정수이다.
이하에서, 어레이(A)가 주어지면, 표기법 A[i]는 A의 제 i 요소를 지칭하며, 여기서 제 1 요소는 A[0]이며, 이는 어레이 요소가 0 기반임을 말한다. 위의 사항이 주어지면, 다음 동작은 파일 기반 체크-앤-페치 기술에 의해 수행된다:
일 예에서, file_check_fetch 함수는 캐시되지 않은 키-값 세트 파일 페이지가 어레이 pagev에 나타나는 순서대로 판독될 수 있다는 것과, 이들 페이지를 로딩하는 것(예를 들면, 로딩 순서로 다음 페이지를 선택하는 것)을 최적화하기 위해 이를 고려할 수 있다. 위에서 설명한 호출을 사용하여 블룸 쿼리를 수행하기 위해, 사용자-공간 프로세스(또는 다른 호출자)는 다음을 수행할 수 있다. 키-값 세트 파일(F)의 블룸 필터(B)와, 각각이 B의 비트에 키를 매핑하는 J 개의 해시 함수(H[0],…, H[J-1])의 어레이(H)가 주어지면, 키(K)에 대한 블룸 쿼리가 다음 동작을 통해 실행될 수 있다:
도 3은 하나의 실시형태에 따른 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법(300)의 일 예의 흐름도이다. 방법(300)의 동작은 위에서 또는 아래에서 설명되는 컴퓨터 하드웨어를 사용하여 수행된다. 전술된 바와 같이, 사용자-공간 프로세스는 표준 리눅스 mmap 시스템 호출 등을 사용하여 키-값 세트 파일을 자신의 가상 메모리 어드레스 공간에 선택적으로 메모리 매핑할 수 있다. 이 경우에, 사용자-공간 프로세스는 메모리 판독 동작을 통해 블룸 필터를 포함한 키-값 세트 데이터에 액세스할 수 있다. 쿼리 레이턴시는 앞에서 설명한 파일 기반 체크-앤-페치 함수와 유사하게 동작하는 메모리 기반 체크-앤-페치 함수로 개선될 수 있다. 일 예에서, 파일 기반 체크-앤-체크 의사 코드의 예는 메모리 매핑 파일과 함께 사용할 수도 있다.
블룸 쿼리가 수신된다(동작 305). 쿼리의 핸들러는 쿼리와 관련된 키-값 세트 파일로부터 세그먼트를 계산할 수 있다(동작 310). 이러한 예에서, 쿼리는 파일 식별자와 쿼리 용어(예를 들면, 키-값 세트 쿼리의 키)를 제공하고 OS는 키가 해시하는 블룸 필터 어레이의 특정 부분(예를 들면, 개의 해시의 결과에 대응하는 어레이의 인덱스)을 키-값 세트 파일의 어느 부분이 포함하는지를 계산한다. 메모리 매핑 파일에서, 이 결정은 메모리 매핑된 키-값 세트 파일에서의 블룸 필터에 대한 페이지의 바이트 오프셋으로부터 다수 어레이 인덱스의 비트 오프셋을 계산하는 것을 포함한다.
필터의 관련 세그먼트가 결정되면, 세그먼트가 처리된다. 이 프로세스는 다음 세그먼트를 선택하고(동작 315), 그 세그먼트가 캐시 내에 있는지 여부를 결정한다(동작 320). 세그먼트가 캐시 내에 있지 않으면, 검색을 위한 세그먼트를 마킹한다(동작 345). 일 예에서, 검색을 위한 세그먼트를 마킹하는 것은 실제로 세그먼트의 검색을 시작하지 않지만, 추가 데이터가 쿼리를 완료하는데 사용될 수 있으면 세그먼트가 검색될 수 있음을 나타낸다. 어느 경우이든(예를 들면, 세그먼트를 검색하거나 검색하지 않고 마킹), 동작 345는 비동기적이다.
세그먼트가 캐시 내에 있으면, 필터가 패스하는지 여부를 결정하기 위해 테스트된다(동작 325). 표준 블룸 필터를 사용하여, 키에 대응하는 어레이 인덱스가 0으로 설정되면 쿼리가 패스되지 않습니다. 필터가 패스되지 않으면, 방법(300)은 종료될 수 있고 쿼리 용어가 세트의 일부가 아니라는 표시를 리턴할 수 있다(동작 330). 그러나, 필터가 패스되고 더 많은 세그먼트가 있으면(동작 335), 세그먼트가 없거나 필터가 패스되지 않을 때까지 처리가 계속된다.
세그먼트가 처리되고, 패스되지 않은 필터로 인해 방법(300)이 종료되지 않은 후, 마킹된 세그먼트는 디스크로부터 메모리로 로딩된다(동작 340). 이 시점에서, 방법(300)은 부분 결과를 호출자에게 리턴하고 종료한다.
블룸 필터 데이터를 포함하는 메모리 매핑된 키-값 세트 파일 페이지의 어느 지정된 세트가 (있다면) 리눅스 페이지 캐시 내에 있는지를 결정하고 그리고 쿼리를 완료하는데 필요한 경우에만 이들 페이지의 밸런스가 비동기식으로 로딩되게 하는 메모리 기반 체크-앤-페치 함수가 아래에 설명되어 있다. 예시적인 함수는 캐시된 페이지 내의 지정된 비트의 값에 대한 정보도 제공한다. 이러한 예에서, 메모리 기반 체크-앤-페치 함수는 VFS에서 구현되며 시스템 호출을 통해 사용자-공간 프로세스에 의해 실행된다. 함수는 아래의 데이터 구조와 프로토타입을 사용한다.
여기서:
● addrv는 메소드에 대한 입력인 page_addr_info 구조의 어레이이며; 아래에 설명된 바와 같이, addrv의 각 요소는 메모리 매핑된 키-값 세트 파일 페이지의 제 1 바이트에 대응하는 프로세스 가상 메모리 어드레스(page_addr)와, 그 페이지에서의 비트 오프셋(bit_offset)을 지정한다.
● page_cached는 아래에 설명되는 바와 같이, 메서드에 대한 출력으로서 설정된 부울 값의 어레이이다.
● bit_set은 아래에 설명되는 바와 같이 메서드에 대한 출력으로서 설정된 부울 값의 어레이이다.
● count는 메소드에 대한 입력인 addrv, page_cached 및 bit_set 어레이 내의 요소의 정수이다.
이하에서, 어레이 A가 주어지면, 표기법 A[i]는 A의 제 i 요소를 지칭하며, 여기서 제 1 요소는 A[0]이다. 상기가 주어지면, 메모리 기반 체크 앤 페치 기술에 의해 아래의 동작이 수행된다:
일 예에서, mem_check_fetch 함수는 캐시되지 않은 키-값 세트 파일 페이지가 어레이 addrv에 나타나는 순서대로 판독될 수 있음을 가정하고, 이들 페이지를 로딩하는 것을 최적화하기 위해 이를 고려할 수 있다. 일 예에서, mem_check_fetch는 addrv 어레이가 1 이상의 키-값 세트 파일에 (매핑 대상) 페이지와 연관된 어드레스를 지정할 수 있게 한다. 이하의 의사 코드는 mem_check_fetch 함수를 사용하여 블룸 쿼리를 수행하는 방법을 예시한다. 메모리 매핑된 키-값 세트 파일(F) 내의 블룸 필터(B)와, 각각이 B 내의 비트에 키를 매핑하는 J 개의 해시 함수(H[0],…, H[J-1])의 어레이(H)가 주어지면, 키(K)에 대한 블룸 쿼리는 이하의 동작을 통해 실행될 수 있다:
위에서 설명된 mem_check_fetch의 실시형태는 키-값 세트 파일이 연속적인 가상 메모리 어드레스 시퀀스에 전체적으로 메모리 매핑(예를 들면, 전체 파일이 매핑됨)되는 것으로 가정한다. 키-값 세트 파일이 부분적으로 메모리 매핑되면, 예를 들면 블룸 필터 데이터를 포함하는 부분만이 매핑되면, 상기 기술에서 사용된 메모리 오프셋은 그에 따라 조정된다.
도 4는 하나의 실시형태에 따른 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법(400)의 일 예의 흐름도이다. 방법(400)의 동작은 위에서 또는 아래에서 설명되는 컴퓨터 하드웨어를 사용하여 수행된다. 도 2 및 도 3과 관련하여 위에서 설명된 기술은 쿼리가 확률적 필터의 캐시된 부분으로 응답될 수 없는 한 비동기 로딩이 발생할 것으로 호출 프로세스가 예상하기 때문에 디스크로부터 메모리로 확률적 필터 데이터의 명시적 및 조건부 비동기적 로딩을 호출한다. 따라서, 메모리 매핑된 키-값 세트 파일에 있어서, mem_check_fetch 함수는 사용자-공간 프로세스가 블룸 필터 데이터를 포함하는 페이지를 리눅스 페이지 캐시에 비동기적으로 로딩하게 한다. 대체 또는 무료 기술은 확률적 필터로부터 캐시되지 않은 세그먼트의 암시적 비동기 로딩을 사용한다. 예를 들면, 메모리-기반의 "페치 그룹" 함수는 사용자-공간 프로세스가 페이지 그룹을 그룹(예를 들면, 페치 그룹)으로 정의함으로써 그리고 그룹의 멤버 내에 페이지 결함이 있으면 전체 그룹을 로딩함으로써 블룸 필터 데이터를 포함하는 페이지를 리눅스 페이지 캐시에 비동기적으로 로딩하는 것을 암시적으로 개시하게 한다.
방법(400)은 페치 그룹을 작성함으로써 시작한다(동작 405). 페치 그룹은 서로 관련되어 있는 파일의 페이지를 포함한다. 페치 그룹은 그룹화할 페이지를 지정함으로써 그리고 페이지 식별을 데이터 구조(예를 들면, 테이블, 어레이 등)에 저장함으로써 작성될 수 있다. 일 예에서, 페이지는 확률적 필터를 저장함에 있어서의 그들의 사용과 관련되어 있다.
페치 그룹이 생성되면, 페이지 결함이 있을 때 참조된다(동작 410). 여기서, 페이지 결함은 메모리에 상주하지 않은 페이지에 대한 참조이다(예를 들면, 사용될 디스크로부터 로딩될 필요가 있음). 페이지 결함이 존재하면, 페치 그룹은 결함 페이지가 페치 그룹에 있는지 여부를 결정하기 위해 체크된다(동작 420). 있다면, 페치 그룹 내의 다른 페이지는 비동기적으로 로딩된다(동작 440). 비동기 로딩을 개시한 후, 또는 결함 페이지가 페치 그룹에 있지 않으면, 방법(400)은 종료된다. 프로세스가 블룸(또는 다른 확률론) 쿼리를 수행할 것을 페이지에 단순히 요청하고 그리고 조사된 제 1 페이지가 캐시 내에 없을 때 캐시되지 않은 페이지 전체가 비동기적으로 로딩되기 때문에 이 기술은 암시적이다.
아래에 나타낸 바와 같이, mem_fetch_group 함수는 메모리 매핑된 키-값 세트 파일에 대해 동작한다. file_check_fetch 및 mem_check_fetch 함수와 마찬가지로 mem_fetch_group 함수는 VFS에서 구현되고 시스템 호출을 통해 사용자-공간 프로세스에 의해 실행될 수 있다. 이하는 mem_fetch_group 함수의 프로토타입이다:
여기서,
● addrv는 메소드에 대한 입력인 address_type 값의 어레이이며; addrv의 각 요소는 메모리 매핑된 키-값 세트 파일 페이지의 제 1 바이트에 대응하는 프로세스 가상 메모리 어드레스를 지정한다.
● count는 메소드에 대한 입력인 addrv 어레이에서의 요소의 정수이다.
이하에서, 어레이 A가 주어지면, 표기법 A[i]는 A의 제 i 요소를 지칭하며, 여기서 제 1 요소는 A[0]이다. 상기가 주어지면, 이하의 동작은 페치 그룹 기술을 구현하기 위해 수행된다:
메모리 매핑된 키-값 세트 파일로부터 페이지를 로딩하는 것을 조장하는 VM 페이지 결함에 응답하여 FetchGroup 테이블이 채워진 후(예를 들면, 페치 그룹이 정의됨), VFS는 이하의 동작을 수행한다:
일 예에서, 페치 그룹 내의 캐시되지 않은 키-값 세트 파일 페이지는 대응하는 FetchGroup 테이블 엔트리를 작성한 mem_fetch_group 실행에 대한 addrv 입력에 의해 지정된 순서대로 판독된다. 핸들러(예를 들면, VFS)는 이러한 페이지 로딩을 최적화하기 위해 이 순서를 사용할 수 있다. 일 예에서, mem_fetch_group 함수는 addrv 어레이가 하나 이상의 키-값 세트 파일에서의 페이지에 대응하는 (예를 들면, 매핑된) 어드레스를 지정할 수 있게 한다. 이하의 의사 코드는 mem_fetch_group 함수를 사용하여 블룸 쿼리를 수행하는 방법을 나타낸다. 메모리 매핑된 키-값 세트 파일(F)의 블룸 필터(B)와, 각각이 B의 비트에 키를 매핑하는 J 개의 해시 함수(H[0],…, H[J-1])의 어레이(H)가 주어지면, 키(K)에 대한 블룸 쿼리는 다음과 같이 실행될 수 있다:
먼저, 블룸 필터(B)에 대한 페치 그룹을 설정하기 위해 이하의 단계를 수행하라:
그 다음, 미래의 일부 시점에, 다음과 같이 키(K)에 대한 블룸 쿼리를 실행하라:
상기 의사 코드는 키-값 세트 파일이 연속적인 가상 메모리 주소 시퀀스에 전체적으로 메모리 매핑된다고 가정한다. 키-값 세트 파일이 부분적으로 메모리 매핑되면―예를 들면, 블룸 필터 데이터를 포함하는 파일의 부분만이 매핑되면―상기 알고리즘에 사용된 메모리 오프셋은 해당 상황에 맞게 조정된다.
페치 그룹 기술의 조건부 특성은 필요할 때 미리 디스크로부터 캐시로 파일 데이터를 로딩하려고 시도하는 다른 프리 페치 기술과 구별되는 특성이다. 따라서, 이들 다른 기술은 그들 중 하나에 액세스하면 페이지 결함이 발생하는 경우 잘 정의된 파일 페이지 모음의 로딩을 조정하지 않는다.
리눅스 하에서 판독되는 키-값 세트 파일이 위의 예에서 사용되었지만, 이들 기술 중 어떤 것도 리눅스에만 해당되지 않으며; 모두는 파일 페이지를 캐시하고 메모리 매핑 파일을 제공하는 모든 운영 체제에 적용할 수 있다. file_check_fetch 및 mem_check_fetch의 변형이 세트 멤버쉽 테스트를 위해 다른 확률적 필터에 적용될 수도 있다. 예를 들면, 이들 함수는 카운팅 블룸 필터(Counting Bloom filter)―M 개의 f 비트 카운터의 어레이와, 각각이 세트 요소를 M 개의 카운터 중 하나에 매핑하는 J 개의 상이한 해시 함수를 포함함―또는 쿠쿠 해시 테이블 또는 쿠쿠 필터―M 개의 f 비트 값의 어레이(여기서 값은 쿠쿠 해시 테이블의 경우에는 키, 쿠쿠 필터의 경우에는 키 핑거프린트임)와 각각이 M 개의 f 비트 값 중 하나에 세트 요소를 매핑하는 2 개의 상이한 해시 함수를 포함함―로 확장될 수 있다. Mem_fetch_group은 하나 이상의 알려진 페이지 내의 메모리 매핑 파일에 저장된 모든 데이터 구조에 적용될 수 있으며, 이들 페이지 중 어느 하나에 대해 페이지 결함을 처리할 때 데이터 구조를 포함하는 캐시되지 않은 페이지의 비동기 로딩을 개시하는 것이 유용하다. 따라서 mem_fetch_group은 세트 멤버쉽을 테스트하기 위한 확률적 필터뿐만 아니라 광범위한 애플리케이션에 유용할 수 있다.
도 5는 하나의 실시형태에 따른 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법(500)의 일 예의 흐름도이다. 방법(500)의 동작은 위에서 또는 아래에서 설명되는 컴퓨터 하드웨어를 사용하여 수행된다.
동작 505에서, 제 1 매체에 저장된 확률적 필터에 대한 쿼리가 호출자로부터 수신된다. 일 예에서, 쿼리를 수신하는 것은 세그먼트 식별자를 수신하는 것을 포함한다. 일 예에서, 세그먼트 식별자는 확률적 필터의 모든 세그먼트 중 어느 세그먼트가 쿼리와 관련되는지를 지정한다. 일 예에서, 세그먼트 식별자는 파일의 바이트 오프셋이다. 일 예에서, 쿼리는 파일의 파일 식별자를 포함한다.
일 예에서, 파일은 키-값 세트 파일이다. 일 예에서, 키-값 세트 파일은 하나 이상의 KVS 트리로부터의 키-값 세트를 포함한다. 일 예에서, 확률적 필터는 키-값 세트 파일에서의 단일 KVS 트리에 적용한다. 일 예에서, 페치 그룹 데이터 구조는 키-값 세트 파일의 페이지에 대해 유지된다. 이러한 예에서, 키-값 세트 파일에 대한 페치 그룹 내의 페이지는 페치 그룹 데이터 구조 내의 하나의 페이지 상의 페이지 결함에 응답하여 검색된다.
일 예에서, 쿼리는 테스트 파라미터의 세트를 포함한다. 일 예에서, 테스트 파라미터는 위치(예를 들면, 블룸 필터 어레이에 대한 인덱스, 쿠쿠 필터의 버킷, 어드레스 등)를 포함한다. 일 예에서, 위치는 세그먼트 내의 비트 오프셋이다. 일 예에서, 테스트 파라미터의 서브세트는 각각의 위치에서의 비트 값을 포함한다.
동작 510에서, 쿼리를 수신한 것에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트가 획득된다. 일 예에서, 캐시된 세그먼트는 제 1 매체에 저장된 확률적 필터의 모두보다 적다. 일 예에서, 확률적 필터는 요소가 세트 내에 있지 않다는 결정으로 결론나는 세트 멤버쉽 결정을 제공한다. 일 예에서, 확률적 필터는 블룸 필터, 카운팅 블룸 필터 또는 쿠쿠 필터 중 적어도 하나이다.
일 예에서, 쿼리를 수신하는 것은 세그먼트 식별자를 수신하는 것을 포함한다. 일 예에서, 세그먼트 식별자는 확률적 필터의 모든 세그먼트 중 어느 세그먼트가 쿼리와 관련되는지를 지정한다. 일 예에서, 캐시된 세그먼트를 획득하는 것은 세그먼트 식별자에 대응하는 제 2 매체에서 확률적 필터의 세그먼트를 획득하는 것을 포함한다.
일 예에서, 확률적 필터의 세그먼트는 제 2 매체에서의 확률적 필터의 표현에 기초한다. 일 예에서, 세그먼트는 균일한 사이즈를 갖는다. 일 예에서, 균일한 사이즈는 메모리 페이지 사이즈이다. 일 예에서, 세그먼트 식별자는 메모리 페이지 식별자이다. 일 예에서, 세그먼트 식별자는 메모리 어드레스이다.
동작 515에서, 쿼리는 부분 쿼리 결과가 되는 캐시된 세그먼트에 대해 실행된다.
동작 520에서, 제 1 매체로부터 제 2 매체로의 확률적 필터의 나머지 데이터의 검색은 호출자의 개입없이 개시(예를 들면, 시작)된다. 일 예에서, 나머지 데이터는 캐시된 세그먼트에 있지 않은 쿼리 및 데이터에 대응한다. 일 예에서, 확률적 필터의 나머지 데이터를 검색하는 것은 부분 쿼리 결과에서 확률적 필터의 중지 조건을 식별하는 것과 나머지 데이터의 검색을 회피(예를 들면, 중단 또는 추가 조치를 취하지 않음)하는 것을 포함한다.
단계 525에서, 부분 쿼리 결과가 호출자에게 리턴된다. 쿼리가 테스트 파라미터를 포함하는 예에서, 부분 쿼리 결과는 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함한다. 일 예에서, 부분 쿼리 결과는 쿼리에 관련되어 있으면서 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함한다. 일 예에서, 호출자는 부분 쿼리 결과를 수신하고, 확률적 필터에 의해 정의된 정지 조건에 대해 테스트 파라미터의 서브세트를 서치하고, 정지 조건이 테스트 파라미터의 서브세트에서 발견되지 않으면 세그먼트 식별자의 세그먼트 내에서 정지 조건을 서치한다. 여기서, 세그먼트는 확률적 필터의 나머지 데이터의 검색을 개시한 결과로서 제 2 매체에 상주한다.
도 6은 본원에서 논의되는 임의의 하나 이상의 기술(예를 들면, 방법론)이 수행될 수 있는 예시적인 머신(600)의 블록도를 도시한다. 본원에서 기술되는 바와 같은 예는 머신(600)의 로직 또는 다수의 구성 요소 또는 메커니즘을 포함하거나 이에 의해 동작될 수 있다. 회로(예를 들면, 처리 회로)는 하드웨어(예를 들면, 단순 회로, 게이트, 로직 등)를 포함하는 머신(600)의 유형 엔티티로 구현된 회로의 모음이다. 회로 멤버쉽은 시간이 지남에 따라 유연할 수 있다. 회로는 동작시 지정된 동작을 단독으로 또는 조합하여 수행할 수 있는 멤버를 포함한다. 일 예에서, 회로의 하드웨어는 특정 동작(예를 들면, 하드와이어링)을 수행하도록 불변적으로 설계될 수 있다. 일 예에서, 회로의 하드웨어는 특정 동작의 명령어를 인코딩하도록 물리적으로 수정된(예를 들면, 불변의 매스 입자의 자기적으로, 전기적으로, 이동 가능한 배치 등) 머신 판독 가능 매체를 포함하는 가변적으로 연결된 물리적 구성 요소(예를 들면, 실행 유닛, 트랜지스터, 간단한 회로 등)를 포함할 수 있다. 물리적 구성 요소를 연결할 때, 하드웨어 구성 요소의 기본 전기 속성이 예를 들면 절연체에서 도체로 또는 그 반대로 변경된다. 이러한 명령어는 내장형 하드웨어(예를 들면, 실행 유닛 또는 로딩 메커니즘)가 동작 중에 특정 동작의 일부를 수행하기 위해 가변 연결을 통해 하드웨어 내의 회로의 멤버를 생성할 수 있게 한다. 따라서, 일 예에서, 머신 판독 가능 매체 소자는 회로의 일부이거나 디바이스가 동작할 때 회로의 다른 구성 요소와 통신 가능하게 결합된다. 일 예에서, 임의의 물리적 구성 요소는 하나 이상의 회로의 하나 이상의 멤버에서 사용될 수 있다. 예를 들면, 동작 하에서, 실행 유닛은 한 시점에서 제 1 회로의 제 1 회로에서 사용될 수 있고, 제 1 회로의 제 2 회로에 의해, 또는 다른 시간에 제 2 회로의 제 3 회로에 의해 재사용될 수 있다. 머신(600)에 대한 이들 구성 요소의 추가적인 예는 다음과 같다.
대안적인 실시형태에서, 머신(600)은 독립형 디바이스로서 동작할 수 있거나 다른 머신에 연결(예를 들면, 네트워킹)될 수 있다. 네트워크 배치에서, 머신(600)은 서버-클라이언트 네트워크 환경에서 서버 머신, 클라이언트 머신 또는 둘 다의 용량으로 동작할 수 있다. 일 예에서, 머신(600)은 피어-투-피어(P2P)(또는 다른 분산된) 네트워크 환경에서 피어 머신으로서 작용할 수 있다. 머신(600)은 퍼스널 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 퍼스널 디지털 어시스턴트(PDA), 모바일 폰, 웹 기기, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 머신에 의해 취해질 액션을 지정하는 명령어(순차적 또는 다른 방식)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신만이 도시되어 있지만, 용어 "머신"은 클라우드 컴퓨팅, SaaS(Software as a Service), 기타 컴퓨터 클러스터 구성과 같은, 본원에서 논의되는 하나 이상의 방법론을 수행하기 위해 명령어의 세트(또는 복수 세트)를 개별적으로 또는 공동으로 실행하는 임의의 머신의 모음을 포함하는 것으로 간주되어야 한다.
머신(예를 들면, 컴퓨터 시스템)(600)은 하드웨어 프로세서(602)(예를 들면, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 하드웨어 프로세서 코어, 또는 이들의 임의의 조합), 메인 메모리(604), 정적 메모리(예를 들면, 펌웨어, 마이크로 코드, BIOS(Basic-input-Output), UEFI(Unified Extensible Firmware Interface) 등을 위한 메모리 또는 저장 장치)(606) 및 대용량 저장 장치(608)(예를 들면, 하드 드라이브, 테이프 드라이브, 플래시 저장 장치, 또는 다른 블록 디바이스)를 포함하고, 일부 또는 전부가 인터링크(예컨대, 버스)(630)를 통해 서로 통신할 수 있다. 머신(600)은 디스플레이 유닛(610), 영숫자 입력 디바이스(612)(예를 들면, 키보드) 및 사용자 인터페이스(UI) 내비게이션 디바이스(614)(예를 들면, 마우스)를 더 포함할 수 있다. 일 예에서, 디스플레이 유닛(610), 입력 디바이스(612) 및 UI 내비게이션 디바이스(614)는 터치 스크린 디스플레이일 수 있다. 머신(600)은 저장 디바이스(예를 들면, 구동 유닛)(608), 신호 생성 디바이스(618)(예를 들면, 스피커), 네트워크 인터페이스 디바이스(620), 및 GPS(global positioning system) 센서, 나침반, 가속도계 또는 기타 센서와 같은 하나 이상의 센서(616)를 추가로 포함할 수 있다. 머신(600)은 하나 이상의 주변 디바이스(예를 들면, 프린터, 카드 리더기 등)와 통신 또는 제어하기 위해 직렬(예를 들면, 범용 직렬 버스(USB), 병렬 또는 다른 유선 또는 무선(예를 들면, 적외선(IR), 근거리 통신(NFC) 등)) 연결과 같은 출력 컨트롤러(628)를 포함할 수 있다.
프로세서(602), 메인 메모리(604), 정적 메모리(606) 또는 대용량 저장 장치(608)의 레지스터는 본원에서 기술되는 임의의 하나 이상의 기술 또는 기능에 의해 구현되거나 이용되는 데이터 구조 또는 명령어(624)의 하나 이상의 세트(예를 들면, 소프트웨어)가 저장된 머신 판독 가능 매체(622)이거나 이를 포함할 수 있다. 명령어(624)는 또한 머신(600)에 의해 실행되는 동안 프로세서(602), 메인 메모리(604), 정적 메모리(606) 또는 대용량 저장 장치(608)의 임의의 레지스터 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 일 예에서, 하드웨어 프로세서(602), 메인 메모리(604), 정적 메모리(606) 또는 대용량 저장 장치(608)의 하나 또는 임의의 조합은 머신 판독 가능 매체(622)를 구성할 수 있다. 머신 판독 가능 매체(622)가 단일 매체로서 예시되어 있지만, 용어 "머신 판독 가능 매체"는 하나 이상의 명령어(624)를 저장하도록 구성된 단일 매체 또는 다중 매체(예를 들면, 중앙 집중식 또는 분산 데이터베이스, 또는 관련 캐시 및 서버)를 포함할 수 있다.
용어 "머신 판독 가능 매체"는, 머신(600)에 의한 실행을 위한 명령어를 저장, 인코딩 또는 전달할 수 있고, 머신(600)이 본 발명의 기술 중의 임의의 하나 이상의 기술을 수행하게 하거나, 이러한 명령어에 의해 사용되거나 이와 관련된 데이터 구조를 저장, 인코딩 또는 전달할 수 있는 임의의 매체를 포함할 수 있다. 비제한적 머신 판독 가능 매체의 예는 고체 상태 메모리, 광학 매체, 자기 매체 및 신호(예를 들면, 무선 주파수 신호, 다른 광자 기반 신호, 사운드 신호 등)를 포함할 수 있다. 일 예에서, 비일시적 머신 판독 가능 매체는 변하지 않는 (예를 들면, 레스트) 매스를 갖는 복수의 입자를 갖는 머신 판독 가능 매체를 포함하며, 따라서 물질의 조성물이다. 따라서, 비일시적 머신 판독 가능 매체는 일시적 전파 신호를 포함하지 않는 머신 판독 가능 매체이다. 비일시적 머신 판독 가능 매체의 특정 예는 반도체 메모리 디바이스(예를 들면, 전기적으로 프로그램 가능한 판독 전용 메모리(EPROM), 전기적으로 소거 가능한 프로그램 가능한 판독 전용 메모리(EEPROM)), 플래시 디바이스와 같은 비휘발성 디바이스; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 광 자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함할 수 있다.
명령어(624)는 다수의 전송 프로토콜(예를 들면, 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 하이퍼 텍스트 전송 프로토콜(HTTP) 등) 중 어느 하나를 사용하는 네트워크 인터페이스 디바이스(620)을 통해 전송 매체를 사용하는 통신 네트워크(626)를 통해 추가로 전송되거나 수신될 수 있다. 예시적인 통신 네트워크는 근거리 통신망(LAN), 광역 통신망(WAN), 패킷 데이터 네트워크(예를 들면, 인터넷), 모바일 폰 네트워크(예를 들면, 셀룰러 네트워크), 프레인 올드 전화(POTS) 네트워크, 무선 데이터 네트워크(예를 들면, Wi-Fi®로 알려진 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 계열, WiMax®로 알려진 IEEE 802.16 표준 계열, 특히 피어-투-피어(P2P) 네트워크로 알려진 IEEE 802.15.4 표준 계열)를 포함할 수 있다. 일 예에서, 네트워크 인터페이스 디바이스(620)는 통신 네트워크(626)에 연결하기 위한 하나 이상의 물리적인 잭(예를 들면, 이더넷, 동축 또는 전화 잭) 또는 하나 이상의 안테나를 포함할 수 있다. 일 예에서, 네트워크 인터페이스 디바이스(620)는 단일-입력 다중-출력(SIMO), 다중-입력 다중-출력(MIMO) 또는 다중-입력 단일-출력(MISO) 기술 중 적어도 하나를 사용하여 무선으로 통신하기 위한 복수의 안테나를 포함할 수 있다. 용어 "전송 매체"는 머신(600)에 의한 실행을 위한 명령어를 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 또한 그러한 소프트웨어의 통신을 용이하게 하기 위해 디지털 또는 아날로그 통신 신호 또는 다른 무형 매체를 포함할 수 있다. 전송 매체는 머신 판독 가능 매체이다.
추가적인 노트 및 예
제 1 예는 확률적 필터 쿼리 레이턴시를 감소시키기 위한 시스템으로서, 시스템은 제 1 매체에 저장된 확률적 필터에 대한 쿼리를 호출자로부터 수신하고; 쿼리를 수신하는 것에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트를 획득하고―캐시된 세그먼트는 제 1 매체에 저장된 모든 확률적 필터보다 적고, 확률적 필터는 요소가 세트 내에 있지 않다는 결정으로 결론나는 세트 멤버쉽 결정을 제공함―; 캐시된 세그먼트에 대해 쿼리를 실행하여 부분 쿼리 결과를 생성하고; 호출자의 개입없이, 제 1 매체로부터 제 2 매체로 확률적 필터의 나머지 데이터의 검색을 개시하고―나머지 데이터는 캐시된 세그먼트에 있지 않은 쿼리 및 데이터에 대응함―; 그리고 부분 쿼리 결과를 호출자에게 리턴하는 처리 회로를 포함한다.
제 2 예에서, 제 1 예의 주제는 쿼리를 수신하는 것을 포함하고, 처리 회로는 세그먼트 식별자를 수신하며, 확률적 필터의 모든 세그먼트 중의 어느 세그먼트를 지정하는 세그먼트 식별자는 쿼리와 관련되어 있다.
제 3 예에서, 제 2 예의 주제는, 세그먼트 식별자는 파일의 바이트 오프셋인 것을 포함한다.
제 4 예에서, 제 3 예의 주제는, 쿼리는 파일에 대한 파일 식별자를 포함하는 것을 포함한다.
제 5 예에서, 제 3 예 및 제 4 예의 주제는, 파일은 키-값 세트 파일인 것을 포함한다.
제 6 예에서, 제 5 예의 주제는, 처리 회로는 추가로 키-값 세트 파일의 페이지에 대한 페치 그룹 데이터 구조를 유지하고; 페치 그룹 데이터 구조 내의 한 페이지의 페이지 결함에 응답하여 키-값 세트 파일에 대한 페치 그룹의 페이지를 검색하는 것임을 포함한다.
제 7 예에서, 제 5 예 및 제 6 예의 주제는, 키-값 세트 파일은 하나 이상의 KVS 트리를 포함하는 것을 포함한다.
제 8 예에서, 제 7 예의 주제는, 확률적 필터는 키-값 세트 파일의 단일 KVS 트리에 적용되는 것을 포함한다.
제 9 예에서, 제 2 예 내지 제 8 예의 주제는, 캐시된 세그먼트를 획득하기 위해, 처리 회로는 세그먼트 식별자에 대응하는 제 2 매체에서의 확률적 필터의 세그먼트를 획득하는 것을 포함한다.
제 10 예에서, 제 1 예 내지 제 9 예의 주제는, 확률적 필터의 세그먼트는 제 2 매체에서의 확률적 필터의 표현에 기초하는 것을 포함한다.
제 11 예에서, 제 10 예의 주제는, 세그먼트는 균일한 사이즈를 갖는 것을 포함한다.
제 12 예에서, 제 11 예의 주제는, 균일한 사이즈는 메모리 페이지 사이즈인 것을 포함한다.
제 13 예에서, 제 12 예의 주제는, 세그먼트 식별자는 페이지 식별자인 것을 포함한다.
제 14 예에서, 제 11 예 내지 제 13 예의 주제는, 세그먼트 식별자는 메모리 어드레스인 것을 포함한다.
제 15 예에서, 제 1 예 내지 제 14 예의 주제는, 쿼리는 테스트 파라미터의 세트를 포함하고, 부분 쿼리 결과는 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함하는 것을 포함한다.
제 16 예에서, 제 15 예의 주제는, 테스트 파라미터는 위치를 포함하는 것을 포함한다.
제 17 예에서, 제 16 예의 주제는, 위치는 세그먼트 내의 비트 오프셋인 것을 포함한다.
제 18 예에서, 제 17 예의 주제는, 테스트 파라미터의 서브세트는 각각의 위치에서 비트 값을 포함하는 것을 포함한다.
제 19 예에서, 제 15 예 내지 제 18 예의 주제는, 부분 쿼리 결과는 쿼리에 관련되어 있으면서 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함하는 것을 포함한다.
제 20 예에서, 제 19 예의 주제는, 처리 회로는 추가로, 호출자에 의해 부분 쿼리 결과를 수신하고; 확률적 필터에 의해 정의된 정지 조건에 대해 부분 쿼리 결과 내의 테스트 파라미터의 서브세트를 서치하고; 그리고 정지 조건이 테스트 파라미터의 서브세트에서 발견되지 않을 때 세그먼트 식별자의 세그먼트 내에서 정지 조건을 서치하는―세그먼트는 확률적 필터의 나머지 데이터의 검색을 개시한 결과로서 제 2 매체에 상주함― 것을 포함한다.
제 21 예에서, 제 1 예 내지 제 20 예의 주제는, 확률적 필터의 나머지 데이터의 검색을 개시하기 위해, 처리 회로는 부분 쿼리 결과에서 확률적 필터의 정지 조건을 식별하고 나머지 데이터의 검색을 포기하는 것을 포함한다.
제 22 예에서, 제 1 예 내지 제 21 예의 주제는, 확률적 필터는 블룸(Bloom) 필터, 카운팅 블룸(Counting Bloom) 필터 또는 쿠쿠(Cuckoo) 필터 중 적어도 하나인 것을 포함한다.
제 23 예는 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법으로서, 방법은 제 1 매체에 저장된 확률적 필터에 대한 쿼리를 호출자로부터 수신하는 단계; 쿼리를 수신하는 단계에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트를 획득하는 단계로서, 캐시된 세그먼트는 제 1 매체에 저장된 모든 확률적 필터보다 적고, 확률적 필터는 요소가 세트 내에 있지 않다는 결정으로 결론나는 세트 멤버쉽 결정을 제공하는, 단계; 캐시된 세그먼트에 대해 쿼리를 실행하여 부분 쿼리 결과를 생성하는 단계; 호출자의 개입없이, 제 1 매체로부터 제 2 매체로 확률적 필터의 나머지 데이터의 검색을 개시하는 단계로서, 나머지 데이터는 캐시된 세그먼트에 있지 않은 쿼리 및 데이터에 대응하는, 단계; 및 부분 쿼리 결과를 호출자에게 리턴하는 단계를 포함한다.
제 24 예에서, 제 23 예의 주제는, 쿼리를 수신하는 단계는 세그먼트 식별자를 수신하는 단계를 포함하며, 확률적 필터의 모든 세그먼트 중의 어느 세그먼트를 지정하는 세그먼트 식별자는 쿼리와 관련되어 있다.
제 25 예에서, 제 24 예의 주제는, 세그먼트 식별자는 파일의 바이트 오프셋인 것을 포함한다.
제 26 예에서, 제 25 예의 주제는, 쿼리는 파일에 대한 파일 식별자를 포함하는 것을 포함한다.
제 27 예에서, 제 25 예 및 제 26 예의 주제는, 파일은 키-값 세트 파일인 것을 포함한다.
제 28 예에서, 제 27 예의 주제는 키-값 세트 파일의 페이지에 대한 페치 그룹 데이터 구조를 유지하는 단계; 및 페치 그룹 데이터 구조 내의 한 페이지의 페이지 결함에 응답하여 키-값 세트 파일에 대한 페치 그룹의 페이지를 검색하는 단계를 포함한다.
제 29 예에서, 제 27 예 및 제 28 예의 주제는, 키-값 세트 파일은 하나 이상의 KVS 트리를 포함하는 것을 포함한다.
제 30 예에서, 제 29 예의 주제는, 확률적 필터는 키-값 세트 파일의 단일 KVS 트리에 적용되는 것을 포함한다.
제 31 예에서, 제 24 예 내지 제 30 예의 주제는, 캐시된 세그먼트를 획득하는 단계는 세그먼트 식별자에 대응하는 제 2 매체에서의 확률적 필터의 세그먼트를 획득하는 단계를 포함하는 것을 포함한다.
제 32 예에서, 제 23 예 내지 제 31 예의 주제는, 확률적 필터의 세그먼트는 제 2 매체에서의 확률적 필터의 표현에 기초하는 것을 포함한다.
제 33 예에서, 제 32 예의 주제는, 세그먼트는 균일한 사이즈를 갖는 것을 포함한다.
제 34 예에서, 제 33 예의 주제는, 균일한 사이즈는 메모리 페이지 사이즈인 것을 포함한다.
제 35 예에서, 제 34 예의 주제는, 세그먼트 식별자는 페이지 식별자인 것을 포함한다.
제 36 예에서, 제 33 예 내지 제 35 예의 주제는, 세그먼트 식별자는 메모리 어드레스인 것을 포함한다.
제 37 예에서, 제 23 예 내지 제 36 예의 주제는, 쿼리는 테스트 파라미터의 세트를 포함하고, 부분 쿼리 결과는 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함하는 것을 포함한다.
제 38 예에서, 제 37 예의 주제는, 테스트 파라미터는 위치를 포함하는 것을 포함한다.
제 39 예에서, 제 38 예의 주제는, 위치는 세그먼트 내의 비트 오프셋인 것을 포함한다.
제 40 예에서, 제 39 예의 주제는, 테스트 파라미터의 서브세트는 각각의 위치에서 비트 값을 포함하는 것을 포함한다.
제 41 예에서, 제 37 예 내지 제 40 예의 주제는, 부분 쿼리 결과는 쿼리에 관련되어 있으면서 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함하는 것을 포함한다.
제 42 예에서, 제 41 예의 주제는, 호출자에 의해 부분 쿼리 결과를 수신하는 단계; 확률적 필터에 의해 정의된 정지 조건에 대해 부분 쿼리 결과 내의 테스트 파라미터의 서브세트를 서치하는 단계; 및 정지 조건이 테스트 파라미터의 서브세트에서 발견되지 않을 때 세그먼트 식별자의 세그먼트 내에서 정지 조건을 서치하는 단계로서, 세그먼트는 확률적 필터의 나머지 데이터의 검색을 개시한 결과로서 제 2 매체에 상주하는, 단계를 포함한다.
제 43 예에서, 제 23 예 내지 제 42 예의 주제는, 확률적 필터의 나머지 데이터의 검색을 개시하는 단계는 부분 쿼리 결과에서 확률적 필터의 정지 조건을 식별하고 나머지 데이터의 검색을 포기하는 단계를 포함하는 것을 포함한다.
제 44 예에서, 제 23 예 내지 제 43 예의 주제는, 확률적 필터는 블룸 필터, 카운팅 블룸 필터 또는 쿠쿠 필터 중 적어도 하나인 것을 포함한다.
제 45 예는 머신에 의해 실행될 때 머신이 제 23 예 내지 제 44 예의 임의의 방법을 수행하게 하는 명령어를 포함하는 머신 판독 가능 매체이다.
제 46 예는 제 23 예 내지 제 44 예의 임의의 방법을 수행하기위한 수단을 포함하는 시스템이다.
제 47 예는 확률적 필터 쿼리 레이턴시를 감소시키기 위한 명령어를 포함하는 머신 판독 가능 매체로서, 명령어는 처리 회로에 의해 실행될 때, 처리 회로가, 제 1 매체에 저장된 확률적 필터에 대한 쿼리를 호출자로부터 수신하는 동작; 쿼리를 수신하는 동작에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트를 획득하는 동작으로서, 캐시된 세그먼트는 제 1 매체에 저장된 모든 확률적 필터보다 적고, 확률적 필터는 요소가 세트 내에 있지 않다는 결정으로 결론나는 세트 멤버쉽 결정을 제공하는, 동작; 캐시된 세그먼트에 대해 쿼리를 실행하여 부분 쿼리 결과를 생성하는 동작; 호출자의 개입없이, 제 1 매체로부터 제 2 매체로 확률적 필터의 나머지 데이터의 검색을 개시하는 동작으로서, 나머지 데이터는 캐시된 세그먼트에 있지 않은 쿼리 및 데이터에 대응하는, 동작; 및 부분 쿼리 결과를 호출자에게 리턴하는 동작을 포함하는 동작을 수행하게 한다.
제 48 예에서, 제 47 예의 주제는, 쿼리를 수신하는 동작은 세그먼트 식별자를 수신하는 동작을 포함하며, 확률적 필터의 모든 세그먼트 중의 어느 세그먼트를 지정하는 세그먼트 식별자는 쿼리와 관련되어 있다.
제 49 예에서, 제 48 예의 주제는, 세그먼트 식별자는 파일의 바이트 오프셋인 것을 포함한다.
제 50 예에서, 제 49 예의 주제는, 쿼리는 파일에 대한 파일 식별자를 포함하는 것을 포함한다.
제 51 예에서, 제 49 예 및 제 50 예의 주제는, 파일은 키-값 세트 파일인 것을 포함한다.
제 52 예에서, 제 51 예의 주제는, 동작은 키-값 세트 파일의 페이지에 대한 페치 그룹 데이터 구조를 유지하는 동작; 및 페치 그룹 데이터 구조 내의 한 페이지의 페이지 결함에 응답하여 키-값 세트 파일에 대한 페치 그룹의 페이지를 검색하는 동작을 포함하는 것을 포함한다.
제 53 예에서, 제 51 예 및 제 52 예의 주제는, 키-값 세트 파일은 하나 이상의 KVS 트리를 포함하는 것을 포함한다.
제 54 예에서, 제 53 예의 주제는, 확률적 필터는 키-값 세트 파일의 단일 KVS 트리에 적용되는 것을 포함한다.
제 55 예에서, 제 48 예 내지 제 54 예의 주제는, 캐시된 세그먼트를 획득하는 동작은 세그먼트 식별자에 대응하는 제 2 매체에서의 확률적 필터의 세그먼트를 획득하는 동작을 포함하는 것을 포함한다.
제 56 예에서, 제 47 예 내지 제 55 예의 주제는, 확률적 필터의 세그먼트는 제 2 매체에서의 확률적 필터의 표현에 기초하는 것을 포함한다.
제 57 예에서, 제 56 예의 주제는, 세그먼트는 균일한 사이즈를 갖는 것을 포함한다.
제 58 예에서, 제 57 예의 주제는, 균일한 사이즈는 메모리 페이지 사이즈인 것을 포함한다.
제 59 예에서, 제 58 예의 주제는, 세그먼트 식별자는 페이지 식별자인 것을 포함한다.
제 60 예에서, 제 57 예 내지 제 59 예의 주제는, 세그먼트 식별자는 메모리 어드레스인 것을 포함한다.
제 61 예에서, 제 47 예 내지 제 60 예의 주제는, 쿼리는 테스트 파라미터의 세트를 포함하고, 부분 쿼리 결과는 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함하는 것을 포함한다.
제 62 예에서, 제 61 예의 주제는, 테스트 파라미터는 위치를 포함하는 것을 포함한다.
제 63 예에서, 제 62 예의 주제는, 위치는 세그먼트 내의 비트 오프셋인 것을 포함한다.
제 64 예에서, 제 63 예의 주제는, 테스트 파라미터의 서브세트는 각각의 위치에서 비트 값을 포함하는 것을 포함한다.
제 65 예에서, 제 61 예 내지 제 64 예의 주제는, 부분 쿼리 결과는 쿼리에 관련되어 있으면서 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함하는 것을 포함한다.
제 66 예에서, 제 65 예의 주제는, 동작은 호출자에 의해 부분 쿼리 결과를 수신하는 동작; 확률적 필터에 의해 정의된 정지 조건에 대해 부분 쿼리 결과 내의 테스트 파라미터의 서브세트를 서치하는 동작; 및 정지 조건이 테스트 파라미터의 서브세트에서 발견되지 않을 때 세그먼트 식별자의 세그먼트 내에서 정지 조건을 서치하는 동작으로서, 세그먼트는 확률적 필터의 나머지 데이터의 검색을 개시한 결과로서 제 2 매체에 상주하는, 동작을 포함하는 것을 포함한다.
제 67 예에서, 제 47 예 내지 제 66 예의 주제는, 확률적 필터의 나머지 데이터의 검색을 개시하는 동작은 부분 쿼리 결과에서 확률적 필터의 정지 조건을 식별하고 나머지 데이터의 검색을 포기하는 동작을 포함하는 것을 포함한다.
제 68 예에서, 제 47 예 내지 제 67 예의 주제는, 확률적 필터는 블룸 필터, 카운팅 블룸 필터 또는 쿠쿠 필터 중 적어도 하나인 것을 포함한다.
제 69 예는 확률적 필터 쿼리 레이턴시를 감소시키기 위한 시스템으로서, 시스템은 제 1 매체에 저장된 확률적 필터에 대한 쿼리를 호출자로부터 수신하는 수단; 쿼리를 수신하는 것에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트를 획득하는 수단으로서, 캐시된 세그먼트는 제 1 매체에 저장된 모든 확률적 필터보다 적고, 확률적 필터는 요소가 세트 내에 있지 않다는 결정으로 결론나는 세트 멤버쉽 결정을 제공하는, 수단; 캐시된 세그먼트에 대해 쿼리를 실행하여 부분 쿼리 결과를 생성하는 수단; 호출자의 개입없이, 제 1 매체로부터 제 2 매체로 확률적 필터의 나머지 데이터의 검색을 개시하는 수단으로서, 나머지 데이터는 캐시된 세그먼트에 있지 않은 쿼리 및 데이터에 대응하는, 수단; 및 부분 쿼리 결과를 호출자에게 리턴하는 수단을 포함한다.
제 70 예에서, 제 69 예의 주제는, 쿼리를 수신하는 수단은 세그먼트 식별자를 수신하는 수단을 포함하며, 확률적 필터의 모든 세그먼트 중의 어느 세그먼트를 지정하는 세그먼트 식별자는 쿼리와 관련되어 있다.
제 71 예에서, 제 70 예의 주제는, 세그먼트 식별자는 파일의 바이트 오프셋인 것을 포함한다.
제 72 예에서, 제 71 예의 주제는, 쿼리는 파일에 대한 파일 식별자를 포함하는 것을 포함한다.
제 73 예에서, 제 71 예 및 제 72 예의 주제는, 파일은 키-값 세트 파일인 것을 포함한다.
제 74 예에서, 제 73 예의 주제는 키-값 세트 파일의 페이지에 대한 페치 그룹 데이터 구조를 유지하는 수단; 및 페치 그룹 데이터 구조 내의 한 페이지의 페이지 결함에 응답하여 키-값 세트 파일에 대한 페치 그룹의 페이지를 검색하는 수단을 포함한다.
제 75 예에서, 제 73 예 및 제 74 예의 주제는, 키-값 세트 파일은 하나 이상의 KVS 트리를 포함하는 것을 포함한다.
제 76 예에서, 제 75 예의 주제는, 확률적 필터는 키-값 세트 파일의 단일 KVS 트리에 적용되는 것을 포함한다.
제 77 예에서, 제 70 예 내지 제 76 예의 주제는, 캐시된 세그먼트를 획득하는 수단은 세그먼트 식별자에 대응하는 제 2 매체에서의 확률적 필터의 세그먼트를 획득하는 수단을 포함하는 것을 포함한다.
제 78 예에서, 제 69 예 내지 제 77 예의 주제는, 확률적 필터의 세그먼트는 제 2 매체에서의 확률적 필터의 표현에 기초하는 것을 포함한다.
제 79 예에서, 제 78 예의 주제는, 세그먼트는 균일한 사이즈를 갖는 것을 포함한다.
제 80 예에서, 제 79 예의 주제는, 균일한 사이즈는 메모리 페이지 사이즈인 것을 포함한다.
제 81 예에서, 제 80 예의 주제는, 세그먼트 식별자는 페이지 식별자인 것을 포함한다.
제 82 예에서, 제 79 예 내지 제 81 예의 주제는, 세그먼트 식별자는 메모리 어드레스인 것을 포함한다.
제 83 예에서, 제 69 예 내지 제 82 예의 주제는, 쿼리는 테스트 파라미터의 세트를 포함하고, 부분 쿼리 결과는 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함하는 것을 포함한다.
제 84 예에서, 제 83 예의 주제는, 테스트 파라미터는 위치를 포함하는 것을 포함한다.
제 85 예에서, 제 84 예의 주제는, 위치는 세그먼트 내의 비트 오프셋인 것을 포함한다.
제 86 예에서, 제 85 예의 주제는, 테스트 파라미터의 서브세트는 각각의 위치에서 비트 값을 포함하는 것을 포함한다.
제 87 예에서, 제 83 예 내지 제 86 예의 주제는, 부분 쿼리 결과는 쿼리에 관련되어 있으면서 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함하는 것을 포함한다.
제 88 예에서, 제 87 예의 주제는, 호출자에 의해 부분 쿼리 결과를 수신하는 수단; 확률적 필터에 의해 정의된 정지 조건에 대해 부분 쿼리 결과 내의 테스트 파라미터의 서브세트를 서치하는 수단; 및 정지 조건이 테스트 파라미터의 서브세트에서 발견되지 않을 때 세그먼트 식별자의 세그먼트 내에서 정지 조건을 서치하는 수단으로서, 세그먼트는 확률적 필터의 나머지 데이터의 검색을 개시한 결과로서 제 2 매체에 상주하는, 수단을 포함한다.
제 89 예에서, 제 69 예 내지 제 88 예의 주제는, 확률적 필터의 나머지 데이터의 검색을 개시하는 수단은 부분 쿼리 결과에서 확률적 필터의 정지 조건을 식별하고 나머지 데이터의 검색을 포기하는 수단을 포함하는 것을 포함한다.
제 90 예에서, 제 69 예 내지 제 89 예의 주제는, 확률적 필터는 블룸 필터, 카운팅 블룸 필터 또는 쿠쿠 필터 중 적어도 하나인 것을 포함한다.
제 91 예는 확률적 필터 쿼리 레이턴시를 감소시키기 위한 시스템으로서, 시스템은, 페이지 결함의 통지를 수신하고―페이지 결함은 메모리 매핑 파일에 대응하는 메모리 페이지에 대한 요청이며, 메모리 페이지는 메모리 내에 있지 않음―; 메모리 페이지는 페치 그룹의 일부임을 결정하고; 그리고 메모리 내에 있지 않은 페치 그룹 내의 메모리 페이지의 로딩을 개시하는 처리 회로를 포함한다.
제 92 예에서, 제 91 예의 주제는, 로딩을 개시하기 위해, 처리 회로는 메모리 내에 있지 않은 페치 그룹 내의 메모리 페이지의 비동기 로딩을 수행하는 것을 포함한다.
제 93 예에서, 제 91 예 또는 제 92 예의 주제는, 메모리 페이지가 페치 그룹의 일부임을 결정하기 위해, 처리 회로는 페치 그룹 데이터 구조에서 메모리 페이지를 찾는 것을 포함한다.
제 94 예에서, 제 93 예의 주제는, 데이터 구조는 테이블인 것을 포함한다.
제 95 예에서, 제 94 예의 주제는, 테이블은 하나 이상의 페치 그룹을 보유하는 것을 포함한다.
제 96 예에서, 제 93 예 내지 제 95 예의 주제는, 처리 회로는 추가로: 페치 그룹 내의 페이지의 식별을 수신하고; 식별 정보를 데이터 구조에 저장하는 것을 포함한다.
제 97 예는 확률적 필터 쿼리 레이턴시를 감소시키는 방법으로서, 방법은, 페이지 결함의 통지를 수신하는 단계로서, 페이지 결함은 메모리 매핑 파일에 대응하는 메모리 페이지에 대한 요청이며, 메모리 페이지는 메모리에 있지 않은, 단계; 메모리 페이지가 페치 그룹의 일부임을 결정하는 단계; 및 페치 그룹 내의 메모리 내에 있지 않은 메모리 페이지의 로딩을 개시하는 단계를 포함한다.
제 98 예에서, 제 97 예의 주제는, 로딩을 개시하는 단계는 메모리 내에 있지 않은 페치 그룹 내의 메모리 페이지의 비동기 로딩을 수행하는 단계를 포함하는 것을 포함한다.
제 99 예에서, 제 97 예 또는 제 98 예의 주제는, 메모리 페이지가 페치 그룹의 일부임을 결정하는 단계는 페치 그룹 데이터 구조에서 메모리 페이지를 찾는 단계를 포함하는 것을 포함한다.
제 100 예에서, 제 99 예의 주제는, 데이터 구조는 테이블인 것을 포함한다.
제 101 예에서, 제 100 예의 주제는, 테이블은 하나 이상의 페치 그룹을 보유하는 것을 포함한다.
제 102 예에서, 제 99 예 내지 제 101 예의 주제는, 페치 그룹 내의 페이지의 식별을 수신하는 단계; 및 식별을 데이터 구조에 저장하는 단계를 포함한다.
제 103 예는 확률적 필터 쿼리 레이턴시를 감소시키기 위한 명령어를 포함하는 머신 판독 가능 매체로서, 명령어는, 처리 회로에 의해 실행될 때, 처리 회로가, 페이지 결함의 통지를 수신하는 동작으로서, 페이지 결함은 메모리 매핑 파일에 대응하는 메모리 페이지에 대한 요청이며, 메모리 페이지는 메모리 내에 있지 않은, 동작; 메모리 페이지는 페치 그룹의 일부임을 결정하는 동작; 및 메모리 내에 있지 않은 페치 그룹 내의 메모리 페이지의 로딩을 개시하는 동작을 포함하는 동작을 수행하게 한다.
제 104 예에서, 제 103 예의 주제는, 로딩을 개시하는 동작은 메모리 내에 있지 않은 페치 그룹 내의 메모리 페이지의 비동기 로딩을 수행하는 동작을 포함하는 것을 포함한다.
제 105 예에서, 제 103 예 또는 제 104 예의 주제는, 메모리 페이지가 페치 그룹의 일부임을 결정하는 동작은 페치 그룹 데이터 구조에서 메모리 페이지를 찾는 동작을 포함하는 것을 포함한다.
제 106 예에서, 제 105 예의 주제는, 데이터 구조는 테이블인 것을 포함한다.
제 107 예에서, 제 106 예의 주제는, 테이블은 하나 이상의 페치 그룹을 보유하는 것을 포함한다.
제 108 예에서, 제 105 예 내지 제 107 예의 주제는, 동작은: 페치 그룹 내의 페이지의 식별을 수신하는 동작; 및 식별 정보를 데이터 구조에 저장하는 동작을 포함하는 것을 포함한다.
제 109 예는 확률적 필터 쿼리 레이턴시를 감소시키는 시스템으로서, 시스템은: 페이지 결함의 통지를 수신하는 수단으로서, 페이지 결함은 메모리 매핑 파일에 대응하는 메모리 페이지에 대한 요청이며, 메모리 페이지는 메모리에 있지 않은, 수단; 메모리 페이지가 페치 그룹의 일부임을 결정하는 수단; 및 페치 그룹 내의 메모리 내에 있지 않은 메모리 페이지의 로딩을 개시하는 수단을 포함한다.
제 110 예에서, 제 109 예의 주제는, 로딩을 개시하는 수단은 메모리 내에 있지 않은 페치 그룹 내의 메모리 페이지의 비동기 로딩을 수행하는 수단을 포함하는 것을 포함한다.
제 111 예에서, 제 109 예 또는 제 110 예의 주제는, 메모리 페이지가 페치 그룹의 일부임을 결정하는 수단은 페치 그룹 데이터 구조에서 메모리 페이지를 찾는 수단을 포함하는 것을 포함한다.
제 112 예에서, 제 111 예의 주제는, 데이터 구조는 테이블인 것을 포함한다.
제 113 예에서, 제 112 예의 주제는, 테이블은 하나 이상의 페치 그룹을 보유하는 것을 포함한다.
제 114 예에서, 제 111 예 내지 제 113 예의 주제는, 페치 그룹 내의 페이지의 식별을 수신하는 수단; 및 식별을 데이터 구조에 저장하는 수단을 포함한다.
제 115 예는 처리 회로에 의해 실행될 때 처리 회로가 제 1 예내지 제 114 예 중 어느 예의 구현 동작을 수행하게 하는 명령어를 포함하는 적어도 하나의 머신 판독 가능 매체이다.
제 116 예는 제 1 예 내지 제 114 예 중 어느 예를 구현하는 수단을 포함하는 장치이다.
제 117 예는 제 1 예 내지 제 114 예 중 어느 예를 구현하는 시스템이다.
제 118 예는 제 1 예 내지 제 114 예 중 어느 예를 구현하는 방법이다.
상기 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면에 대한 참조를 포함한다. 도면은 실시될 수 있는 특정 실시형태를 예시적으로 도시한다. 이들 실시형태는 본원에서 "예"로도 지칭된다. 이러한 예는 도시되거나 설명된 것 이외의 요소들을 포함할 수 있다. 그러나, 본 발명자들은 도시되거나 설명된 요소만이 제공되는 예를 또한 고려한다. 더욱이, 본 발명자는 특정 예(또는 하나 이상의 양태) 또는 본원에서 도시되거나 기술된 다른 예(또는 하나 이상의 양태)와 관련하여 도시되거나 설명된 요소(또는 하나 이상의 양태)의 임의의 조합 또는 순열을 사용하는 예를 또한 고려한다.
본원에서 언급되는 모든 간행물, 특허 및 특허 문서는 개별적으로 참고로 포함된 것처럼 그들의 내용 전체가 본원에서 참고로 포함된다. 이 문서와 참고로 포함된 문서 사이에 일관성이 없는 사용이 있는 경우, 포함된 참고(들)의 사용은 이 문서의 사용을 보완하는 것으로 간주되어야 하며; 양립할 수 없는 불일치의 경우, 이 문서의 사용은 제한된다.
본 문서에서, 용어 "a" 또는 "an"는 특허 문서에서 일반적으로 사용되는 "적어도 하나" 또는 "하나 이상"의 임의의 다른 경우 또는 사용과 무관하게 하나 이상을 포함하는 것으로 사용된다. 본 문서에서, 용어 "or"은 달리 지시되지 않는 한, 비배타적인 것으로 지칭하거나 "A 또는 B"가 "A이지만 B가 아닌", "B이지만 A가 아닌" 및 "A 및 B"를 포함하는 것으로 사용된다. 첨부된 청구항에서, "포함하는(including)" 및 "여기서(in which)"이란 용어는 "포함하는(comprising)" 및 "여기서(wherin)"란 개개의 용어와 동등한 의미로 사용된다. 또한, 이하의 청구항에서, "포함하는(including)" 및 "포함하는(comprising")이란 용어는 개방형이며, 즉 청구항에서 이러한 용어 뒤에 열거된 것 이외의 요소를 포함하는 시스템, 디바이스, 물품 또는 프로세스도 그 청구항에 속하는 것으로 여전히 간주된다. 또한, 이하의 청구항에서, "제 1", "제 2" 및 "제 3" 등의 용어는 단지 표식으로서 사용되며, 그들의 목적에 수치적 요건을 부과하도록 의도되지 않는다.
상기 설명은 예시적인 것이며 제한적인 것은 아니다. 예를 들면, 상술된 예(또는 이의 하나 이상의 양태)는 서로 조합하여 사용될 수 있다. 상기 설명을 검토하면 당업자에 의해 다른 실시형태가 사용될 수 있다. 요약은 독자가 기술 개시의 본질을 신속하게 확인할 수 있게 하고, 청구항의 범위 또는 의미를 해석하거나 제한하는데 사용되지 않을 것이라는 이해와 함께 제출된다. 또한, 상기 상세한 설명에서, 다양한 특징이 함께 그룹화되어 본 발명을 간소화할 수 있다. 이는 청구되지 않은 공개 특징이 모든 청구항에 필수적임을 의도하는 것으로 해석되어서는 안된다. 오히려, 본 발명의 주제는 특정의 개시된 실시형태의 모든 특징보다 적을 수 있다. 따라서, 이하의 청구항은 상세한 설명에 포함되며, 각 청구항은 그 자체가 별도의 실시형태로서 존재한다. 실시형태의 범위는 이러한 청구항이 권리가 부여되는 등가물의 전체 범위와 함께 첨부된 청구항을 참고하여 결정되어야 한다.
Claims (40)
- 확률적 필터 쿼리 레이턴시(probabilistic filter query latency)를 감소시키기 위한 시스템으로서, 상기 시스템이,
제 1 매체에 저장된 확률적 필터에 대한 쿼리를 호출자로부터 수신하고;
상기 쿼리를 수신하는 것에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트를 획득하고―상기 캐시된 세그먼트는 상기 제 1 매체에 저장된 모든 확률적 필터보다 적고, 상기 확률적 필터는 지정된 세그먼트가 상기 확률적 필터 내에 있지 않다고 결론적으로 결정하는 데 사용됨―;
상기 캐시된 세그먼트에 대해 상기 쿼리를 실행하여 부분 쿼리 결과를 생성하고;
상기 부분 쿼리 결과를 상기 호출자에게 리턴하고;
상기 호출자의 개입없이, 상기 제 1 매체로부터 상기 제 2 매체로 상기 확률적 필터의 캐시되지 않은 세그먼트의 검색을 개시하는, 처리 회로를 포함하는, 시스템. - 제 1 항에 있어서,
상기 쿼리를 수신하기 위해, 상기 처리 회로는 세그먼트 식별자를 수신하고, 상기 세그먼트 식별자는 상기 확률적 필터의 모든 세그먼트 중 어느 세그먼트가 상기 쿼리와 관련되는지를 지정하는, 시스템. - 제 2 항에 있어서,
상기 세그먼트 식별자는 파일의 바이트 오프셋(byte offset)인, 시스템. - 제 3 항에 있어서,
상기 파일은 키-값 세트 파일(key-value set file)인, 시스템. - 제 4 항에 있어서,
상기 처리 회로가 추가로,
상기 키-값 세트 파일의 페이지에 대한 페치 그룹 데이터 구조를 유지하고; 그리고,
상기 페치 그룹 데이터 구조 내의 한 페이지의 페이지 결함(page fault)에 응답하여 상기 키-값 세트 파일에 대한 상기 페치 그룹의 페이지를 검색하는, 시스템. - 제 1 항에 있어서,
상기 쿼리는 테스트 파라미터의 세트를 포함하고, 상기 부분 쿼리 결과는 상기 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함하는, 시스템. - 제 6 항에 있어서,
상기 부분 쿼리 결과는 상기 쿼리에 관련되어 있으면서 상기 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함하는, 시스템. - 제 1 항에 있어서,
상기 확률적 필터의 나머지 데이터의 검색을 개시하기 위해, 상기 처리 회로는 상기 부분 쿼리 결과에서 상기 확률적 필터의 정지 조건을 식별하고 상기 나머지 데이터의 검색을 포기하는, 시스템. - 제 1 항에 있어서,
상기 확률적 필터는 블룸(Bloom) 필터, 카운팅 블룸(Counting Bloom) 필터 또는 쿠쿠(Cuckoo) 필터 중의 적어도 하나인, 시스템. - 확률적 필터 쿼리 레이턴시를 감소시키기 위한 방법으로서, 상기 방법이,
제 1 매체에 저장된 확률적 필터에 대한 쿼리를 호출자로부터 수신하는 단계;
상기 쿼리를 수신하는 단계에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트를 획득하는 단계로서, 상기 캐시된 세그먼트는 상기 제 1 매체에 저장된 모든 확률적 필터보다 적고, 상기 확률적 필터는 지정된 세그먼트가 상기 확률적 필터 내에 있지 않다고 결론적으로 결정하는 데 사용되는, 단계;
캐시된 세그먼트에 대해 상기 쿼리를 실행하여 부분 쿼리 결과를 생성하는 단계;
상기 부분 쿼리 결과를 상기 호출자에게 리턴하는 단계; 및
상기 호출자의 개입없이, 상기 제 1 매체로부터 상기 제 2 매체로 상기 확률적 필터의 캐시되지 않은 세그먼트의 검색을 개시하는 단계
를 포함하는, 방법. - 제 10 항에 있어서,
상기 쿼리를 수신하는 단계는 세그먼트 식별자를 수신하는 단계를 포함하고, 상기 확률적 필터의 모든 세그먼트 중의 어느 세그먼트를 지정하는 상기 세그먼트 식별자는 상기 쿼리와 관련되어 있는, 방법. - 제 11 항에 있어서,
상기 세그먼트 식별자는 파일의 바이트 오프셋인, 방법. - 제 12 항에 있어서,
상기 파일은 키-값 세트 파일인, 방법. - 제 13 항에 있어서,
상기 키-값 세트 파일의 페이지에 대한 페치 그룹 데이터 구조를 유지하는 단계; 및
상기 페치 그룹 데이터 구조 내의 한 페이지의 페이지 결함에 응답하여 상기 키-값 세트 파일에 대한 페치 그룹의 페이지를 검색하는 단계
를 포함하는, 방법. - 제 10 항에 있어서,
상기 쿼리는 테스트 파라미터의 세트를 포함하고, 상기 부분 쿼리 결과는 상기 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함하는, 방법. - 제 15 항에 있어서,
상기 부분 쿼리 결과는 상기 쿼리에 관련되어 있으면서 상기 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함하는, 방법. - 제 10 항에 있어서,
상기 확률적 필터의 나머지 데이터의 검색을 개시하는 단계는 상기 부분 쿼리 결과에서 상기 확률적 필터의 정지 조건을 식별하고 상기 나머지 데이터의 검색을 포기하는 단계를 포함하는, 방법. - 제 10 항에 있어서,
상기 확률적 필터는 블룸 필터, 카운팅 블룸 필터 또는 쿠쿠 필터 중의 적어도 하나인, 방법. - 확률적 필터 쿼리 레이턴시를 감소시키기 위한 명령어를 포함하는 머신 판독 가능 매체로서, 상기 명령어가 처리 회로에 의해 실행될 때, 상기 처리 회로가:
제 1 매체에 저장된 확률적 필터에 대한 쿼리를 호출자로부터 수신하는 동작;
상기 쿼리를 수신하는 동작에 응답하여, 제 2 매체에 저장된 확률적 필터의 캐시된 세그먼트를 획득하는 동작으로서, 상기 캐시된 세그먼트는 상기 제 1 매체에 저장된 모든 확률적 필터보다 적고, 상기 확률적 필터는 지정된 세그먼트가 상기 확률적 필터 내에 있지 않다고 결론적으로 결정하는 데 사용되는, 동작;
캐시된 세그먼트에 대해 상기 쿼리를 실행하여 부분 쿼리 결과를 생성하는 동작;
상기 부분 쿼리 결과를 상기 호출자에게 리턴하는 동작; 및
상기 호출자의 개입없이, 상기 제 1 매체로부터 상기 제 2 매체로 상기 확률적 필터의 캐시되지 않은 세그먼트의 검색을 개시하는 동작
을 포함하는 동작을 수행하게 하는, 머신 판독 가능 매체. - 제 19 항에 있어서,
상기 쿼리를 수신하는 동작은 세그먼트 식별자를 수신하는 동작을 포함하고, 확률적 필터의 모든 세그먼트 중의 어느 세그먼트를 지정하는 상기 세그먼트 식별자는 상기 쿼리와 관련되어 있는, 머신 판독 가능 매체. - 제 20 항에 있어서,
상기 세그먼트 식별자는 파일의 바이트 오프셋인, 머신 판독 가능 매체. - 제 21 항에 있어서,
상기 쿼리는 파일에 대한 파일 식별자를 포함하는, 머신 판독 가능 매체. - 제 21 항에 있어서,
상기 파일은 키-값 세트 파일인, 머신 판독 가능 매체. - 제 23 항에 있어서,
상기 동작은:
상기 키-값 세트 파일의 페이지에 대한 페치 그룹 데이터 구조를 유지하는 동작; 및
상기 페치 그룹 데이터 구조 내의 한 페이지의 페이지 결함에 응답하여 상기 키-값 세트 파일에 대한 페치 그룹의 페이지를 검색하는 동작
을 포함하는, 머신 판독 가능 매체. - 제 23 항에 있어서,
상기 키-값 세트 파일은 하나 이상의 KVS 트리를 포함하는, 머신 판독 가능 매체. - 제 25 항에 있어서,
상기 확률적 필터는 상기 키-값 세트 파일의 단일 KVS 트리에 적용되는, 머신 판독 가능 매체. - 제 20 항에 있어서,
상기 캐시된 세그먼트를 획득하는 동작은 상기 세그먼트 식별자에 대응하는 상기 제 2 매체에서의 상기 확률적 필터의 세그먼트를 획득하는 동작을 포함하는, 머신 판독 가능 매체. - 제 19 항에 있어서,
상기 확률적 필터의 세그먼트는 상기 제 2 매체에서의 상기 확률적 필터의 표현에 기초하는, 머신 판독 가능 매체. - 제 28 항에 있어서,
상기 세그먼트는 균일한 사이즈를 갖는, 머신 판독 가능 매체. - 제 29 항에 있어서,
상기 균일한 사이즈는 메모리 페이지 사이즈인, 머신 판독 가능 매체. - 제 20 항에 있어서,
상기 세그먼트 식별자는 페이지 식별자인, 머신 판독 가능 매체. - 제 20 항에 있어서,
상기 세그먼트 식별자는 메모리 어드레스인, 머신 판독 가능 매체. - 제 19 항에 있어서,
상기 쿼리는 테스트 파라미터의 세트를 포함하고, 상기 부분 쿼리 결과는 상기 캐시된 세그먼트에 대해 수행된 테스트 파라미터의 서브세트에 대한 결과를 포함하는, 머신 판독 가능 매체. - 제 33 항에 있어서,
상기 테스트 파라미터는 위치를 포함하는, 머신 판독 가능 매체. - 제 34 항에 있어서,
상기 위치는 세그먼트 내의 비트 오프셋인, 머신 판독 가능 매체. - 제 35 항에 있어서,
상기 테스트 파라미터의 서브세트는 각각의 위치에서 비트 값을 포함하는, 머신 판독 가능 매체. - 제 33 항에 있어서,
상기 부분 쿼리 결과는 상기 쿼리에 관련되어 있으면서 상기 캐시된 세그먼트 내에 있지 않은 세그먼트 식별자의 리스트를 포함하는, 머신 판독 가능 매체. - 제 37 항에 있어서,
상기 동작은,
상기 호출자에 의해 상기 부분 쿼리 결과를 수신하는 동작;
상기 확률적 필터에 의해 정의된 정지 조건에 대해 상기 부분 쿼리 결과 내의 테스트 파라미터의 서브세트를 서치하는 동작; 및
상기 정지 조건이 상기 테스트 파라미터의 서브세트에서 발견되지 않을 때 상기 세그먼트 식별자의 세그먼트 내에서 상기 정지 조건을 서치하는 동작으로서, 상기 세그먼트는 상기 확률적 필터의 나머지 데이터의 검색을 개시한 결과로서 상기 제 2 매체에 상주하는, 동작
을 포함하는, 머신 판독 가능 매체. - 제 19 항에 있어서,
상기 확률적 필터의 나머지 데이터의 검색을 개시하는 동작은 상기 부분 쿼리 결과에서 상기 확률적 필터의 정지 조건을 식별하고 상기 나머지 데이터의 검색을 포기하는 동작을 포함하는, 머신 판독 가능 매체. - 제 19 항에 있어서,
상기 확률적 필터는 블룸 필터, 카운팅 블룸 필터 또는 쿠쿠 필터 중 적어도 하나인, 머신 판독 가능 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020227010712A KR102461152B1 (ko) | 2017-08-31 | 2018-08-07 | 확률적 필터 쿼리 레이턴시의 감소 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/691,998 | 2017-08-31 | ||
US15/691,998 US10579633B2 (en) | 2017-08-31 | 2017-08-31 | Reducing probabilistic filter query latency |
PCT/US2018/045602 WO2019045961A1 (en) | 2017-08-31 | 2018-08-07 | PROBABILISTIC FILTRATION QUERY LATENCY REDUCTION |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227010712A Division KR102461152B1 (ko) | 2017-08-31 | 2018-08-07 | 확률적 필터 쿼리 레이턴시의 감소 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200036049A KR20200036049A (ko) | 2020-04-06 |
KR102382607B1 true KR102382607B1 (ko) | 2022-04-08 |
Family
ID=65435246
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227010712A KR102461152B1 (ko) | 2017-08-31 | 2018-08-07 | 확률적 필터 쿼리 레이턴시의 감소 |
KR1020207008805A KR102382607B1 (ko) | 2017-08-31 | 2018-08-07 | 확률적 필터 쿼리 레이턴시의 감소 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227010712A KR102461152B1 (ko) | 2017-08-31 | 2018-08-07 | 확률적 필터 쿼리 레이턴시의 감소 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10579633B2 (ko) |
KR (2) | KR102461152B1 (ko) |
CN (2) | CN114064756A (ko) |
TW (3) | TWI663511B (ko) |
WO (1) | WO2019045961A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409753B2 (en) | 2017-08-31 | 2022-08-09 | Micron Technology, Inc. | Reducing probabilistic filter query latency |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10719495B2 (en) | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US11762828B2 (en) * | 2018-02-27 | 2023-09-19 | Advanced Micro Devices, Inc. | Cuckoo filters and cuckoo hash tables with biasing, compression, and decoupled logical sparsity |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US10915546B2 (en) * | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US10852978B2 (en) | 2018-12-14 | 2020-12-01 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
CN110765138B (zh) * | 2019-10-31 | 2023-01-20 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
US11599463B2 (en) * | 2020-03-25 | 2023-03-07 | Ocient Holdings LLC | Servicing queries during data ingress |
CN111538865B (zh) * | 2020-03-27 | 2023-06-02 | 中国人民解放军国防科技大学 | 多方集合同步方法、装置和电子设备 |
US11210288B2 (en) * | 2020-05-12 | 2021-12-28 | Coupang Corp. | Systems and methods for reducing database query latency |
AU2021203075A1 (en) * | 2020-05-13 | 2021-12-02 | Magnet Forensics Inc. | System and method for identifying files based on hash values |
US11636041B2 (en) * | 2020-10-12 | 2023-04-25 | Seagate Technology Llc | Object storage data storage systems and methods |
US11416499B1 (en) * | 2021-10-12 | 2022-08-16 | National University Of Defense Technology | Vertical cuckoo filters |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9718026D0 (en) * | 1997-08-27 | 1997-10-29 | Secr Defence | Multi-component signal detection system |
US6330292B1 (en) * | 1997-11-11 | 2001-12-11 | Telefonaktiebolaget Lm Ericsson | Reduced power matched filter |
US7065619B1 (en) * | 2002-12-20 | 2006-06-20 | Data Domain, Inc. | Efficient data storage system |
US6928526B1 (en) | 2002-12-20 | 2005-08-09 | Datadomain, Inc. | Efficient data storage system |
CN1282332C (zh) * | 2003-11-13 | 2006-10-25 | 中兴通讯股份有限公司 | 一种快速数据包过滤方法 |
TWI278752B (en) * | 2004-04-21 | 2007-04-11 | Netcell Corp | Disk array controller and fast method of executing stripped-data operations in disk array controller |
US7716180B2 (en) * | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
US20080222087A1 (en) * | 2006-05-15 | 2008-09-11 | International Business Machines Corporation | System and Method for Optimizing Query Access to a Database Comprising Hierarchically-Organized Data |
US8429352B2 (en) * | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
US20100106537A1 (en) * | 2008-10-23 | 2010-04-29 | Kei Yuasa | Detecting Potentially Unauthorized Objects Within An Enterprise |
US8290972B1 (en) * | 2009-04-29 | 2012-10-16 | Netapp, Inc. | System and method for storing and accessing data using a plurality of probabilistic data structures |
US8788766B2 (en) * | 2010-02-18 | 2014-07-22 | Oracle America, Inc. | Software-accessible hardware support for determining set membership |
US9355109B2 (en) | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
EP2425886B1 (en) * | 2010-09-06 | 2016-06-29 | Sartorius Stedim Biotech GmbH | Filter device test apparatus, filter integrity testing method and computer program product |
EP2614439A4 (en) | 2010-09-09 | 2014-04-02 | Nec Corp | STORAGE SYSTEM |
US20120324143A1 (en) * | 2011-06-15 | 2012-12-20 | Data Design Corporation | Methods and apparatus for data access by a reprogrammable circuit module |
US8676951B2 (en) * | 2011-07-27 | 2014-03-18 | Hitachi, Ltd. | Traffic reduction method for distributed key-value store |
US8990243B2 (en) * | 2011-11-23 | 2015-03-24 | Red Hat, Inc. | Determining data location in a distributed data store |
US9015269B2 (en) | 2012-06-19 | 2015-04-21 | Canon Kabushiki Kaisha | Methods and systems for notifying a server with cache information and for serving resources based on it |
US9819637B2 (en) | 2013-02-27 | 2017-11-14 | Marvell World Trade Ltd. | Efficient longest prefix matching techniques for network devices |
US9032152B2 (en) * | 2013-03-22 | 2015-05-12 | Applied Micro Circuits Corporation | Cache miss detection filter |
CN104173121B (zh) * | 2013-05-27 | 2016-05-25 | 上海微创心通医疗科技有限公司 | 用于输送植入体的电动手柄及输送系统 |
US10474961B2 (en) * | 2013-06-20 | 2019-11-12 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system based on prompting for additional user input |
US9594542B2 (en) * | 2013-06-20 | 2017-03-14 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system based on training by third-party developers |
US9633317B2 (en) * | 2013-06-20 | 2017-04-25 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system based on a natural language intent interpreter |
US10366070B2 (en) * | 2015-02-20 | 2019-07-30 | Scality S.A. | Locking and I/O improvements of systems built with distributed consistent database implementations within an object store |
CA2876466C (en) * | 2014-12-29 | 2022-07-05 | Ibm Canada Limited - Ibm Canada Limitee | Scan optimization using bloom filter synopsis |
US10042875B2 (en) * | 2016-09-26 | 2018-08-07 | International Business Machines Corporation | Bloom filter index for device discovery |
US10579633B2 (en) | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Reducing probabilistic filter query latency |
-
2017
- 2017-08-31 US US15/691,998 patent/US10579633B2/en active Active
-
2018
- 2018-08-07 CN CN202111355976.7A patent/CN114064756A/zh active Pending
- 2018-08-07 KR KR1020227010712A patent/KR102461152B1/ko active IP Right Grant
- 2018-08-07 WO PCT/US2018/045602 patent/WO2019045961A1/en active Application Filing
- 2018-08-07 KR KR1020207008805A patent/KR102382607B1/ko active IP Right Grant
- 2018-08-07 CN CN201880063595.1A patent/CN111226208B/zh active Active
- 2018-08-15 TW TW107128397A patent/TWI663511B/zh active
- 2018-08-15 TW TW108117591A patent/TWI720491B/zh active
- 2018-08-15 TW TW110106029A patent/TWI790550B/zh active
-
2020
- 2020-01-22 US US16/749,523 patent/US11409753B2/en active Active
-
2022
- 2022-08-08 US US17/882,862 patent/US20220374148A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409753B2 (en) | 2017-08-31 | 2022-08-09 | Micron Technology, Inc. | Reducing probabilistic filter query latency |
Also Published As
Publication number | Publication date |
---|---|
TW201935242A (zh) | 2019-09-01 |
US20220374148A1 (en) | 2022-11-24 |
TWI720491B (zh) | 2021-03-01 |
US20200159727A1 (en) | 2020-05-21 |
KR20220045077A (ko) | 2022-04-12 |
TWI663511B (zh) | 2019-06-21 |
US20190065557A1 (en) | 2019-02-28 |
CN111226208B (zh) | 2021-12-03 |
US10579633B2 (en) | 2020-03-03 |
CN114064756A (zh) | 2022-02-18 |
TW202131188A (zh) | 2021-08-16 |
US11409753B2 (en) | 2022-08-09 |
KR20200036049A (ko) | 2020-04-06 |
TWI790550B (zh) | 2023-01-21 |
TW201921246A (zh) | 2019-06-01 |
KR102461152B1 (ko) | 2022-10-31 |
CN111226208A (zh) | 2020-06-02 |
WO2019045961A1 (en) | 2019-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102382607B1 (ko) | 확률적 필터 쿼리 레이턴시의 감소 | |
US10534547B2 (en) | Consistent transition from asynchronous to synchronous replication in hash-based storage systems | |
KR20190111124A (ko) | Kvs 트리 | |
KR20190117001A (ko) | 유지관리 동작들을 위한 병합 트리 수정들 | |
US10852964B2 (en) | Host-resident translation layer validity check techniques | |
JP2015512604A (ja) | 暗号ハッシュ・データベース | |
US20240345954A1 (en) | Remapping techniques for nand storage | |
US11734170B2 (en) | Host-resident translation layer validity check | |
US11016676B2 (en) | Spot coalescing of distributed data concurrent with storage I/O operations | |
US11721388B2 (en) | Large file integrity techniques | |
KR20210028264A (ko) | 호스트 상주 변환 레이어 유효성 검사 | |
US20160342342A1 (en) | Information processing device, information processing system, and data access method | |
WO2021046725A1 (en) | Memory mapping device and method | |
KR20220031107A (ko) | 레인징 콘텐츠 어드레스 지정 가능 메모리 | |
US10572452B1 (en) | Context-based read-ahead for B+ tree data structures in a deduplication system | |
US11340999B2 (en) | Fast restoration method from inode based backup to path based structure | |
US10891223B2 (en) | Storage class memory status | |
US20220027187A1 (en) | Supporting clones with consolidated snapshots |
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 |