KR20210089589A - Method for processing bloom filter using circular shift, and apparatuses for performing the same - Google Patents

Method for processing bloom filter using circular shift, and apparatuses for performing the same Download PDF

Info

Publication number
KR20210089589A
KR20210089589A KR1020210001599A KR20210001599A KR20210089589A KR 20210089589 A KR20210089589 A KR 20210089589A KR 1020210001599 A KR1020210001599 A KR 1020210001599A KR 20210001599 A KR20210001599 A KR 20210001599A KR 20210089589 A KR20210089589 A KR 20210089589A
Authority
KR
South Korea
Prior art keywords
bit
bloom filter
specific bit
hash value
cyclic
Prior art date
Application number
KR1020210001599A
Other languages
Korean (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 KR20210089589A publication Critical patent/KR20210089589A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register

Abstract

Disclosed are a method for processing a bloom filter using a cyclic shift and devices for performing the same. The method for processing the bloom filter according to one embodiment may comprise: an operation of generating a hash value for an element using one hash function; an operation of selecting and outputting a first specific bit from the hash value by performing a cyclic shift on the hash value; and an operation of performing an operation of adding or querying for the element to a bit array of a bloom filter based on the first specific bit. Therefore, the present invention is capable of providing a technology for improving the operation speed.

Description

순환 시프트를 이용하여 블룸 필터를 처리하는 방법 및 이를 수행하는 장치들{METHOD FOR PROCESSING BLOOM FILTER USING CIRCULAR SHIFT, AND APPARATUSES FOR PERFORMING THE SAME}A method of processing a bloom filter using a cyclic shift and apparatuses for performing the same {METHOD FOR PROCESSING BLOOM FILTER USING CIRCULAR SHIFT, AND APPARATUSES FOR PERFORMING THE SAME}

아래 개시는 순환 시프트를 이용하여 블룸 필터를 처리하는 방법 및 이를 수행하는 장치들에 관한 것이다.The disclosure below relates to a method of processing a bloom filter using a cyclic shift and apparatuses for performing the same.

블룸 필터(bloom filter)는 1970년 B. Bloom에 의해 고안되었으며, 원소가 집합에 속하는지 여부를 검사할 수 있는 확률적 자료 구조이다. 외부에서 어떤 데이터가 집합에 포함되는지 여부를 검사(query)할 경우에, 검사하려는 데이터의 k개의 서로 다른 해시 함수에 의한 해시 값들이 가지는 인덱스(index)가 얻어지는데, 블룸 필터 비트열 중에서 그러한 인덱스들에 해당하는 위치의 비트들이 모두 1이면 검사하려는 데이터가 집합에 속한다고 양성으로(positive) 판정하고, 그러한 비트들 중에 하나라도 0이면 집합에 속하지 않는다고 음성으로(negative) 판정한다.The bloom filter, devised by B. Bloom in 1970, is a probabilistic data structure that can check whether an element belongs to a set. In case of externally checking whether some data is included in the set, the index of the hash values by k different hash functions of the data to be checked is obtained. If all bits in the corresponding positions are 1, it is positively determined that the data to be tested belongs to the set, and if any of those bits is 0, it is negatively determined that it does not belong to the set.

어떤 집합을 그보다 더 적은 크기의 다른 집합에 매핑하는 해시 함수의 필연적인 불완전성에 따라, 집합에 속하지 않는 어떤 데이터의 해시 값들이 집합에 속하는 원소의 해시 값들과 동일하게 도출될 수 있다. 블룸 필터는 전적으로 해시 값에 의존하므로, 만약 해시 값이 동일하다면 집합에 속하지 않는 데이터와 집합에 속하는 원소는 해시 함수로는 구별할 수 없고, 집합에 속하지 않는 데이터에 대해 집합에 속한다고 판정될 수 있다.Depending on the inevitable imperfection of a hash function that maps a set to another set of a smaller size, hash values of some data that do not belong to a set can be derived identically to the hash values of elements belonging to the set. Since the bloom filter entirely depends on the hash value, if the hash value is the same, data not belonging to the set and the elements belonging to the set cannot be distinguished by the hash function, and data not belonging to the set can be determined to belong to the set. have.

블룸 필터에 의해 어떤 원소가 집합에 속한다고 양성 판정되었지만 실제로는 원소가 집합에 속하지 않는 거짓 양성의 가능성이 문제가 되지만, 블룸 필터에 의해 어떤 원소가 집합에 속하지 않는다고 음성 판정될 경우에 실제로 원소가 집합에 속할 수도 있는 거짓 음성의 가능성은 전혀 없다.Although the bloom filter determines that an element belongs to a set positively, the possibility of false positives that the element does not actually belong to the set is a problem. There is absolutely no possibility of false negatives that might belong to the set.

블룸 필터는 설계에 따라 작은 메모리 공간을 소요하고 판정 속도가 빠르며, 거짓 음성이 불가능하여, 예를 들어 대규모 데이터베이스를 구성하는 여러 개의 소규모 데이터베이스들 중에서 적어도 특정 원소가 속하지 않는, 그래서 검색할 필요가 없는 소규모 데이터베이스들을 정확하고 빠르게 가려낼 수 있다.Depending on the design, the bloom filter consumes a small memory space, has a fast determination speed, and is not capable of false negatives. It can accurately and quickly screen small databases.

블룸 필터는 다양한 데이터베이스 어플리케이션들과 대규모 스토리지 어플리케이션에 널리 사용되고 있으며, 라우팅 테이블(routing table) 검색, 온라인 트래픽 제어, 침입 탐지 시스템 등과 같아 다양한 네트워크 분야에서 점점 더 자주 응용되고 있다.Bloom filters are widely used in various database applications and large-scale storage applications, and are increasingly frequently applied in various network fields such as routing table search, online traffic control, and intrusion detection systems.

위에서 설명한 배경기술은 발명자가 본원의 개시 내용을 도출하는 과정에서 보유하거나 습득한 것으로서, 반드시 본 출원 전에 일반 공중에 공개된 공지기술이라고 할 수는 없다.The background art described above is possessed or acquired by the inventor in the process of deriving the disclosure of the present application, and it cannot necessarily be said to be a known technology disclosed to the general public before the present application.

실시예들은 종래의 블룸 필터와 유사한 긍정오류(false positive)를 가지며 종래의 블룸 필터보다 적은 연산을 사용하여 연산 속도를 개선하는 기술을 제공할 수 있다.Embodiments may provide a technique for improving computation speed by using fewer computations than conventional Bloom filters with similar false positives to conventional Bloom filters.

다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.However, the technical problems are not limited to the above-described technical problems, and other technical problems may exist.

일 실시예에 따른 블룸 필터를 처리하는 방법은 하나의 해시 함수를 이용하여 원소에 대해 해시 값을 생성하는 동작; 상기 해시 값에 순환 시프트를 수행하여 상기 해시 값으로부터 제1 특정 비트를 선택하여 출력하는 동작; 및 상기 제1 특정 비트에 기초하여 블룸 필터의 비트 배열에 상기 원소에 대한 추가 또는 쿼리하는 동작을 수행하는 동작을 포함할 수 있다.A method of processing a bloom filter according to an embodiment includes generating a hash value for an element using a single hash function; performing a cyclic shift on the hash value to select and output a first specific bit from the hash value; and performing an operation of adding or querying the element to a bit array of a bloom filter based on the first specific bit.

상기 출력하는 동작은 상기 제1 특정 비트를 상기 블룸 필터의 비트 배열의 인덱스로 출력하는 동작을 포함할 수 있다.The outputting operation may include outputting the first specific bit as an index of a bit array of the bloom filter.

상기 순환 시프트는 순환 비트 시프트일 수 있다.The cyclic shift may be a cyclic bit shift.

상기 출력하는 동작은 순환 비트 시프트를 수행할 때마다 상기 해시 값에서 제2 특정 비트만큼 오른쪽으로 시프트한 후 상기 제1 특정 비트를 선택하여 출력하는 동작을 포함할 수 있다.The outputting operation may include an operation of selecting and outputting the first specific bit after right shifting by a second specific bit in the hash value whenever a cyclic bit shift is performed.

상기 제1 특정 비트는 연속되는 비트일 수 있다.The first specific bit may be a continuous bit.

상기 제1 특정 비트의 크기는 상기 블룸 필터의 크기에 기초하여 결정될 수 있다.The size of the first specific bit may be determined based on the size of the bloom filter.

상기 순환 시프트는 어셈블리 명령어로 구현될 수 있다.The cyclic shift may be implemented in assembly instructions.

일 실시예에 따른 블룸 필터를 처리하는 장치는 하나 이상의 인스트럭션을 저장하는 메모리; 및 상기 인스트럭션을 실행시키기 위한 프로세서를 포함하고, 상기 인스트럭션이 실행될 때, 상기 프로세서는, 하나의 해시 함수를 이용하여 원소에 대해 해시 값을 생성하고, 상기 해시 값에 순환 시프트를 수행하여 상기 해시 값으로부터 제1 특정 비트를 선택하여 출력하고, 상기 제1 특정 비트에 기초하여 블룸 필터의 비트 배열에 상기 원소에 대한 추가 또는 쿼리하는 동작을 수행할 수 있다.An apparatus for processing a bloom filter according to an embodiment includes a memory for storing one or more instructions; and a processor for executing the instruction, wherein when the instruction is executed, the processor generates a hash value for an element using a single hash function, and performs a cyclic shift on the hash value to obtain the hash value An operation of adding or querying the element to the bit array of the bloom filter may be performed by selecting and outputting a first specific bit from the first specific bit.

상기 프로세서는 상기 제1 특정 비트를 상기 블룸 필터의 비트 배열의 인덱스로 출력할 수 있다.The processor may output the first specific bit as an index of the bit array of the bloom filter.

상기 순환 시프트는 순환 비트 시프트일 수 있다.The cyclic shift may be a cyclic bit shift.

상기 프로세서는 순환 비트 시프트를 수행할 때마다 상기 해시 값에서 제2 특정 비트만큼 오른쪽으로 시프트한 후 상기 제1 특정 비트를 선택하여 출력할 수 있다.The processor may select and output the first specific bit after right shifting by a second specific bit in the hash value whenever a cyclic bit shift is performed.

상기 제1 특정 비트는 연속되는 비트일 수 있다.The first specific bit may be a continuous bit.

상기 제1 특정 비트의 크기는 상기 블룸 필터의 크기에 기초하여 결정될 수 있다.The size of the first specific bit may be determined based on the size of the bloom filter.

상기 순환 시프트는 어셈블리 명령어로 구현될 수 있다.The cyclic shift may be implemented in assembly instructions.

도 1은 일 실시예에 따른 전자 장치의 블록도를 나타낸다.
도 2는 블룸 필터의 특성을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 순환 시프트를 이용하여 해시 함수를 시뮬레이팅하는 동작을 설명하기 위한 일 예이다.
도 4는 일 실시예에 따른 순환 시프트를 이용하여 해시 함수를 시뮬레이팅하는 동작을 설명하기 위한 다른 예를 나타낸다.
도 5는 순환 시프트를 어셈블리 명령어로 표현한 의사코드의 일 예를 나타낸다.
1 is a block diagram of an electronic device according to an exemplary embodiment.
2 is a view for explaining the characteristics of the bloom filter.
3 is an example for explaining an operation of simulating a hash function using a cyclic shift according to an embodiment.
4 shows another example for explaining an operation of simulating a hash function using a cyclic shift according to an embodiment.
5 shows an example of pseudocode expressing a cyclic shift in an assembly instruction.

실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of the embodiments are disclosed for purposes of illustration only, and may be changed and implemented in various forms. Accordingly, the actual implemented form is not limited to the specific embodiments disclosed, and the scope of the present specification includes changes, equivalents, or substitutes included in the technical idea described in the embodiments.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Although terms such as first or second may be used to describe various components, these terms should be interpreted only for the purpose of distinguishing one component from another. For example, a first component may be termed a second component, and similarly, a second component may also be termed a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.When a component is referred to as being “connected to” another component, it may be directly connected or connected to the other component, but it should be understood that another component may exist in between.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expression includes the plural expression unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "have" are intended to designate that the described feature, number, step, operation, component, part, or combination thereof exists, and includes one or more other features or numbers, It should be understood that the possibility of the presence or addition of steps, operations, components, parts or combinations thereof is not precluded in advance.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present specification. does not

이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. In the description with reference to the accompanying drawings, the same components are assigned the same reference numerals regardless of the reference numerals, and overlapping descriptions thereof will be omitted.

도 1은 일 실시예에 따른 전자 장치의 블록도를 나타낸다.1 is a block diagram of an electronic device according to an exemplary embodiment.

전자 장치(100)는 블룸 필터(예: 도 2의 블룸 필터(200))를 이용하여 데이터를 처리할 수 있다. 전자 장치(100)는 블룸 필터(200)를 이용하여 데이터의 존재를 추가하거나 데이터의 존재여부를 확인할 수 있다. 블룸 필터(200)는 원소가 집합에 속하는지 여부를 검사하는데 사용되는 해시-기반 데이터 구조일 수 있다. 블룸 필터(200)는 시스템 내에 저장된 캐쉬 메모리, 라우팅 테이블 등의 데이터 증가로 인하여, 데이터의 존재여부를 확인할 수 있는 인덱스로서 사용될 수 있다. 또한, 블룸 필터(200)는 Squid 웹 프록시 캐시(Squid web proxy cache), 리소스 라우팅(resource routing), 패킷 라우팅(packet routing), 또는 악성 URL 식별과 같은 다양한 목적으로 사용될 수 있다.The electronic device 100 may process data using a Bloom filter (eg, the Bloom filter 200 of FIG. 2 ). The electronic device 100 may use the bloom filter 200 to add the existence of data or to check the existence of data. Bloom filter 200 may be a hash-based data structure used to check whether an element belongs to a set. The bloom filter 200 may be used as an index to check the existence of data due to an increase in data stored in a cache memory, a routing table, etc. stored in the system. In addition, the bloom filter 200 may be used for various purposes, such as a Squid web proxy cache, resource routing, packet routing, or malicious URL identification.

전자 장치(100)는 블룸 필터를 처리하는데 있어서, 하나의 해시 함수를 사용하면서 순환 시프트 연산(예: 순환 비트 시프트 연산)을 수행함으로써 기존 블룸 필터와 같은 수준의 긍정오류 확률을 가지며 더 빠른 연산 속도로 연산을 수행할 수 있다.In processing the Bloom filter, the electronic device 100 performs a cyclic shift operation (eg, a cyclic bit shift operation) while using a single hash function, thereby having the same level of false positive probability as the existing Bloom filter and faster operation speed. operation can be performed with

전자 장치(100)는 PC(Personal Computer), 데이터 서버, 또는 휴대용 장치로 구현될 수 있다. 휴대용 전자 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), e-북(e-book), 스마트 디바이스(smart device)으로 구현될 수 있다. 이때, 스마트 디바이스는 스마트 워치(smart watch) 또는 스마트 밴드(smart band)로 구현될 수 있다.The electronic device 100 may be implemented as a personal computer (PC), a data server, or a portable device. Portable electronic devices include a laptop computer, a mobile phone, a smart phone, a tablet PC, a mobile internet device (MID), a personal digital assistant (PDA), and an enterprise digital assistant (EDA). ), digital still camera, digital video camera, PMP (portable multimedia player), PND (personal navigation device or portable navigation device), handheld game console, e-book (e-book) may be implemented as a smart device. In this case, the smart device may be implemented as a smart watch or a smart band.

전자 장치(100)는 메모리(110) 및 프로세서(130)를 포함할 수 있다.The electronic device 100 may include a memory 110 and a processor 130 .

메모리(110)는 프로세서(130)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서(130)의 동작 및/또는 프로세서(130)의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.The memory 110 may store instructions (or programs) executable by the processor 130 . For example, the instructions may include instructions for executing an operation of the processor 130 and/or an operation of each component of the processor 130 .

프로세서(130)는 메모리(110)에 저장된 데이터를 처리할 수 있다. 프로세서(130)는 메모리(110)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(130)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.The processor 130 may process data stored in the memory 110 . The processor 130 may execute computer readable codes (eg, software) stored in the memory 110 and instructions induced by the processor 130 .

프로세서(130)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.The processor 130 may be a hardware-implemented data processing device having a circuit having a physical structure for executing desired operations. For example, desired operations may include code or instructions included in a program.

예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.For example, a data processing device implemented as hardware includes a microprocessor, a central processing unit, a processor core, a multi-core processor, and a multiprocessor. , an Application-Specific Integrated Circuit (ASIC), and a Field Programmable Gate Array (FPGA).

프로세서(130)는 블룸 필터를 처리하는데 있어서 블룸 필터에 대해 하나의 해시 함수를 이용하면서 순환 시프트 연산(예: 순환 비트 시프트 연산)을 수행할 수 있다. 이하에서는, 이에 대해 상세히 설명하도록 한다.In processing the Bloom filter, the processor 130 may perform a cyclic shift operation (eg, a cyclic bit shift operation) while using one hash function for the Bloom filter. Hereinafter, this will be described in detail.

도 2는 블룸 필터의 특성을 설명하기 위한 도면이다. 도 2에서, n은 입력 원소의 크기를 의미하고, m은 블룸 필터의 크기를 의미하고, k는 해시 함수의 수를 의미하고, h ()는 해시 함수를 의미한다.2 is a view for explaining the characteristics of the bloom filter. In FIG. 2 , n means the size of an input element, m means the size of a bloom filter, k means the number of hash functions, and h( ) means a hash function.

블룸 필터(200)는 입력 원소에 대하여 k개의 해시 함수 결과 값들을 크기가 m인 배열의 해당 비트에 '1'로 설정하는 것으로 데이터의 공간 활용에 매우 유용한 구조일 수 있다.The bloom filter 200 may be a very useful structure for space utilization of data by setting k hash function result values for an input element to '1' in the corresponding bit of an array having a size of m.

블룸 필터(200)에 대한 동작은 추가 동작(add operation)(예: 원소 추가 동작)과 쿼리 동작(query operation)(예: 원소 검사(membership test) 동작)을 포함할 수 있다. 블룸 필터(200)에 대한 동작을 위해서는 해시 함수가 필요하다. k개의 독립적인 임의의 해시 함수

Figure pat00001
는 입력 집합 S =
Figure pat00002
의 각 원소를 해시하여 해시 값들을 생성하며, 해시 값들은 블룸 필터(200)의 인덱스(예: 주소, 주소 번호)를 나타낸다.The operation for the bloom filter 200 may include an add operation (eg, an element addition operation) and a query operation (eg, an element check operation (membership test operation)). A hash function is required for the operation on the bloom filter 200 . k independent random hash functions
Figure pat00001
is the input set S =
Figure pat00002
Hash values are generated by hashing each element of , and the hash values indicate an index (eg, address, address number) of the bloom filter 200 .

도 2에서는 입력 원소

Figure pat00003
,
Figure pat00004
를 블룸 필터(200)에 대해 추가하는 동작을 도시하고 있다. 초기에, m(예: 10) 비트의 블룸 필터(200)는 모두 '0'으로 설정될 수 있다. k개의 해시 함수들이 입력 원소(예: 추가하려는 원소)에 대해서 k개의 해시 값을 계산하여 출력할 수 있다. 이때, 각 해시 값은 블룸 필터(200)의 비트 배열의 인덱스일 수 있다. 블룸 필터(200)에서 각 해시 값에 대응하는 비트는 1로 설정될 수 있다.2, the input element
Figure pat00003
,
Figure pat00004
The operation of adding to the bloom filter 200 is shown. Initially, all m (eg, 10) bit bloom filters 200 may be set to '0'. k hash functions can calculate and output k hash values for an input element (eg, an element to be added). In this case, each hash value may be an index of the bit array of the bloom filter 200 . A bit corresponding to each hash value in the bloom filter 200 may be set to 1.

예를 들어, 원소

Figure pat00005
에 대한 세 개의 해시 함수의 해시 값 각각이 제1 비트(201)(예: 블룸 필터(200)의 비트 배열의 1번째 비트), 제1 비트(201), 및 제5 비트(205)(예: 블룸 필터(200)의 비트 배열의 5번째 비트)를 가리키는 것이라면, 이에 해당되는 제1 비트(201), 제5 비트(205)가 '1'로 설정될 수 있다. 마찬가지로, 원소
Figure pat00006
에 대해서는 제6 비트(206)(예: 블룸 필터(200)의 비트 배열의 6번째 비트), 제7 비트(207)(예: 블룸 필터(200)의 비트 배열의 7번째 비트), 제9 비트(209)(예: 블룸 필터(200)의 비트 배열의 9번째 비트)가 '1'로 설정될 수 있다. 이러한 블룸 필터(200)에는 원소
Figure pat00007
Figure pat00008
가 존재함을 표시하고 있다.For example, element
Figure pat00005
Each of the hash values of the three hash functions for , is the first bit 201 (eg, the first bit of the bit array of the bloom filter 200), the first bit 201, and the fifth bit 205 (eg : 5th bit of the bit array of the bloom filter 200), the corresponding first bit 201 and the fifth bit 205 may be set to '1'. Likewise, the element
Figure pat00006
6th bit 206 (eg the 6th bit of the bit array of the bloom filter 200), the 7th bit 207 (eg the 7th bit of the bit array of the bloom filter 200), the ninth bit 206 for The bit 209 (eg, the ninth bit of the bit array of the bloom filter 200) may be set to '1'. The bloom filter 200 has an element
Figure pat00007
and
Figure pat00008
indicates the existence of

도 2에서는 입력 원소

Figure pat00009
,
Figure pat00010
를 블룸 필터(200)에 대해 쿼링하는 동작을 도시하고 있다. 쿼리 동작은 블룸 필터(200)에 대해 원소의 존재 여부를 확인하기 위한 동작일 수 있다. k개의 해시 함수들이 입력 원소(예: 검사하려는 원소)에 대해서 k개의 해시 값을 계산하여 출력할 수 있다. 블룸 필터(200)에서 각 해시값에 대응하는 비트에 설정된 값을 읽고, k개의 비트가 모두 1인 경우 원소는 집합에 속한다고 판단하고, 그렇지 않은 경우 속하지 않는다고 판단할 수 있다.2, the input element
Figure pat00009
,
Figure pat00010
The operation of querying for the bloom filter 200 is shown. The query operation may be an operation for checking whether an element exists with respect to the bloom filter 200 . k hash functions can compute and output k hash values for an input element (eg, an element to be checked). The bloom filter 200 reads the value set in the bit corresponding to each hash value, and when all k bits are 1, it is determined that the element belongs to the set, otherwise it can be determined that it does not belong.

예를 들어, 블룸 필터(200)에 대해 정상적으로 추가된 원소

Figure pat00011
의 경우는 실제 존재하는 개체이므로 true positive라 하고, 반면에 추가되지 않은 원소
Figure pat00012
에 대해서는 실제로 블룸 필터(200)에 존재하지 않지만, 블룸 필터(200)의 쿼리 동작을 통하여 존재하는 것으로 표현되기 때문에 이를 긍정오류(false positive)라 한다.For example, elements normally added for bloom filter 200
Figure pat00011
In the case of , it is said to be true positive because it is an entity that actually exists, while elements that are not added
Figure pat00012
Although it does not actually exist in the bloom filter 200, since it is expressed as being present through the query operation of the bloom filter 200, this is called a false positive.

이와 같이, 블룸 필터(200)는 많은 양의 데이터에 대한 존재여부를 빠르게 효율적으로 검색할 수 있다. 즉, 긴 정보를 짧게 줄여 비트 플래그로 바꿔 저장되기 때문에, 해당 정보를 이용하여 데이터의 존재여부를 판단하는 것이다.In this way, the bloom filter 200 can quickly and efficiently search for the existence of a large amount of data. That is, since long information is shortened and stored as a bit flag, the existence of data is determined using the corresponding information.

블룸 필터(200)의 특성상 발생하는 긍정오류를 다음의 수학적 절차들을 통해 설명하도록 한다.A positive error occurring due to the characteristics of the bloom filter 200 will be described through the following mathematical procedures.

수학식 1은 원소가 m 크기의 블룸 필터(200)에 저장될 때 1로 설정되지 않은 특정 비트의 확률일 수 있다.Equation 1 may be a probability of a specific bit that is not set to 1 when an element is stored in the bloom filter 200 of size m.

[수학식 1][Equation 1]

Figure pat00013
Figure pat00013

k개의 해시 함수들이 k개의 출력(예: 해시 값)을 생성하기 때문에, 수학식 2는 비트에 '1'을 k번 설정하지 않을 확률일 수 있다.Since k hash functions generate k outputs (eg, hash values), Equation 2 may be a probability of not setting '1' to a bit k times.

[수학식 1][Equation 1]

Figure pat00014
Figure pat00014

n개의 입력이 블룸 필터(200)에 저장되면, k개의 해시 함수들에 의해 n개의 입력이 블룸 필터(200)에 저장될 때 0으로 설정될 확률은 수학식 3과 같을 수 있다.When n inputs are stored in the Bloom filter 200, the probability of being set to 0 when n inputs are stored in the Bloom filter 200 by k hash functions may be equal to Equation 3.

[수학식 3][Equation 3]

Figure pat00015
Figure pat00015

수학식 4는

Figure pat00016
(입력ㆍ해시 함수의 수) 출력이 블룸 필터(200)에 저장될 때, 블룸 필터(200)에 0이 아닌 비트(예: 1)가 설정될 확률일 수 있다.Equation 4 is
Figure pat00016
(Number of input/hash functions) When the output is stored in the bloom filter 200 , it may be a probability that a non-zero bit (eg, 1) is set in the bloom filter 200 .

[수학식 4][Equation 4]

Figure pat00017
Figure pat00017

k개의 해시 함수들이 원소를 해시한 다음에, k 개의 해시 값들이 블룸 필터(200)에 삽입될 수 있다. 따라서, 수학식 5는 이론적 긍정오류 확률(false positive rate)을 나타낸다.After k hash functions hash the element, k hash values may be inserted into the bloom filter 200 . Accordingly, Equation 5 represents a theoretical false positive rate.

[수학식 5][Equation 5]

Figure pat00018
Figure pat00018

또한, 수학식 5는 수학식 6과 같이 개략적인 긍정오류 확률로 계산될 수 있다.Also, Equation 5 may be calculated as a rough false positive probability as in Equation 6 .

[수학식 6][Equation 6]

Figure pat00019
Figure pat00019

따라서, 긍정오류(예: 긍정오류 확률)의 최소 값은 수학식 7과 같은 경우일 수 있다.Therefore, the minimum value of a false positive (eg, false positive probability) may be the same as in Equation 7.

[수학식 7][Equation 7]

Figure pat00020
Figure pat00020

긍정오류 확률은 1) 더 많은 해시 함수 2) 입력 요소 증가 3) 블룸 필터의 크기 감소 등으로 증가할 수 있는 것을 알 수 있다.It can be seen that the false positive probability can be increased by 1) more hash functions 2) an increase in input elements 3) a decrease in the size of the bloom filter.

블룸 필터(200)에서 해시 함수의 수는 계산 속도와 관계가 있다. 실시예들은 1개의 해시 함수를 이용하여 블룸 필터(200)의 긍정오류 확률을 기존 블룸 필터(예: 표준 블룸 필터, 이중 해시 블룸 필터, 싱글 해시 블룸 필터 등)과 유사한 수준으로 유지하면서도 블룸 필터(200)의 연산 속도를 개선할 수 있다.The number of hash functions in the bloom filter 200 is related to the calculation speed. The embodiments use one hash function to maintain the false positive probability of the bloom filter 200 at a level similar to that of an existing bloom filter (eg, a standard bloom filter, a double hash bloom filter, a single hash bloom filter, etc.) while maintaining the bloom filter ( 200) can improve the operation speed.

도 3은 일 실시예에 따른 순환 시프트를 이용하여 해시 함수를 시뮬레이팅하는 동작을 설명하기 위한 일 예이다. 3 is an example for explaining an operation of simulating a hash function using a cyclic shift according to an embodiment.

도 3에서는 설명의 편의를 위해 블룸 필터(200)에 대한 동작을 수행하기 위해서는 X개의 해시 함수가 이용되어야 하는 것으로 가정한다.In FIG. 3 , for convenience of explanation, it is assumed that X hash functions are used to perform an operation on the bloom filter 200 .

다양한 실시예에 따르면, 블룸 필터(200)에 대한 동작(예: 원소 추가 동작, 원소 검사 동작)이 X개의 해시 함수가 아닌 1개의 해시 함수(예: 비암호학적 해시 함수, 암호학적 해시 함수)

Figure pat00021
를 이용하여 수행될 수 있다. According to various embodiments, the operation (eg, element addition operation, element check operation) for the bloom filter 200 is not X hash functions, but one hash function (eg, non-cryptographic hash function, cryptographic hash function)
Figure pat00021
can be performed using

해시 함수

Figure pat00022
는 입력
Figure pat00023
으로부터 이진 비트로 표현되는 해시 값
Figure pat00024
을 생성할 수 있다. 해시 값
Figure pat00025
에는 순환 비트 시프트(예: X번의 순환 비트 시프트)가 수행될 수 있다. 순환 비트 시프트가 수행될 때마다, 해시 값
Figure pat00026
에서 i비트(i = 1,??, X)만큼 오른쪽으로 시프트된 후 연속되는 특정 비트(예: 특정 비트 배열)가 선택되어 출력될 수 있다.hash function
Figure pat00022
is input
Figure pat00023
Hash value expressed in binary bits from
Figure pat00024
can create hash value
Figure pat00025
A cyclic bit shift (eg, cyclic bit shift X times) may be performed. Whenever a cyclic bit shift is performed, the hash value
Figure pat00026
After shifting to the right by i bits (i = 1,??, X), a continuous specific bit (eg, a specific bit array) may be selected and output.

예를 들어, 제1 순환 비트 시프트가 수행된 경우 해시 값

Figure pat00027
에서 제1 특정 비트(301)가 선택되어 제1 해시 함수의 해시 값
Figure pat00028
으로 출력되고, 제2 순환 비트 시프트가 수행된 경우 해시 값
Figure pat00029
에서 제2 특정 비트(302)가 선택되어 제2 해시 함수의 해시 값
Figure pat00030
으로 출력되고, 제3 순환 비트 시프트가 수행된 경우 해시 값
Figure pat00031
에서 제3 특정 비트(303)가 선택되어 제3 해시 함수의 해시 값
Figure pat00032
으로 출력되고, 제4 순환 비트 시프트가 수행된 경우 해시 값
Figure pat00033
에서 제4 특정 비트(304)가 선택되어 제4 해시 함수의 해시 값
Figure pat00034
으로 출력될 수 있다. 총 X번(예: 시뮬레이션하려는 해시 함수의 개수) 순환 시프트 방법을 통하여서 하나의 해시 함수의 해시 값에서 각각 다른 해시 함수의 해시 값을 만들어낼 수 있다.For example, if the first cyclic bit shift is performed, the hash value
Figure pat00027
The first specific bit 301 is selected in the hash value of the first hash function
Figure pat00028
, and a hash value when the second cyclic bit shift is performed
Figure pat00029
The second specific bit 302 is selected in the hash value of the second hash function
Figure pat00030
, and a hash value when the third cyclic bit shift is performed
Figure pat00031
The third specific bit 303 is selected in the hash value of the third hash function
Figure pat00032
, and a hash value when the fourth cyclic bit shift is performed
Figure pat00033
A fourth specific bit 304 is selected in the hash value of the fourth hash function
Figure pat00034
can be output as A total of X times (eg, the number of hash functions to be simulated) can generate hash values of different hash functions from the hash values of one hash function through the cyclic shift method.

순환 비트 시프트에 의해 시프트되는 i비트의 크기 및 선택되어 출력되는 특정 비트의 크기는 블룸 필터(200)의 크기에 기초하여 결정될 수 있다.The size of the i-bit shifted by the cyclic bit shift and the size of the selected and output specific bit may be determined based on the size of the bloom filter 200 .

도 4는 일 실시예에 따른 순환 시프트를 이용하여 해시 함수를 시뮬레이팅하는 동작을 설명하기 위한 다른 예를 나타내고, 도 5는 순환 시프트를 어셈블리 명령어로 표현한 의사코드의 일 예를 나타낸다.4 shows another example for explaining an operation of simulating a hash function using a cyclic shift according to an embodiment, and FIG. 5 shows an example of pseudocode expressing the cyclic shift by an assembly instruction.

수학식 8은 고급 프로그래밍 언어로서 순환 비트 시프트에 대한 설명을 나타낼 수 있다.Equation 8 may represent the description of the cyclic bit shift as a high-level programming language.

[수학식 8][Equation 8]

Figure pat00035
Figure pat00035

수학식 8은 비트가 모든 루프에서 i번째 (i = 1,..., X) 주소만큼 오른쪽으로 시프트되는 의사 코드를 나타내는 것일 수 있다. 도 4는 수학식 8을 보다 직관적으로 나타내는 것일 수 있다. 블룸 필터(200) 구현에 식을 적용하면 수학식 8에서 문제가 발생할 수 있어, 특정 비트를 선택하기 위한 선택 작업이 필요한 것이다. 이에 해당하는 연산 시간을 줄이기 위해 어셈블리 언어가 필요하다. CF 플래그를 사용하는 순환 비트 시프트를 구현하기 위해 ROL 또는 ROR (Rotate Right 및 Rotate Left의 약자) 어셈블리 명령어를 사용하여 연산 시간을 줄일 수 있다.Equation 8 may represent a pseudo code in which bits are shifted to the right by the i-th (i = 1,..., X) address in every loop. 4 may more intuitively show Equation (8). When the expression is applied to the implementation of the bloom filter 200, a problem may occur in Equation 8, and a selection operation for selecting a specific bit is required. Assembly language is needed to reduce the corresponding computation time. To implement a cyclic bit shift using the CF flag, ROL or ROR (short for Rotate Right and Rotate Left) assembly instructions can be used to reduce computation time.

도 5는 블룸 필터(200)에서 수행되는 순환 비트 시프트의 의사 코드의 일 예를 나타낸다. 강조 표시된 라인은 ROL/ROR을 포함한다. 수학식 8에서 볼 수 있듯이, 해시 값을 i비트만큼 순환 비트 시프트하는 것을 하나의 어셈블리 명령으로 몇 가지 작업을 줄일 수 있다. 초기 해시 출력 d는 임의의 해시 값을 시뮬레이션하기 위해 루프마다 순환 회전될 수 있다. c/c ++와 호환되도록 고급 프로그래밍 언어 중간에 코드'__asm'블록이 있을 수 있다.5 shows an example of a pseudo code of a cyclic bit shift performed in the bloom filter 200 . The highlighted line contains ROL/ROR. As can be seen from Equation 8, cyclic bit shifting of the hash value by i bits can reduce several tasks with one assembly instruction. The initial hash output d can be cyclically rotated per loop to simulate an arbitrary hash value. To be compatible with c/c++, there can be '__asm' blocks of code in the middle of high-level programming languages.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented by a hardware component, a software component, and/or a combination of a hardware component and a software component. For example, the apparatus, methods and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA). array), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and a software application running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device, to be interpreted by or to provide instructions or data to the processing device. , or may be permanently or temporarily embody in a transmitted signal wave. The software may be distributed over networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in a computer-readable recording medium.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may store program instructions, data files, data structures, etc. alone or in combination, and the program instructions recorded on the medium may be specially designed and configured for the embodiment or may be known and available to those skilled in the art of computer software. have. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.

위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The hardware devices described above may be configured to operate as one or a plurality of software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited drawings, a person skilled in the art may apply various technical modifications and variations based thereon. For example, the described techniques are performed in a different order than the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (15)

하나의 해시 함수를 이용하여 원소에 대해 해시 값을 생성하는 동작;
상기 해시 값에 순환 시프트를 수행하여 상기 해시 값으로부터 제1 특정 비트를 선택하여 출력하는 동작; 및
상기 제1 특정 비트에 기초하여 블룸 필터의 비트 배열에 상기 원소에 대한 추가 또는 쿼리하는 동작을 수행하는 동작
을 포함하는, 블룸 필터를 처리하는 방법.
generating a hash value for an element using a single hash function;
performing a cyclic shift on the hash value to select and output a first specific bit from the hash value; and
performing an operation of adding or querying the element to a bit array of a bloom filter based on the first specific bit
A method of processing a bloom filter, comprising:
제1항에 있어서,
상기 출력하는 동작은,
상기 제1 특정 비트를 상기 블룸 필터의 비트 배열의 인덱스로 출력하는 동작
을 포함하는, 블룸 필터를 처리하는 방법.
According to claim 1,
The output operation is
Outputting the first specific bit as an index of the bit array of the bloom filter
A method of processing a bloom filter, comprising:
제1항에 있어서,
상기 순환 시프트는 순환 비트 시프트인, 블룸 필터를 처리하는 방법.
According to claim 1,
wherein the cyclic shift is a cyclic bit shift.
제1항에 있어서,
상기 출력하는 동작은,
순환 비트 시프트를 수행할 때마다 상기 해시 값에서 제2 특정 비트만큼 오른쪽으로 시프트한 후 상기 제1 특정 비트를 선택하여 출력하는 동작
을 포함하는, 블룸 필터를 처리하는 방법.
According to claim 1,
The output operation is
An operation of selecting and outputting the first specific bit after shifting to the right by a second specific bit in the hash value whenever a cyclic bit shift is performed
A method of processing a bloom filter, comprising:
제1항에 있어서,
상기 제1 특정 비트는 연속되는 비트인, 블룸 필터를 처리하는 방법.
According to claim 1,
wherein the first specific bit is a continuous bit.
제1항에 있어서,
상기 제1 특정 비트의 크기는 상기 블룸 필터의 크기에 기초하여 결정되는, 블룸 필터를 처리하는 방법.
According to claim 1,
and the size of the first specific bit is determined based on the size of the bloom filter.
제1항에 있어서,
상기 순환 시프트는 어셈블리 명령어로 구현되는, 블룸 필터를 처리하는 방법.
According to claim 1,
wherein the cyclic shift is implemented in assembly instructions.
하드웨어와 결합되어 제1항 내지 제7항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
A computer program stored in a computer-readable recording medium in combination with hardware to execute the method of any one of claims 1 to 7.
블룸 필터를 처리하는 장치에 있어서,
하나 이상의 인스트럭션을 저장하는 메모리; 및
상기 인스트럭션을 실행시키기 위한 프로세서
를 포함하고,
상기 인스트럭션이 실행될 때, 상기 프로세서는,
하나의 해시 함수를 이용하여 원소에 대해 해시 값을 생성하고, 상기 해시 값에 순환 시프트를 수행하여 상기 해시 값으로부터 제1 특정 비트를 선택하여 출력하고, 상기 제1 특정 비트에 기초하여 블룸 필터의 비트 배열에 상기 원소에 대한 추가 또는 쿼리하는 동작을 수행하는, 장치.
An apparatus for processing a bloom filter, comprising:
a memory storing one or more instructions; and
a processor for executing the instructions
including,
When the instruction is executed, the processor,
A hash value is generated for an element using a single hash function, a cyclic shift is performed on the hash value to select and output a first specific bit from the hash value, and the bloom filter is based on the first specific bit. An apparatus for performing an operation to add or query an element to a bit array.
제9항에 있어서,
상기 프로세서는,
상기 제1 특정 비트를 상기 블룸 필터의 비트 배열의 인덱스로 출력하는, 장치.
10. The method of claim 9,
The processor is
outputting the first specific bit as an index of the bit array of the bloom filter.
제9항에 있어서,
상기 순환 시프트는 순환 비트 시프트인, 장치.
10. The method of claim 9,
wherein the cyclic shift is a cyclic bit shift.
제9항에 있어서,
상기 프로세서는,
순환 비트 시프트를 수행할 때마다 상기 해시 값에서 제2 특정 비트만큼 오른쪽으로 시프트한 후 상기 제1 특정 비트를 선택하여 출력하는, 장치.
10. The method of claim 9,
The processor is
The apparatus of claim 1, wherein each time a cyclic bit shift is performed, the hash value is shifted to the right by a second specific bit, and then the first specific bit is selected and output.
제9항에 있어서,
상기 제1 특정 비트는 연속되는 비트인, 장치.
10. The method of claim 9,
wherein the first specific bit is a contiguous bit.
제9항에 있어서,
상기 제1 특정 비트의 크기는 상기 블룸 필터의 크기에 기초하여 결정되는, 장치.
10. The method of claim 9,
and the size of the first specific bit is determined based on the size of the bloom filter.
제9항에 있어서,
상기 순환 시프트는 어셈블리 명령어로 구현되는, 장치.
10. The method of claim 9,
wherein the cyclic shift is implemented in assembly instructions.
KR1020210001599A 2020-01-08 2021-01-06 Method for processing bloom filter using circular shift, and apparatuses for performing the same KR20210089589A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20200002603 2020-01-08
KR1020200002603 2020-01-08

Publications (1)

Publication Number Publication Date
KR20210089589A true KR20210089589A (en) 2021-07-16

Family

ID=77150979

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210001599A KR20210089589A (en) 2020-01-08 2021-01-06 Method for processing bloom filter using circular shift, and apparatuses for performing the same

Country Status (1)

Country Link
KR (1) KR20210089589A (en)

Similar Documents

Publication Publication Date Title
JP6349395B2 (en) Call path finder
JP6804668B2 (en) Block data validation method and equipment
US10372674B2 (en) File management in a storage system
AU2019388601B2 (en) Systems and methods for storing object state on hash chains
US11216281B2 (en) Facilitating data processing using SIMD reduction operations across SIMD lanes
US20170091271A1 (en) Technology to reduce cost of concatenation for hash array
US11544285B1 (en) Automated transformation of hierarchical data from a source data format to a target data format
US11030714B2 (en) Wide key hash table for a graphics processing unit
US9460243B2 (en) Selective importance sampling
US10229223B2 (en) Mining relevant approximate subgraphs from multigraphs
KR20210089589A (en) Method for processing bloom filter using circular shift, and apparatuses for performing the same
US20190361805A1 (en) Spin-less work-stealing for parallel copying garbage collection
US20170337118A1 (en) Selective object sensitive points-to analysis
AU2019386603B2 (en) Systems and methods for storing object state on hash chains
US20130173647A1 (en) String matching device based on multi-core processor and string matching method thereof
KR20210100076A (en) Generate vector predicate summary
US10055510B2 (en) Method for detecting cliques in graphs
US20230046448A1 (en) Method and system for changing structure of deep learning model based on change in input resolution
CN116048816B (en) Data request processing method, device, electronic equipment and storage medium
KR102467622B1 (en) Method and system for providing creating intermediate representation
US20230205532A1 (en) Offloading computation based on extended instruction set architecture
US11226935B2 (en) Method, device and computer program product for determining duplicated data
US20230269104A1 (en) Method of managing data history and device performing the same
US20220366065A1 (en) Systems and methods for efficient access control
US20140379981A1 (en) Application discovery using storage system signatures

Legal Events

Date Code Title Description
E902 Notification of reason for refusal