KR101537445B1 - Apparatus and method for bloom filter capable of improving false positives performance - Google Patents

Apparatus and method for bloom filter capable of improving false positives performance Download PDF

Info

Publication number
KR101537445B1
KR101537445B1 KR1020130109597A KR20130109597A KR101537445B1 KR 101537445 B1 KR101537445 B1 KR 101537445B1 KR 1020130109597 A KR1020130109597 A KR 1020130109597A KR 20130109597 A KR20130109597 A KR 20130109597A KR 101537445 B1 KR101537445 B1 KR 101537445B1
Authority
KR
South Korea
Prior art keywords
hash
sub
subgroup
filter
subgroups
Prior art date
Application number
KR1020130109597A
Other languages
Korean (ko)
Other versions
KR20150030405A (en
Inventor
임혜숙
이나라
이정원
Original Assignee
이화여자대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이화여자대학교 산학협력단 filed Critical 이화여자대학교 산학협력단
Priority to KR1020130109597A priority Critical patent/KR101537445B1/en
Publication of KR20150030405A publication Critical patent/KR20150030405A/en
Application granted granted Critical
Publication of KR101537445B1 publication Critical patent/KR101537445B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Abstract

블룸 필터 처리 장치는 k 개의 해시 함수들을 j 개(j는 2부터 k까지의 정수)의 해시 함수 서브그룹으로 분할하여, 입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하는 해시 인덱스 생성부, 총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 보유하며, j 개의 해시 함수 서브그룹들 중 i 번째(i는 1부터 j까지의 정수) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 연결하는 서브 블룸 필터 저장부, 프로그래밍 시에 원소에 관하여 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터에 설정하는 프로그래밍부 및 멤버쉽 쿼리 시에 입력 데이터에 관하여 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들에 따라 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 입력 데이터의 멤버쉽을 검증하는 쿼리부를 포함할 수 있다.The bloom filter processing apparatus divides k hash functions into j (j is an integer from 2 to k) hash function subgroups, and divides the k number of hash function subgroups into j hash index subgroups A hash index generator for generating hash indexes, j sub-blob filters having m total bit positions, i among the j hash function subgroups (i is an integer from 1 to j) A sub-blob filter storage unit for connecting the hash indices of the i-th hash index subgroup generated by the i-th hash index subgroup to the i-th sub-bloom filter, Th sub-bloom filter and the i-th hash index generated about the input data at the membership query And a query unit for verifying the membership of the input data based on bit strings output from the i-th sub-blob filter according to the hash indices of the sub-group.

Description

거짓 양성 성능을 개선할 수 있는 블룸 필터 처리 장치 및 블룸 필터 처리 방법{APPARATUS AND METHOD FOR BLOOM FILTER CAPABLE OF IMPROVING FALSE POSITIVES PERFORMANCE}TECHNICAL FIELD [0001] The present invention relates to a bloom filter processing apparatus and a bloom filter processing method capable of improving false positive performance,

본 발명은 블룸 필터에 관한 것으로, 더욱 상세하게는, 거짓 양성 성능을 개선할 수 있는 블룸 필터에 관한 것이다.The present invention relates to a Bloom filter, and more particularly, to a Bloom filter capable of improving false positive performance.

블룸 필터(Bloom filter)는 1970년 B. Bloom에 의해 고안되었으며, 원소가 집합에 속하는지 여부를 검사할 수 있는 확률적 자료 구조이다. The Bloom filter was invented by B. Bloom in 1970 and is a probabilistic data structure that can check whether an element belongs to a set.

블룸 필터는 m 비트 크기의 비트열로 표현될 수 있는데, m 비트의 비트열 중에서 각각의 원소에 관하여 k 가지의 서로 다른 해시 함수(hash function)에 의해 도출된 원소의 해시 값에 대응하는 비트들이 1로 설정되고 나머지 비트들은 0으로 설정된다.The Bloom filter can be represented by a bit string of m bits in size. The bits corresponding to the hash values of the elements derived by k different hash functions with respect to each of the m bits of the bit stream 1 and the remaining bits are set to zero.

외부에서 어떤 데이터가 집합에 포함되는지 여부를 검사(query)할 경우에, 검사하려는 데이터의 k 가지 해시 함수에 의한 해시 값들이 가지는 인덱스(index)가 얻어지는데, 블룸 필터 비트열 중에서 그러한 인덱스들에 해당하는 위치의 비트들이 모두 1이면 검사하려는 데이터가 집합에 속한다고 양성으로(positive) 판정하고, 그러한 비트들 중에 하나라도 0이면 집합에 속하지 않는다고 음성으로(negative) 판정한다.When an external query is performed to determine which data is included in an aggregate, an index of hash values by k hash functions of the data to be examined is obtained. In such a case, If all of the bits in the corresponding position are 1, the data to be checked belongs to the set. If the bit is 0, it is determined to be negative.

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

따라서 블룸 필터에 의해 어떤 원소가 집합에 속한다고 양성 판정되었지만 실제로는 원소가 집합에 속하지 않는 거짓 양성의 가능성이 문제된다.Therefore, although the Bloom filter has determined that an element belongs to a set, the possibility of false positives, in which the element does not belong to the set, is a problem.

원소의 개수가 많아지면 거짓 양성 확률이 크게 증가하며, 일정한 거짓 양성 확률을 달성하려면 원소의 개수에 비례하여 블룸 필터의 크기를 늘려야 한다는 점이 수학적으로 증명되어 있다. 그러나 블룸 필터의 크기를 늘리면 그만큼 스토리지과 메모리를 차지하므로 블룸 필터의 크기를 무작정 늘릴 수도 없다.The larger the number of elements, the greater the probability of false positives, and mathematically proves that the size of the Bloom filter must be increased in proportion to the number of elements in order to achieve a certain false positive probability. However, if you increase the size of Bloom filter, it will take up storage and memory, so you can not increase the size of Bloom filter.

따라서, 효율과 성능을 유지하면서 거짓 양성을 줄일 수 있는 블룸 필터 구조가 요구된다.Therefore, a bloom filter structure capable of reducing false positives while maintaining efficiency and performance is required.

한편, 블룸 필터에 의해 어떤 원소가 집합에 속하지 않는다고 음성 판정될 경우에 실제로 원소가 집합에 속할 수도 있는 거짓 음성의 가능성은 전혀 없다.On the other hand, there is no possibility of false speech, which may actually belong to a set when the speech is judged by the Bloom filter that an element does not belong to the set.

이렇듯, 블룸 필터는 설계에 따라 작은 메모리 공간을 소요하고 판정 속도가 빠르며, 거짓 음성이 불가능하여, 예를 들어 대규모 데이터베이스를 구성하는 여러 개의 소규모 데이터베이스들 중에서 적어도 특정 원소가 속하지 않는, 그래서 검색할 필요가 없는 소규모 데이터베이스들을 정확하고 빠르게 가려낼 수 있다.As such, the Bloom filter requires a small memory footprint, is fast to determine, is not capable of false speech, for example, at least some of the small databases that make up a large database do not belong to a particular element, Can be scanned accurately and quickly.

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

본 발명이 해결하고자 하는 과제는 복수의 서브 블룸 필터들을 이용하여 거짓 양성을 줄일 수 있는 블룸 필터 처리 장치 및 블룸 필터 처리 방법을 제공하는 데에 있다.SUMMARY OF THE INVENTION It is an object of the present invention to provide a bloom filter processing apparatus and a bloom filter processing method capable of reducing false positives by using a plurality of sub-bloom filters.

본 발명의 일 측면에 따른 블룸 필터 처리 장치는,A bloom filter processing apparatus according to an aspect of the present invention includes:

k 개의 해시 함수들을 j 개(j는 2부터 k까지의 정수)의 해시 함수 서브그룹으로 분할하여, 입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하는 해시 인덱스 생성부;divides the k hash functions into j (j is an integer from 2 to k) hash function subgroups, and generates k hash indexes divided into j hash index subgroups with respect to the input element or data A hash index generation unit;

총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 보유하며, j 개의 해시 함수 서브그룹들 중 i 번째(i는 1부터 j까지의 정수) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 연결하는 서브 블룸 필터 저장부;(I is an integer from 1 to j) of the j hash function subgroups, and the i-th hash index subgroup generated by the hash function subgroup A sub-bloom filter storage unit for connecting the hash indices of the i-th sub-blob filter to the i-th sub-bloom filter;

프로그래밍 시에 원소를 상기 해시 인덱스 생성부에 입력하고, 상기 원소에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터에 설정하는 프로그래밍부; 및The hash index of the i-th hash index subgroup generated by the i-th hash function subgroup among the j hash function subgroups with respect to the element is input to the sub- A programming unit for setting the i-th sub-blob filter in the storage unit; And

멤버쉽 쿼리 시에 입력 데이터를 상기 해시 인덱스 생성부에 입력하고, 상기 입력 데이터에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 생성되면, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들에 따라 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터의 멤버쉽을 검증하는 쿼리부를 포함할 수 있다.When the hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data, And a query unit for verifying the membership of the input data based on bit strings output from the i-th sub-blob filter of the sub-bloom filter storage unit according to the generated hash indexes of the i-th hash index subgroup.

본 발명의 다른 측면에 따른 블룸 필터 처리 방법은,According to another aspect of the present invention,

입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하도록 j 개(j는 2부터 k까지의 정수)의 해시 함수 서브그룹으로 분할되는 k 개의 해시 함수들을 제공하는 단계;Provides k hash functions divided into j (j is an integer from 2 to k) hash function subgroups to generate k hash indices divided into j hash index subgroups with respect to the input element or data ;

상기 j 개의 해시 함수 서브그룹들 중 i 번째(i는 1부터 j까지의 정수) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 i 번째 서브 블룸 필터에 연결되도록, 총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 제공하는 단계;The hash indexes of the i-th hash index subgroup generated by the i-th (where i is an integer from 1 to j) hash function subgroups of the j hash function subgroups are connected to the i-th sub- Providing j sub-blob filters with bit positions;

프로그래밍 시에, 원소에 관하여 상기 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 설정하는 단계; 및The hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the elements, and the hash indexes of the generated ith hash index subgroup are denoted by i Th sub-bloom filter; And

멤버쉽 쿼리 시에 입력 데이터에 관하여 상기 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들 따라 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터의 멤버쉽을 검증하는 단계를 포함할 수 있다.The hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data at the time of membership query, and the hash indexes of the generated i- And verifying the membership of the input data based on bit strings output from the i-th sub-blob filter, respectively.

본 발명의 블룸 필터 처리 장치 및 블룸 필터 처리 방법에 따르면, 집합의 규모가 커질 때에도 전체적으로 동일한 크기의 메모리를 이용하지만, 거짓 양성의 빈도를 훨씬 줄일 수 있다.According to the Bloom filter processing apparatus and the Bloom filter processing method of the present invention, the memory of the same size as the whole is used even when the size of the set is large, but the frequency of false positives can be reduced much more.

도 1은 본 발명의 일 실시예에 따른 서브 블룸 필터들을 가지는 블룸 필터의 프로그래밍을 예시한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 서브 블룸 필터들을 가지는 블룸 필터에 대한 멤버쉽 쿼리를 예시한 개념도이다.
도 3은 본 발명의 일 실시예에 따른 서브 블룸 필터들을 이용한 블룸 필터 처리 방법에 따라 복수 개의 서브 블룸 필터들을 사용할 경우에 나타난 거짓 양성의 빈도를 예시한 표이다.
도 4는 본 발명의 일 실시예에 따른 서브 블룸 필터들을 이용한 블룸 필터 처리 장치를 예시한 블록도이다.
도 5는 본 발명의 일 실시예에 따른 서브 블룸 필터들을 이용한 블룸 필터 처리 방법을 예시한 순서도이다.
1 is a conceptual diagram illustrating programming of a bloom filter having sub-bloom filters according to an embodiment of the present invention.
2 is a conceptual diagram illustrating a membership query for a bloom filter having sub-bloom filters according to an embodiment of the present invention.
3 is a table illustrating the frequency of false positives when using a plurality of sub-blob filters according to a bloom filter processing method using sub-bloom filters according to an embodiment of the present invention.
4 is a block diagram illustrating an apparatus for processing a bloom filter using sub-bloom filters according to an embodiment of the present invention.
5 is a flowchart illustrating a bloom filter processing method using sub-bloom filters according to an embodiment of the present invention.

본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다. For the embodiments of the invention disclosed herein, specific structural and functional descriptions are set forth for the purpose of describing an embodiment of the invention only, and it is to be understood that the embodiments of the invention may be practiced in various forms, The present invention should not be construed as limited to the embodiments described in Figs.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. The same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.

아래 설명에서, 맥락에 따라 달리 해석하도록 명시되지 않은 한, 원소는 이미 집합에 속하거나 현재 추가될 대상물을 지칭하고, 데이터는 집합에 속하는지 여부를 검사하기 위한 대상물을 가리킨다.In the following description, an element refers to an object that belongs to a set or to be added at present, unless the context specifies otherwise, and an object to check whether the data belongs to a set.

블룸 필터는 일반적으로 크기 m의 비트 벡터(bit vector)와 k 개의 해시 함수들로 구성된다.The Bloom filter generally consists of a bit vector of size m and k hash functions.

해시 함수(hash function)는 가변하는 길이의 데이터를 어떤 고정된 길이의 데이터에 상사(mapping)할 수 있는 여하한 종류의 알고리즘을 의미한다. 해시 함수의 연산 결과, 즉 매핑된 고정 길이의 데이터는 해시 값(hash values), 해시 코드, 해시 섬(sum), 체크섬(checksum), 또는 간단히 해시 등으로 불리고, 특히 블룸 필터에서는 해시 인덱스(hash index), 인덱스 또는 색인(index)이라고도 불린다.A hash function means any kind of algorithm that can map variable length data to some fixed length data. The result of the operation of the hash function, that is, the mapped fixed-length data, is called a hash value, a hash code, a hash sum, a checksum or a hash, index, index, or index.

블룸 필터에서 각각의 해시 함수는 다양한 길이의 원소 또는 데이터를 입력받아 고정된 길이의 해시 인덱스를 출력한다. 해시 인덱스가 가지는 값은 가변하는 길이의 원소 또는 데이터에 대해 고정된 길이의 비트 벡터 내의 비트 포지션들 중 이진 비트값 1로 설정하기 위한 비트 포지션을 의미한다.In the Bloom filter, each hash function receives a variable length element or data and outputs a fixed length hash index. The value of a hash index means a bit position for setting a binary bit value 1 among bit positions in a bit vector of a fixed length for a variable length element or data.

해시 함수에 의해 각각의 포지션이 선택될 확률이 균일하고 랜덤하여야 블룸 필터에 적합한 해시 함수라고 할 수 있고, 다양한 상사 함수들이 해시 함수로서 이용될 수 있음이 알려져 있지만, 대표적으로 예를 들어 CRC(Cyclic Redundancy Check) 알고리즘이 이용될 수 있다. It is known that the probability that each position is selected by the hash function is uniform and random and can be regarded as a hash function suited to the bloom filter, and various superior functions can be used as a hash function. Typically, for example, Redundancy Check) algorithm may be used.

통상적으로 CRC 알고리즘은 다음과 같이, a 비트의 주어진 정보가 있을때, 이를 b 비트 만큼 자리를 올리고 미리 약속한 b 비트의 키 값으로 나누면 r 비트의 나머지가 남게 되는데, 정보의 송신측에서는 원래의 정보 비트를 b 비트 자리 올린 것에 r 비트의 나머지를 첨부하여 a+r 비트 크기의 데이타를 만들어 보내고, 정보의 수신측에서는 수신된 a+r 비트 크기의 데이타를 b 비트의 키 값으로 나누어 보고 나머지가 정확히 0이 되는지를 검사함으로써, 수신된 데이터가 송신된 정보와 동일함을 입증하는, 즉 전송 데이터의 무결성을 입증하는 알고리즘이다. b가 16 비트이면 CRC-16, 32 비트이면 CRC-32라 한다.Generally, the CRC algorithm, when there is a given information of a bits, divides it by b bits and divides it by the key value of the promised b bits, and the remainder of the r bits remains. On the transmitting side of the information, Bit data of a + r bit size by dividing the data of the received a + r bit size by the key value of b bit, and the rest is 0 To verify that the received data is the same as the transmitted information, i. E., To verify the integrity of the transmitted data. If b is 16 bits, it is CRC-16. If b is 32 bits, it is CRC-32.

블룸 필터는 CRC 알고리즘에서 얻어진 r 비트의 잉여 비트들의 전부 또는 일부분 또는 추가적인 조합으로 얻은 이진 비트열에 상응하는 십진수를 해시 인덱스로 이용할 수 있다.The Bloom filter may use a decimal number corresponding to a binary bit string obtained by all or a part or an additional combination of the r bits of the CRC algorithm obtained as a hash index.

어떤 n 개의 원소들을 가진 집합이 주어졌을 때, 집합에 속하는 원소들의 각각을 k 개의 해시 함수들에 입력하면, k 개의 해시 함수들에 의해 크기 m의 비트 벡터 내에 k 개의 해시 색인 위치가 선택되고, 선택된 해시 색인 위치들에 상응하는 비트 포지션들이 각각 1로 설정된다. 이를 블룸 필터의 프로그래밍이라 한다. Given a set of n elements, each of the elements belonging to the set is input into k hash functions, k hash index positions are selected in the bit vector of size m by k hash functions, The bit positions corresponding to the selected hash index positions are each set to one. This is called programming Bloom filter.

원소 x를 k 개의 해시 함수들 hi(), 1≤i≤k을 이용하여 블룸 필터 BF의 비트 벡터 Vector[]에 프로그래밍하는 알고리즘 BFProgram(x)을 의사 코드(pseudo code)로 표현하면 다음과 같다.
The algorithm BFProgram (x), which programs the element x into the bit vector Vector [] of the Bloom filter BF using k hash functions h i (), 1 ≤ i ≤ k, can be expressed as a pseudo code, same.

BFProgram (x)BFProgram (x)

1) for ( i= 1 to k )1) for (i = 1 to k)

2) Vector[hi(x)] ← 1
2) Vector [h i (x)] ← 1

hi(x)는 i 번째 해시 함수 hi()에 원소 x가 입력되어 연산된 i 번째 해싱 값 또는 해싱 색인이다. h i (x) is the ith hash value or hashing index computed by inputting the element x into the ith hash function h i ().

다시 말해, 일반적으로 블룸 필터의 프로그래밍은 매번 원소가 입력될 때마다 원소 x에 대해 비트 벡터 내의 m 개의 비트 포지션 중에 k 개의 해시 함수에 의해 선택되는 k 개의 비트 포지션을 1로 반복적으로 설정하는 과정이다.In other words, the programming of a Bloom filter is generally a process of repeatedly setting k bit positions selected by k hash functions among m bit positions in the bit vector for element x each time an element is input .

블룸 필터에 집합 내의 모든 원소들에 대해 프로그래밍을 한 이후에는, 쿼리(query)를 통해, 입력된 데이터가 이전에 프로그래밍된 원소인지 여부를 판정할 수 있다.After programming the Bloom filter for all the elements in the set, a query can be used to determine whether the input data is a previously programmed element.

쿼리 과정도 실질적으로 프로그래밍 과정과 다르지 않다. 입력된 데이터에 대해 k 개의 해시 함수들에 의해 k 개의 해시 색인 위치가 선택되면, k 개의 해시 색인 위치들에 상응하는 비트 벡터 내에 비트 포지션들이 모두 1로 설정되어 있다면, 입력된 데이터가 이전에 프로그래밍된 원소일 확률이 매우 높고, 따라서 양성(positive)으로, 다시 말해 데이터가 집합에 속한다고 판정한다.The query process is not really different from the programming process. If k hash index positions are selected by the k hash functions for the input data, if the bit positions are all set to 1 in the bit vector corresponding to k hash index positions, The probability of being an element is very high and therefore is determined to be positive, i. E. The data belongs to a set.

그렇지 않고, k 개의 해시 색인 위치들에 상응하는 비트 벡터 내에 비트 포지션들 중 어느 하나라도 0으로 설정되어 있다면, 입력된 데이터는 이전에 프로그래밍된 적이 없는 데이터이며, 따라서 음성(negative)으로, 다시 말해 데이터가 집합에 속하지 않는다고 판정한다.Otherwise, if any of the bit positions in the bit vector corresponding to the k hash index positions are set to zero, then the input data is data that has not been previously programmed and thus is negative It is determined that the data does not belong to the set.

입력 데이터 y를 쿼리하는 알고리즘 BFQuery(y)을 의사 코드로 표현하면 다음과 같다.
The algorithm BFQuery (y) for querying the input data y is represented by pseudo code as follows.

BFQuery (y)BFQuery (y)

1) for ( i = 1 to k )1) for (i = 1 to k)

2) if (Vector[hi(y)] = 0 ) return negative2) if (Vector [h i (y)] = 0) return negative

3) return positive
3) return positive

여기서 프로그래밍과 마찬가지로 k 개의 해시 함수들 hi(), 1≤i≤k을 이용하여 블룸 필터 BF의 비트 벡터 Vector[]를 참조하며, 한 해시 인덱스라도 0이 있으면 음성(negative)을 반환하고, 그렇지 않고 모두 1인 경우에만 양성(positive)을 반환한다.Here, as in the case of programming, the bit vector Vector [] of the Bloom filter BF is referred to using k hash functions h i (), 1 ≤ i ≤ k, a negative (negative) Otherwise, it returns positive only if all 1s.

블룸 필터가 해시 함수를 사용하기 때문에, 해시 함수가 서로 다른 입력 데이터에 대한 해시 값의 충돌(collision)을 피할 수 없는 한, 서로 다른 x, y 입력 데이터가 완전히 동일한 해시 인덱스들을 가질 가능성도 피할 수 없다. 데이터 x가 사전에 원소로서 프로그래밍되어 있을 때에, 다른 데이터 y가 입력된다면, 데이터 y에 의한 해시 인덱스에 해당하는 비트 포지션들은 모두 데이터 x의 프로그래밍에 의해 1로 설정되어 있을 것이므로, 블룸 필터는 데이터 y가 집합의 원소라고 판정한다. 이러한 잘못된 멤버쉽 판정을 거짓 양성 판정이라고 한다.Because the Bloom filter uses a hash function, it is unlikely that different x, y input data will have exactly the same hash indices, as long as the hash function can not avoid a collision of hash values for different input data none. If the data x is programmed as an element in advance and other data y is input, the bit positions corresponding to the hash index by the data y will all be set to 1 by programming the data x, Is an element of the set. Such an incorrect membership determination is called a false positive determination.

주어진 집합의 크기 n에 대해, 해싱 함수의 개수 k와 블룸 필터 비트 벡터의 크기 m을 늘리면 거짓 양성의 확률을 줄일 수 있다. 그러나 해싱 함수의 개수는 연산 속도와 복잡성에 관련이 있고, 비트 벡터의 크기는 메모리 사용량에 관련이 있으며, 이러한 요인들이 복잡하게 블룸 필터의 전체적인 성능에 영향을 미친다.For a given set size n, by increasing the number k of hashing functions and the size m of the Bloom filter bit vector, the probability of false positives can be reduced. However, the number of hashing functions is related to the computation speed and complexity, the size of the bit vector is related to the memory usage, and these factors complicate the overall performance of the Bloom filter.

해시 함수의 개수 k = (m/n)*ln2일 때에 거짓 양성의 확률을 최소화할 수 있다고 알려져 있다.It is known that the probability of false positives can be minimized when the number of hash functions k = (m / n) * ln2.

예시적으로, 원소의 개수는 n이고, 이를 위해 블룸필터의 비트 벡터를 원소 엔트리(element entry)마다 32 비트 꼴로 부가되도록 설계한다면, 전체 블룸 필터의 비트 벡터의 크기 m = 32n이다. 이때 거짓 양성의 확률을 최소화하는 해시 함수의 개수 k는 (m/n)*ln2 = 32ln2 ≒ 22이다.Illustratively, if the number of elements is n and the bit vector of the Bloom filter is designed to be added in 32 bits for each element entry, then the size of the bit vector of the entire Bloom filter is m = 32n. The number k of hash functions minimizing the probability of false positives is (m / n) * ln2 = 32ln2 22.

한편, 본 출원의 발명자는 기존의 단일 블룸 필터 구조에서 k 개의 해싱 함수들을 가지고 생성된 k 개의 해싱 인덱스들 및 거짓 양성 판정 현상을 관찰하면서, 해싱 인덱스들 사이에 순서에 관한 정보가 활용되지 않고 있음을 발견하였다.Meanwhile, the inventor of the present application observes k hashing indices and false positive determination phenomena generated with k hashing functions in the existing single-bloom filter structure, and information about the order among the hashing indices is not utilized .

예를 들어, 원소 x에 대해 두 개의 해싱 함수 h1()과 h2()를 사용하여 프로그래밍하면 해싱 인덱스 h1(x)과 h2(x)을 얻을 수 있다. For example, if you program using two hashing functions h 1 () and h 2 () for an element x, you can get the hashing indices h 1 (x) and h 2 (x).

이때, 입력 데이터 y에 대해, 만약 해싱 인덱스 h1(y)=h1(x)이고 또한 h2(y)=h2(x)라면 두 개의 해싱 함수 h1()과 h2()를 이용하여서는 입력 데이터 y를 원소 x와 결코 구별할 수 없으므로 거짓 양성 판정을 피할 수 없다.At this time, the, if the hash index h 1 (y) = h 1 (x) , and also h 2 (y) = h 2 (x) If the two hash functions h 1 () and h 2 () for the input data y The input data y can not be distinguished from the element x at all, so that a false positive judgment can not be avoided.

나아가, 입력 데이터 y에 대해, 만약 해싱 인덱스 h1(y)=h2(x)이고 또한 h2(y)=h1(x)라면, 종래의 단일 블룸 필터 구조에서는 단순히 해당 비트 포지션의 비트가 1인지 여부만 검사하므로, 마찬가지로 입력 데이터 y를 원소 x와 구별할 가능성이 없어 거짓 양성 판정을 피할 수 없을 것이다.Further, for input data y, if the hashing index h 1 (y) = h 2 (x) and h 2 (y) = h 1 (x), then in the conventional single- It is impossible to distinguish the input data y from the element x, and false positive judgment can not be avoided.

하지만, 만약 해싱 인덱스 h1(y)=h2(x)이고 또한 h2(y)=h1(x)이더라도, h1(y)≠h1(x)이거나 또는 h2(y)≠h2(x)라면, 후자의 관계를 식별할 수만 있다면 거짓 양성 판정을 피할 가능성이 있다.However, if the hash index h 1 (y) = h 2 (x) , and also h 2 (y) = h 1 (x) even if, h 1 (y) ≠ h 1 (x) or a or h 2 (y) ≠ If h 2 (x), there is a possibility to avoid false positives if the latter relationship can be discerned.

다시 말해, 만약 해싱 함수와 해싱 인덱스들의 상관 관계에 관한 정보를 프로그래밍 과정이나 쿼리 과정 중에 유지할 수 있다면, 다시 말해, h1(y)≠h1(x)이거나 또는 h2(y)≠h2(x)임을 판단할 수 있다면, 데이터 y는 원소 x와 명확히 구별할 수 있을 것이고 데이터 y의 거짓 양성 판정을 피할 가능성이 있다.In other words, if h 1 (y) ≠ h 1 (x) or h 2 (y) ≠ h 2 (x), then the data y can be clearly distinguished from the element x and there is a possibility of avoiding a false positive determination of the data y.

본 출원의 발명자는 이러한 가능성에 따라 서브 블룸 필터들을 가지는 블룸 필터를 아래와 같이 제안한다.The inventor of the present application proposes a bloom filter having sub-bloom filters according to this possibility as follows.

도 1은 본 발명의 일 실시예에 따른 서브 블룸 필터들을 가지는 블룸 필터의 프로그래밍을 예시한 개념도이다.1 is a conceptual diagram illustrating programming of a bloom filter having sub-bloom filters according to an embodiment of the present invention.

도 1을 참조하면, 블룸 필터는 예를 들어 헤드(head), 바디(body) 및 테일(tail)로 지칭되는 3 개의 서브 블룸 필터들(BF1, BF2, BF3)과 3 개의 해시 함수 서브그룹들(HS1, HS2, HS3)로 구성된다.Referring to FIG. 1, a Bloom filter includes three sub-blob filters (BF 1 , BF 2 , BF 3 ), referred to for example as head, body and tail, and three hash functions And subgroups (HS 1 , HS 2 , HS 3 ).

여기서, 예시적으로 3 개의 서브 블룸 필터들(BF1, BF2, BF3)의 각각의 크기는 m/k, m(k-2)/k 및 m/k이며, 서브 블룸 필터들의 크기의 총합은 m이다. 3 개 해시 함수 서브그룹들(HS1, HS2, HS3)은 각각 첫 해시 함수 h1(), 다음 복수의 해시 함수들 h2() 내지 hk-1() 및 마지막 해시 함수 hk()를 가지는 것으로 예시되며, 해시 함수들 및 해시 인덱스들의 총 수는 k 개이다.The size of each of the three sub-blob filters BF 1 , BF 2 and BF 3 is m / k, m (k-2) / k and m / k, The sum is m. Three hash function sub-groups (HS 1, HS 2, HS 3) are respectively the first hash function h 1 (), the following plurality of hash function h 2 () to h k-1 (), and the last hash function h k (), And the total number of hash functions and hash indexes is k.

원소 x의 프로그래밍 시에, 예시적으로 첫 해시 인덱스 h1(x)는 헤드 서브 블룸 필터 BF1에 설정되고, 다음 해시 인덱스 h2(x) 내지 hk-1(x)는 각각 바디 서브 블룸 필터 BF2에 설정되며, 마지막 해시 인덱스 hk(x)는 테일 서브 블룸 필터 BF3에 설정된다.The first hash index h 1 (x) is set to the head sub-bloom filter BF 1 and the next hash indices h 2 (x) to h k-1 (x) Filter BF 2 , and the last hash index h k (x) is set in the tail sub-bloom filter BF 3 .

예시적으로 원소 x에 대해, 첫 해시 인덱스 h1(x)=1은 헤드 서브 블룸 필터 BF1의 비트 포지션 1에 설정되고, 다음 해시 인덱스 h2(x) 내지 hk-1(x)=3, 5, 6, 10은 각각 바디 서브 블룸 필터 BF2의 비트 포지션들 3, 5, 6, 10에 설정되며, 마지막 해시 인덱스 hk(x)=4는 테일 서브 블룸 필터 BF3의 비트 포지션 4에 설정된다.Illustratively, for element x, the first hash index h 1 (x) = 1 is set to bit position 1 of the head subbubble filter BF 1 and the next hash index h 2 (x) to h k-1 (x) = 3, 5, 6, and 10, respectively is set to the body sub-bloom filter bit position s 3, 5, 6, 10, BF 2, last hash index h k (x) = 4 is the tail sub bloom filter BF 3 bit positions Lt; / RTI >

따라서, 해시 인덱스들의 순서 정보가 프로그래밍 과정 중에 전부 또는 부분적으로 유지될 수 있다.Thus, the order information of the hash indexes can be maintained in whole or in part during the programming process.

도 2는 본 발명의 일 실시예에 따른 서브 블룸 필터들을 가지는 블룸 필터에 대한 멤버쉽 쿼리를 예시한 개념도이다.2 is a conceptual diagram illustrating a membership query for a bloom filter having sub-bloom filters according to an embodiment of the present invention.

도 2를 참조하면, 블룸 필터는 도 1과 마찬가지로 헤드, 바디 및 테일로 지칭되는 3 개의 서브 블룸 필터들(BF1, BF2, BF3)과 3 개의 해시 함수 서브그룹들(HS1, HS2, HS3)로 구성되어 있다.Referring to FIG. 2, the Bloom filter includes three sub-blob filters BF 1 , BF 2 and BF 3 , referred to as head, body and tail, and three hash function subgroups HS 1 and HS 2 , 2 , HS 3 ).

여기서, 예시적으로 3 개의 서브 블룸 필터들(BF1, BF2, BF3)의 각각의 크기는 m/k, m(k-2)/k 및 m/k이며, 서브 블룸 필터들의 크기의 총합은 m이다. 3 개 해시 함수 서브그룹들(HS1, HS2, HS3)은 각각 첫 해시 함수 h1(), 다음 복수의 해시 함수들 h2() 내지 hk-1() 및 마지막 해시 함수 hk()를 가지는 것으로 예시되며, 해시 함수들 및 해시 인덱스들의 총 수는 k 개이다.The size of each of the three sub-blob filters BF 1 , BF 2 and BF 3 is m / k, m (k-2) / k and m / k, The sum is m. Three hash function sub-groups (HS 1, HS 2, HS 3) are respectively the first hash function h 1 (), the following plurality of hash function h 2 () to h k-1 (), and the last hash function h k (), And the total number of hash functions and hash indexes is k.

입력 데이터 y의 멤버쉽 쿼리가 있으면, 첫 해시 인덱스 h1(y)는 헤드 서브 블룸 필터 BF1에서 검증되고, 다음 해시 인덱스 h2(y) 내지 hk-1(y)는 바디 서브 블룸 필터 BF2에서 각각 검증되며, 마지막 해시 인덱스 hk(y)는 테일 서브 블룸 필터 BF3에서 검증된다.If there is a membership query of input data y, the first hash index h 1 (y) is verified in the head sub-bloom filter BF 1 and the next hash indices h 2 (y) to h k-1 2 , and the last hash index h k (y) is verified in the tail sub-bloom filter BF 3 .

예시적으로 입력 데이터 y에 대해, 첫 해시 인덱스 h1(y)=1은 헤드 서브 블룸 필터 BF1의 비트 포지션 1에서 검증되고, 다음 해시 인덱스 h2(y) 내지 hk-1(y)=3, 5, 6, 9은 각각 바디 서브 블룸 필터 BF2의 비트 포지션들 3, 5, 6, 10에서 검증되며, 마지막 해시 인덱스 hk(y)=4는 테일 서브 블룸 필터 BF3의 비트 포지션 4에서 검증된다.Illustratively, for input data y, the first hash index h 1 (y) = 1 is verified at bit position 1 of the head subbubble filter BF 1 and the next hash index h 2 (y) to h k-1 (y) = 3, 5, 6, 9 are each body sub bloom filter BF 2 bit position s 3, 5, 6, is verified in 10 of the last hash index h k (y) = 4 is tail sub bloom filter bit of BF 3 It is verified at position 4.

따라서, 해시 인덱스들의 순서 정보가 쿼리 과정 중에서도 전부 또는 부분적으로 유지될 수 있다.Thus, the order information of the hash indexes can be maintained in whole or in part during the query process.

입력 데이터 y의 멤버쉽 쿼리는 만약 한 서브 블룸 필터에서라도 음성 판정이 나오면 최종 음성 판정되며, 모든 서브 블룸 필터에서 양성 판정이 나와야 최종 양성 판정된다.The membership query of input data y is a final speech decision if a negative decision is made in one sub-bloom filter and a positive decision in all sub-bloom filters is final positive.

이러한 구성을 좀더 일반화시키면 다음과 같다.This configuration can be generalized as follows.

본 발명의 블룸 필터는 총 m 개의 비트 포지션을 가지는 j(j는 2부터 k까지의 정수) 개의 서브 블룸 필터들 및 k 개의 해시 함수들로 구성된다.The Bloom filter of the present invention is composed of j hash functions (j is an integer from 2 to k) having a total of m bit positions, and k hash functions.

j 개의 서브 블룸 필터들 중 i 번째(i는 1부터 j까지의 정수) 서브 블룸 필터의 크기 mi를 모두 합하면 m 이다. Sum of all the sizes m i of the i-th subbubble filter (i is an integer from 1 to j) among the j subbubble filters is m.

원소의 개수를 n이라 하면, k = (m/n)*ln2에 가장 가까운 정수일 때 거짓 양성 확률이 가장 낮은 최적값이라고 알려져 있다.Assuming that the number of elements is n, it is known that the false positive probability is the lowest optimal value when k = (m / n) * ln2 is the closest integer.

바람직하게는, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는

Figure 112013083456644-pat00001
이다. [X]는 가우스 기호 또는 최대 정수 함수(greatest integer function)로서, 실수 X보다 크지 않으면서 가장 큰 정수이다.Preferably, the size of at least one of the sub-bloom filters is
Figure 112013083456644-pat00001
to be. [X] is the Gaussian symbol or greatest integer function, the largest integer not greater than the real number X.

바람직하게는, j = 2이고, 서브 블룸 필터들 중 하나의 크기는

Figure 112013083456644-pat00002
인 정수이다. 나머지 하나의 크기는 산술적으로, 다시 말해
Figure 112013083456644-pat00003
으로 결정된다.Preferably, j = 2 and the size of one of the sub-
Figure 112013083456644-pat00002
Lt; / RTI > The size of the remaining one is arithmetic, in other words
Figure 112013083456644-pat00003
.

바람직하게는, j = 3이고, 서브 블룸 필터들 중 둘의 크기는

Figure 112013083456644-pat00004
인 정수이다. 나머지 하나의 크기는 산술적으로 결정될 수 있다.Preferably, j = 3 and the size of two of the sub-blob filters is
Figure 112013083456644-pat00004
Lt; / RTI > The size of the remaining one can be determined arithmetically.

예를 들어, 간단히 m이 k의 배수라면, 첫 번째(헤드)와 세 번째(테일) 서브 블룸 필터의 크기는 각각 m/k이고, 두 번째(바디) 서브 블룸 필터의 크기는 m(k-2)/k일 수 있다.For example, if m is a multiple of k, then the sizes of the first (head) and third (tail) subbubble filters are m / k and m (k- 2) / k.

바람직하게는 k보다 작은 j 개의 서브 블룸 필터들 중 j-1 개의 서브 블룸 필터들의 크기는

Figure 112013083456644-pat00005
인 정수 또는
Figure 112013083456644-pat00006
의 정수배인 정수이고, 나머지 하나의 크기는 산술적으로, 다시 말해 총 비트 포지션의 크기 m에서 j-1 개의 서브 블룸 필터들의 크기를 뺀 값으로서 결정될 수 있다.Preferably, the size of j-1 sub-blob filters among j sub-blob filters smaller than k is
Figure 112013083456644-pat00005
Integer or
Figure 112013083456644-pat00006
And the size of the remaining one can be determined arithmetically, that is, the size of the total bit position m minus the size of j-1 sub-blob filters.

만약 j = k라면, 서브 블룸 필터들의 크기는

Figure 112013083456644-pat00007
인 정수로 결정될 수 있다.If j = k, the size of the subbubble filters is
Figure 112013083456644-pat00007
May be determined.

다른 실시예에서, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는

Figure 112013083456644-pat00008
인 정수일 수 있다.
Figure 112013083456644-pat00009
는 천정 함수(ceiling function)로서, 실수 X보다 작지 않으면서 가장 작은 정수이다.In another embodiment, the size of at least one of the sub-bloom filters is
Figure 112013083456644-pat00008
Lt; / RTI >
Figure 112013083456644-pat00009
Is the ceiling function and is the smallest integer not smaller than the real number X.

실시예에 따라, j 개의 서브 블룸 필터들 중 i 번째 서브 블룸 필터의 크기는 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 반드시 i 번째 서브 블룸 필터 내에 설정될 수 있는 조건 하에서 결정될 수 있다.According to an embodiment, the size of the i-th sub-bloom filter among j-th sub-bloom filters is determined by the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among j- Th < / RTI > sub-bloom filter.

다시 말해, 예를 들어, i 번째 해시 인덱스 서브 그룹의 최대 해시 인덱스가 512라면, i 번째 서브 블룸 필터의 크기는 어떠한 해시 인덱스라도 서브 블룸 필터 내에서 설정될 수 있도록 적어도 512보다 큰 크기로 결정될 수 있다.In other words, for example, if the maximum hash index of the ith hash index subgroup is 512, then the size of the ith subblock filter may be determined to be at least 512 in size so that any hash index can be set in the subbloom filter have.

k 개의 해시 함수들은 j 개의 해시 함수 서브그룹으로 분할되고, 그에 따라 k 개의 해시 인덱스들도 j 개의 해시 인덱스 서브그룹으로 분할된다. The k hash functions are divided into j hash function subgroups, whereby k hash indexes are also divided into j hash index subgroups.

이때, 프로그래밍 시에는 원소 x에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들은 i 번째 서브 블룸 필터에 설정된다.At the time of programming, the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among the j hash function subgroups with respect to the element x are set in the i-th sub-blob filter.

바람직하게는, j 개의 해시 함수 서브그룹들 또는 해시 인덱스 서브그룹들의 각각에 속하는 해시 함수들 또는 해시 인덱스들의 개수는 j 개의 서브 블룸 필터들의 각각의 길이에 상응하여 결정될 수 있고, 그 역의 관계도 성립할 수 있다.Preferably, the number of hash functions or hash indexes belonging to each of the j hash function subgroups or hash index subgroups can be determined corresponding to the length of each of the j subblock filters, and vice versa Can be established.

예를 들어, 총 10 개의 해시 함수들을 사용하는 블룸 필터를 5 개의 서브 블룸 필터들로 나누고 서브 블룸 필터들의 각각의 길이가 m/k, 2m/k, 2m/k, 4m/k 및 m/k라면, 10 개의 해시 함수들 또는 해시 인덱스들로써 구성되는 5 개의 해시 함수 서브그룹들 또는 해시 인덱스 서브그룹들의 각각에 속하는 해시 함수들 또는 해시 인덱스들의 개수는 각각 1 개, 2 개, 2 개, 4 개 및 1 개일 수 있다.For example, a Bloom filter using a total of 10 hash functions is divided into five sub-bloom filters and the length of each of the sub-bloom filters is m / k, 2m / k, 2m / k, 4m / , The number of hash functions or hash indexes belonging to each of the five hash function subgroups or hash index subgroups composed of 10 hash functions or hash indexes is 1, 2, 2, 4 And one.

쿼리 시에는 입력 데이터 y에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들은 i 번째 서브 블룸 필터에서 검증된다.At the time of querying, the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data y are verified in the i-th sub-blob filter.

이렇게 하여, 해시 인덱스들의 순서 정보가 프로그래밍 과정 및 쿼리 과정 중에 전부 또는 부분적으로 유지될 수 있다.In this way, the order information of the hash indexes can be maintained in whole or in part during the programming process and the query process.

각각의 해시 인덱스 서브그룹들에 상응하는 각각의 서브 블룸 필터들에서 모두 양성 판정이 나와야 최종적으로 양성 판정을 내릴 수 있다. 어느 하나의 서브 블룸 필터에서만 음성 판정이 나오고 나머지 서브 블룸 필터들에서 양성 판정이 나와도 최종적으로 음성 판정이 내려진다. 따라서, 거짓 양성의 가능성은 대단히 감소한다.All positive sub-blob filters corresponding to the respective hash index subgroups must be positive so that a final positive decision can be made. A negative decision is made only in one of the sub-bloom filters and a positive decision is made in the remaining sub-bloom filters, and finally a negative decision is made. Thus, the probability of false positives is greatly reduced.

도 3은 본 발명의 일 실시예에 따른 서브 블룸 필터들을 이용한 블룸 필터 처리 방법에 따라 복수 개의 서브 블룸 필터들을 사용할 경우에 나타난 거짓 양성의 빈도를 예시한 표이다.3 is a table illustrating the frequency of false positives when using a plurality of sub-blob filters according to a bloom filter processing method using sub-bloom filters according to an embodiment of the present invention.

거짓 양성 검출 실험은, 각각의 주어진 집합의 크기 및 블룸 필터의 전체 비트 벡터 크기 조건 하에서, 하나부터 다섯 개의 서브 블룸 필터를 이용하여 프로그래밍하고, 프로그래밍된 서브 블룸 필터들에 대해, 집합에 속하지 않도록 랜덤하게 생성되는 입력 데이터를 집합 크기의 세 배만큼 생성하여 멤버쉽 쿼리를 수행하도록 진행되었다.The false positive detection experiment is performed by programming with one to five sub-bloom filters under the condition of the size of each given set and the full bit-vector magnitude condition of the Bloom filter, and for the programmed sub-bloom filters, And the input data is generated three times as much as the set size to perform the membership query.

입력 데이터는 집합에 속하지 않도록 생성되므로 모두 음성으로 판정되어야 정상이고, 만약 그러한 입력 데이터의 멤버쉽 쿼리가 양성으로 판정된다면 이는 반드시 거짓 양성일 수 밖에 없다.Since the input data is generated not to belong to the set, it is normal that all of the input data are judged to be voice, and if the membership query of such input data is determined to be positive, this must be false positive.

도 3에 따르면, 하나의 서브 블룸 필터를 이용하는 경우(1BF)는 실질적으로 기존의 블룸 필터 구조와 다르지 않는데, 집합의 크기가 상대적으로 작은 10K, 즉 1만 개이고 블룸 필터의 크기, 즉 메모리 점유량이 40 KB일 때에, 거짓 양성의 빈도가 없거나 매우 낮다. 하지만 집합의 크기가 점점 커지면서 거짓 양성의 빈도가 급증하는데, 예를 들어 집합의 크기가 400K, 즉 40만 개이고 블룸 필터의 크기가 1600 KB일 때, 120만 회의 비 멤버 입력 데이터의 멤버쉽 쿼리에서 483 회의 거짓 양성이 일어났다.According to FIG. 3, the case (1BF) using one sub-bloom filter is substantially the same as that of the conventional bloom filter structure. The size of the set is relatively small 10K, that is, 10,000, and the size of the bloom filter, At 40 KB, the frequency of false positives is low or very low. However, as the size of the set grows larger, the frequency of false positives increases rapidly. For example, when the size of the set is 400K, that is, 400K, and the size of the Bloom filter is 1600K, the membership query of 1.2 million non- A false positive has occurred.

다시 말해, 기존의 블룸 필터 구조를 그대로 이용한다면, 쿼리 1만 회에 4 회 이상의 거짓 양성이 일어나는 꼴이므로, 응용 분야에 따라서는 용인될 수 없는 수준일 수도 있는, 적지 않은 거짓 양성이 일어남을 의미한다.In other words, if the existing Bloom filter structure is used as it is, false positives occur more than 4 times in 10,000 queries, which means that there may be a few false positives do.

두 개의 서브 블룸 필터들을 이용하는 경우(2BF)는, 1BF와 동일한 집합 크기, 동일한 블룸 필터 메모리 점유량, 동일한 회수의 비 멤버 입력 데이터의 멤버쉽 쿼리 조건 하에서, 거짓 양성의 횟수가 1BF에 비해 많게는 1/3 가량으로 줄어들었다. 메모리와 속도 등 모든 외형적 조건이 동일함에도 불구하고 거짓 양성 성능이 기존의 블룸 필터에 비해 두 배나 향상된 것이다.In the case of using two sub-blob filters (2BF), under the membership query conditions of the same set size as 1BF, the same bloom filter memory occupation, and the same number of non-member input data, the number of false positives is 1/3 Respectively. Despite the same memory and speed conditions, the false positive performance is twice as high as the conventional Bloom filter.

나아가, 세 개의 서브 블룸 필터들을 이용하는 경우(3BF)는, 1BF와 동일한 집합 크기, 동일한 블룸 필터 메모리 점유량, 동일한 회수의 비 멤버 입력 데이터의 멤버쉽 쿼리 조건 하에서, 거짓 양성의 횟수가 1BF에 비해 많게는 15% 정도까지 줄어들었다.Further, in the case of using three sub-blob filters (3BF), under the membership query conditions of the same set size, the same bloom filter memory occupation, and the same number of non-member input data as 1BF, the number of false positives is more than 15 %.

네 개의 서브 블룸 필터들을 이용하는 경우(4BF)는, 1BF와 동일한 집합 크기, 동일한 블룸 필터 메모리 점유량, 동일한 회수의 비 멤버 입력 데이터의 멤버쉽 쿼리 조건 하에서, 거짓 양성의 횟수가 1BF에 비해 많게는 5% 가량으로 줄어들었다.In the case of using four sub-bloom filters (4BF), under the membership query conditions of the same set size, the same bloom filter memory occupation, and the same number of non-member input data as 1BF, the number of false positives is 5% .

다섯 개의 서브 블룸 필터들을 이용하는 경우(5BF)는, 1BF와 동일한 집합 크기, 동일한 블룸 필터 메모리 점유량, 동일한 회수의 비 멤버 입력 데이터의 멤버쉽 쿼리 조건 하에서, 거짓 양성의 횟수가 1BF에 비해 많게는 1.2% 가량으로 줄어들었다.In the case of using five sub-bloom filters (5BF), under the membership query conditions of the same set size, the same bloom filter memory occupation, and the same number of non-member input data as 1BF, the number of false positives is 1.2% .

이는 쿼리 20만 회에 1회 수준의 거짓 양성이 일어나는 꼴이므로, 용인 범위(tolerance)가 훨씬 엄격한 응용 분야에도 적용될 수 있다.This can be applied to applications where the tolerance is much more stringent, since there is a one-time false positive in 200,000 queries.

이를 통해 본 발명의 향상된 거짓 양성 성능을 실증할 수 있었다.Thus, the improved false positive performance of the present invention can be demonstrated.

도 4는 본 발명의 일 실시예에 따른 서브 블룸 필터들을 이용한 블룸 필터 처리 장치를 예시한 블록도이다.4 is a block diagram illustrating an apparatus for processing a bloom filter using sub-bloom filters according to an embodiment of the present invention.

도 4를 참조하면, 블룸 필터 처리 장치(40)는 해시 인덱스 생성부(41), 서브 블룸 필터 저장부(42), 프로그래밍부(43) 및 쿼리부(44)를 포함할 수 있다.4, the bloom filter processing apparatus 40 may include a hash index generating unit 41, a subbubble filter storing unit 42, a programming unit 43, and a query unit 44.

해시 인덱스 생성부(41)는 k 개의 해시 함수들을 j 개(j는 2부터 k까지의 정수)의 해시 함수 서브그룹으로 분할하여, 입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성한다.The hash index generation unit 41 divides k hash functions into hash function subgroups of j (j is an integer from 2 to k), divides the input hash elements into j hash index subgroups K < / RTI >

서브 블룸 필터 저장부(42)는 총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 보유하며, j 개의 해시 함수 서브그룹들 중 i 번째(i는 1부터 j까지의 정수) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 연결한다.The sub-bloom filter storage unit 42 has j sub-blob filters having m total bit positions, and the i-th (where i is an integer from 1 to j) hash function sub-group among the j hash function sub- The hash indexes of the i-th hash index subgroup generated by the i-th sub-blob filter are connected to the i-th sub-bloom filter.

j 개의 서브 블룸 필터들 중 i 번째(i는 1부터 j까지의 정수) 서브 블룸 필터의 크기 mi를 모두 합하면 m 이다.Sum of all the sizes m i of the i-th subbubble filter (i is an integer from 1 to j) among the j subbubble filters is m.

바람직하게는, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는

Figure 112013083456644-pat00010
이다. Preferably, the size of at least one of the sub-bloom filters is
Figure 112013083456644-pat00010
to be.

바람직하게는, j = 2이고, 서브 블룸 필터들 중 하나의 크기는

Figure 112013083456644-pat00011
인 정수이다. 나머지 하나의 크기는 산술적으로, 다시 말해
Figure 112013083456644-pat00012
으로 결정된다.Preferably, j = 2 and the size of one of the sub-
Figure 112013083456644-pat00011
Lt; / RTI > The size of the remaining one is arithmetic, in other words
Figure 112013083456644-pat00012
.

바람직하게는, j = 3이고, 서브 블룸 필터들 중 둘의 크기는

Figure 112013083456644-pat00013
인 정수이다. 나머지 하나의 크기는 산술적으로 결정될 수 있다.Preferably, j = 3 and the size of two of the sub-blob filters is
Figure 112013083456644-pat00013
Lt; / RTI > The size of the remaining one can be determined arithmetically.

바람직하게는 k보다 작은 j 개의 서브 블룸 필터들 중 j-1 개의 서브 블룸 필터들의 크기는

Figure 112013083456644-pat00014
인 정수 또는
Figure 112013083456644-pat00015
의 정수배인 정수이고, 나머지 하나의 크기는 산술적으로 결정될 수 있다.Preferably, the size of j-1 sub-blob filters among j sub-blob filters smaller than k is
Figure 112013083456644-pat00014
Integer or
Figure 112013083456644-pat00015
And the size of the remaining one can be determined arithmetically.

만약 j = k라면, 서브 블룸 필터들의 크기는

Figure 112013083456644-pat00016
인 정수로 결정될 수 있다.If j = k, the size of the subbubble filters is
Figure 112013083456644-pat00016
May be determined.

다른 실시예에서, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는

Figure 112013083456644-pat00017
인 정수일 수 있다.In another embodiment, the size of at least one of the sub-bloom filters is
Figure 112013083456644-pat00017
Lt; / RTI >

실시예에 따라, j 개의 서브 블룸 필터들 중 i 번째 서브 블룸 필터의 크기는 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 반드시 i 번째 서브 블룸 필터 내에 설정될 수 있는 조건 하에서 결정될 수 있다.According to an embodiment, the size of the i-th sub-bloom filter among j-th sub-bloom filters is determined by the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among j- Th < / RTI > sub-bloom filter.

프로그래밍부(43)는, 프로그래밍 시에 원소 x를 해시 인덱스 생성부(41)에 입력하고, 원소 x에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 서브 블룸 필터 저장부(42)의 i 번째 서브 블룸 필터에 설정하도록 동작한다.The programming unit 43 inputs the element x to the hash index generating unit 41 at the time of programming and generates the i-th hash index (i) generated by the i-th hash function subgroup among the j hash function subgroups And sets the hash indices of the subgroup in the i-th sub-bloom filter of the sub-bloom filter storage unit 42. [

쿼리부(44)는, 멤버쉽 쿼리 시에 입력 데이터 y를 해시 인덱스 생성부(41)에 입력하고, 입력 데이터 y에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들에 따라 서브 블룸 필터 저장부(42)의 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 입력 데이터 y의 멤버쉽을 검증한다.The query unit 44 inputs the input data y to the hash index generation unit 41 at the time of membership query and inputs i to the hash index generation unit 41 generated by the i-th hash function subgroup among the j hash function subgroups The membership of the input data y is verified based on the bit strings output from the i-th sub-blob filter of the sub-bloom filter storage unit 42 according to the hash indexes of the first hash index subgroup.

이렇게 하여, 해시 인덱스들의 순서 정보가 프로그래밍 과정 및 쿼리 과정 중에 전부 또는 부분적으로 유지될 수 있다.In this way, the order information of the hash indexes can be maintained in whole or in part during the programming process and the query process.

쿼리부(44)는 각각의 해시 인덱스 서브그룹들에 상응하는 각각의 서브 블룸 필터들에서 모두 비트 1이 출력되어야 최종적으로 양성 판정을 내릴 수 있다. 쿼리부(44)는 어느 하나라도 서브 블룸 필터에서 0이 나오면, 나머지 서브 블룸 필터들에서 모두 1이 나오더라도 최종적으로 음성 판정을 내린다.The query unit 44 may output a positive result in the event that bit 1 is output in each of the sub-blob filters corresponding to each hash index subgroup. If any one of the query units 44 outputs 0 in the sub-bloom filter, the query unit 44 finally makes a negative decision even if the remaining sub-blob filters are all 1's.

도 5는 본 발명의 일 실시예에 따른 서브 블룸 필터들을 이용한 블룸 필터 처리 방법을 예시한 순서도이다.5 is a flowchart illustrating a bloom filter processing method using sub-bloom filters according to an embodiment of the present invention.

먼저 단계(S51)에서, 입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하도록 j 개(j는 2부터 k까지의 정수)의 해시 함수 서브그룹으로 분할되는 k 개의 해시 함수들을 제공한다.First, in step S51, j (j is an integer from 2 to k) is divided into a hash function subgroup to generate k hash indexes divided into j hash index subgroups with respect to the input element or data. K < / RTI >

다음으로, 단계(S52)에서, j 개의 해시 함수 서브그룹들 중 i 번째(i는 1부터 j까지의 정수) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 i 번째 서브 블룸 필터에 연결되도록, 총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 제공한다.Next, in step S52, the hash indexes of the i-th hash index subgroup generated by the i-th (where i is an integer from 1 to j) hash function subgroups among the j hash function subgroups are stored in the i- J sub-bloom filters with a total of m bit positions to be connected to the Bloom filter.

단계(S53)에서, 프로그래밍 시에, 원소 x에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 설정한다.In step S53, the hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the element x at the time of programming, and the generated i- The hash indices of the group are set in the i-th sub-bloom filter.

단계(S54)에서, 멤버쉽 쿼리 시에 입력 데이터 y에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들 따라 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 입력 데이터 y의 멤버쉽을 검증한다.In step S54, hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data y at the time of membership query, and the generated i- The membership of the input data y is verified based on the bit strings output from the i-th sub-bloom filter according to the hash indices of the sub-group.

구체적으로, 단계(S54)에서는, 입력 데이터 y에 대해 해시 인덱스 서브그룹들의 각각에 상응하는 서브 블룸 필터들의 각각에서 모두 비트 1이 출력되어야 입력 데이터 y에 대해 양성으로 판정하고, 만약 어느 한 서브 블룸 필터라도 비트 0이 나오면, 음성으로 판정할 수 있다.Specifically, in step S54, it is determined that all of the sub-blob filters corresponding to each of the hash index subgroups for input data y are all positive for input data y when bit 1 is output, If bit 0 is displayed even with a filter, it can be judged by voice.

이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments, but, on the contrary, Modification is possible. Accordingly, the spirit of the present invention should be understood only in accordance with the following claims, and all of the equivalent or equivalent variations will fall within the scope of the present invention.

또한, 본 발명에 따른 장치는 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, 광학 디스크, 자기 테이프, 플로피 디스크, 하드 디스크, 비휘발성 메모리 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.Further, the apparatus according to the present invention can be implemented as a computer-readable code on a computer-readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. Examples of the recording medium include a ROM, a RAM, an optical disk, a magnetic tape, a floppy disk, a hard disk, a nonvolatile memory, and the like, and a carrier wave (for example, transmission via the Internet). The computer-readable recording medium may also be distributed over a networked computer system so that computer readable code can be stored and executed in a distributed manner.

40 블룸 필터 처리 장치
41 해시 인덱스 생성부
42 서브 블룸 필터 저장부
43 프로그래밍부
44 쿼리부
40 bloom filter processing device
41 hash index generation unit
42 sub-bubble filter storage unit
43 Programming
44 query portion

Claims (16)

k 개의 해시 함수들을 j 개(2≤j<k)의 해시 함수 서브그룹으로 분할하여, 입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하는 해시 인덱스 생성부;
총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 보유하며, j 개의 해시 함수 서브그룹들 중 i 번째(1≤i≤j) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 연결하는 서브 블룸 필터 저장부;
프로그래밍 시에 원소를 상기 해시 인덱스 생성부에 입력하고, 상기 원소에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터에 설정하는 프로그래밍부; 및
멤버쉽 쿼리 시에 입력 데이터를 상기 해시 인덱스 생성부에 입력하고, 상기 입력 데이터에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 생성되면, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들에 따라 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터에 대해 상기 해시 인덱스 서브그룹들의 각각에 상응하는 상기 서브 블룸 필터들의 각각에서 모두 비트 1이 출력되어야 입력 데이터에 대해 양성으로 판정하고, 만약 어느 한 서브 블룸 필터에서 비트 0이 나오면, 음성으로 판정하도록 동작함으로써 상기 입력 데이터의 멤버쉽을 검증하는 쿼리부를 포함하고,
상기 j 개의 서브 블룸 필터들 중 j-1 개의 서브 블룸 필터의 크기는
Figure 112015031095143-pat00035
인 정수 또는
Figure 112015031095143-pat00036
보다 크면서
Figure 112015031095143-pat00037
의 정수배인 정수로 결정되며, 나머지 하나의 서브 블룸 필터의 크기는 총 비트 포지션의 크기 m에서 j-1 개의 서브 블룸 필터들의 크기를 뺀 값으로 결정되며, 이때 [X]는 정수 함수(greatest integer function)로서, 실수 X보다 크지 않으면서 가장 큰 정수이고,
상기 j 개의 서브 블룸 필터들 중 i 번째 서브 블룸 필터의 크기는 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 반드시 i 번째 서브 블룸 필터 내에 설정될 수 있는 조건을 만족하도록 결정되는 것을 특징으로 하는 블룸 필터 처리 장치.
a hash index creation process for generating k hash indexes divided into j hash index subgroups by dividing k hash functions into j (2? j <k) hash function subgroups with respect to the input element or data part;
A hash index of the i-th hash index subgroup generated by the i-th (1? I? J) hash function subgroup of j hash function subgroups having j total number of bit positions, A sub-bloom filter storage unit for connecting the sub-blob filter to the i-th sub-bloom filter;
The hash index of the i-th hash index subgroup generated by the i-th hash function subgroup among the j hash function subgroups with respect to the element is input to the sub- A programming unit for setting the i-th sub-blob filter in the storage unit; And
When the hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data, And for each of the hash index subgroups corresponding to each of the hash index subgroups based on bit strings output from the i &lt; th &gt; subblock filter of the subbubble filter storage unit according to the generated hash indexes of the i & Includes a query unit that verifies the membership of the input data by determining that all of the sub-bloom filters are positive for input data if bit 1 should be output and if the bit 0 is found in any one of the sub-bloom filters, and,
The size of j-1 sub-blob filters among the j sub-blob filters is
Figure 112015031095143-pat00035
Integer or
Figure 112015031095143-pat00036
Bigger
Figure 112015031095143-pat00037
And the size of the remaining one sub-blob filter is determined by subtracting the size of j-1 sub-blob filters from the size m of the total bit position, where [X] is a greatest integer function, which is the largest integer not greater than the real number X,
The size of the i-th sub-bloom filter among the j-number of sub-blob filters is determined by the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among j- Is determined so as to satisfy a condition that can be set in the bloom filter.
청구항 1에 있어서, j=2이고, 상기 서브 블룸 필터들 중 i=1인 서브 블룸 필터의 크기는
Figure 112015031095143-pat00038
이며, i=2인 서브 블룸 필터의 크기는
Figure 112015031095143-pat00039
인 것을 특징으로 하는 블룸 필터 처리 장치.
2. The method of claim 1, wherein the size of the sub-blob filter with j = 2 and i = 1 of the sub-
Figure 112015031095143-pat00038
, And the size of the sub-bloom filter with i = 2 is
Figure 112015031095143-pat00039
And a filter unit for filtering the bloom.
청구항 1에 있어서, j=3이고, 상기 서브 블룸 필터들 중 i=1 또는 i=3인 서브 블룸 필터들의 크기는 각각
Figure 112015031095143-pat00040
이며, i=2인 서브 블룸 필터의 크기는
Figure 112015031095143-pat00041
인 것을 특징으로 하는 블룸 필터 처리 장치.
2. The method of claim 1, wherein j = 3 and the size of the sub-bloom filters with i = 1 or i = 3 among the sub-
Figure 112015031095143-pat00040
, And the size of the sub-bloom filter with i = 2 is
Figure 112015031095143-pat00041
And a filter unit for filtering the bloom.
삭제delete k 개의 해시 함수들을 j 개(2≤j<k)의 해시 함수 서브그룹으로 분할하여, 입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하는 해시 인덱스 생성부;
총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 보유하며, j 개의 해시 함수 서브그룹들 중 i 번째(1≤i≤j) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 연결하는 서브 블룸 필터 저장부;
프로그래밍 시에 원소를 상기 해시 인덱스 생성부에 입력하고, 상기 원소에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터에 설정하는 프로그래밍부; 및
멤버쉽 쿼리 시에 입력 데이터를 상기 해시 인덱스 생성부에 입력하고, 상기 입력 데이터에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 생성되면, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들에 따라 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터에 대해 상기 해시 인덱스 서브그룹들의 각각에 상응하는 상기 서브 블룸 필터들의 각각에서 모두 비트 1이 출력되어야 입력 데이터에 대해 양성으로 판정하고, 만약 어느 한 서브 블룸 필터에서 비트 0이 나오면, 음성으로 판정하도록 동작함으로써 상기 입력 데이터의 멤버쉽을 검증하는 쿼리부를 포함하고,
상기 j 개의 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는
Figure 112015031095143-pat00042
인 정수로 결정되고, 여기서
Figure 112015031095143-pat00043
는 천정 함수(ceiling function)로서, 실수 X보다 작지 않으면서 가장 작은 정수이며,
상기 j 개의 서브 블룸 필터들 중 i 번째 서브 블룸 필터의 크기는 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 반드시 i 번째 서브 블룸 필터 내에 설정될 수 있는 조건을 만족하도록 결정되는 것을 특징으로 하는 블룸 필터 처리 장치.
a hash index creation process for generating k hash indexes divided into j hash index subgroups by dividing k hash functions into j (2? j <k) hash function subgroups with respect to the input element or data part;
A hash index of the i-th hash index subgroup generated by the i-th (1? I? J) hash function subgroup of j hash function subgroups having j total number of bit positions, A sub-bloom filter storage unit for connecting the sub-blob filter to the i-th sub-bloom filter;
The hash index of the i-th hash index subgroup generated by the i-th hash function subgroup among the j hash function subgroups with respect to the element is input to the sub- A programming unit for setting the i-th sub-blob filter in the storage unit; And
When the hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data, And for each of the hash index subgroups corresponding to each of the hash index subgroups based on bit strings output from the i &lt; th &gt; subblock filter of the subbubble filter storage unit according to the generated hash indexes of the i & Includes a query unit that verifies the membership of the input data by determining that all of the sub-bloom filters are positive for input data if bit 1 should be output and if the bit 0 is found in any one of the sub-bloom filters, and,
The size of at least one sub-blob filter among the j sub-
Figure 112015031095143-pat00042
, Where &lt; RTI ID = 0.0 &gt;
Figure 112015031095143-pat00043
Is the ceiling function, the smallest integer not smaller than the real number X,
The size of the i-th sub-bloom filter among the j-number of sub-blob filters is determined by the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among j- Is determined so as to satisfy a condition that can be set in the bloom filter.
삭제delete 삭제delete 삭제delete 컴퓨터에서 수행되는 블룸 필터 처리 방법으로서,
상기 컴퓨터가,
입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하도록 j 개(2≤j<k)의 해시 함수 서브그룹으로 분할되는 k 개의 해시 함수들을 제공하는 단계;
상기 j 개의 해시 함수 서브그룹들 중 i 번째(1≤i≤j) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 i 번째 서브 블룸 필터에 연결되도록, 총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 제공하는 단계;
프로그래밍 시에, 원소에 관하여 상기 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 설정하는 단계; 및
멤버쉽 쿼리 시에 입력 데이터에 관하여 상기 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들 따라 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터의 멤버쉽을 검증하는 단계를 포함하고,
상기 j 개의 서브 블룸 필터들 중 j-1 개의 서브 블룸 필터의 크기는
Figure 112015031095143-pat00044
인 정수 또는
Figure 112015031095143-pat00045
보다 크면서
Figure 112015031095143-pat00046
의 정수배인 정수로 결정되며, 나머지 하나의 서브 블룸 필터의 크기는 총 비트 포지션의 크기 m에서 j-1 개의 서브 블룸 필터들의 크기를 뺀 값으로 결정되며, 이때 [X]는 정수 함수(greatest integer function)로서, 실수 X보다 크지 않으면서 가장 큰 정수이며,
상기 j 개의 서브 블룸 필터들 중 i 번째 서브 블룸 필터의 크기는 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 반드시 i 번째 서브 블룸 필터 내에 설정될 수 있는 조건을 만족하도록 결정되고,
상기 입력 데이터의 멤버쉽을 검증하는 단계는,
상기 입력 데이터에 대해 상기 해시 인덱스 서브그룹들의 각각에 상응하는 상기 서브 블룸 필터들의 각각에서 모두 비트 1이 출력되어야 입력 데이터에 대해 양성으로 판정하고, 만약 어느 한 서브 블룸 필터에서 비트 0이 나오면, 음성으로 판정하는 단계를 포함하는 것을 특징으로 하는 블룸 필터 처리 방법.
A method of processing a bloom filter performed on a computer,
The computer comprising:
Providing k hash functions dividing into j hash function subgroups (2 < = j &lt; k) to produce k hash indices divided into j hash index subgroups for the input element or data;
The hash indexes of the i-th hash index subgroup generated by the i-th (1? I? J) hash function subgroup among the j hash function subgroups are connected to the i-th sub- Providing j sub-blob filters with the sub-blob filters;
The hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the elements, and the hash indexes of the generated ith hash index subgroup are denoted by i Th sub-bloom filter; And
The hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data at the time of membership query, and the hash indexes of the generated i- And verifying the membership of the input data based on bit strings output from the i-th sub-blob filter, respectively,
The size of j-1 sub-blob filters among the j sub-blob filters is
Figure 112015031095143-pat00044
Integer or
Figure 112015031095143-pat00045
Bigger
Figure 112015031095143-pat00046
And the size of the remaining one sub-blob filter is determined by subtracting the size of j-1 sub-blob filters from the size m of the total bit position, where [X] is a greatest integer function, which is the largest integer not greater than the real number X,
The size of the i-th sub-bloom filter among the j-number of sub-blob filters is determined by the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among j- Lt; RTI ID = 0.0 &gt; a &lt; / RTI &gt;
Wherein the step of verifying the membership of the input data comprises:
A bit 1 is output in each of the sub-bloom filters corresponding to each of the hash index subgroups, and if the bit 0 is output from any of the sub-bloom filters, &Lt; / RTI &gt; of the bloom filter.
청구항 9에 있어서, j=2이고, 상기 서브 블룸 필터들 중 i=1인 서브 블룸 필터의 크기는
Figure 112015031095143-pat00047
이며, i=2인 서브 블룸 필터의 크기는
Figure 112015031095143-pat00048
인 것을 특징으로 하는 블룸 필터 처리 방법.
The method of claim 9, wherein j = 2 and the size of the sub-bloom filter with i = 1 among the sub-
Figure 112015031095143-pat00047
, And the size of the sub-bloom filter with i = 2 is
Figure 112015031095143-pat00048
Wherein the bloom filter processing method comprises the steps of:
청구항 9에 있어서, j=3이고, 상기 서브 블룸 필터들 중 i=1 또는 i=3인 서브 블룸 필터들의 크기는 각각
Figure 112015031095143-pat00049
이며, i=2인 서브 블룸 필터의 크기는
Figure 112015031095143-pat00050
인 것을 특징으로 하는 블룸 필터 처리 방법.
The method of claim 9, wherein the size of the sub-bloom filters with j = 3 and i = 1 or i = 3 among the sub-
Figure 112015031095143-pat00049
, And the size of the sub-bloom filter with i = 2 is
Figure 112015031095143-pat00050
Wherein the bloom filter processing method comprises the steps of:
삭제delete 컴퓨터에서 수행되는 블룸 필터 처리 방법으로서,
상기 컴퓨터가,
입력되는 원소 또는 데이터에 관하여, j 개의 해시 인덱스 서브그룹으로 분할된 k 개의 해시 인덱스들을 생성하도록 j 개(2≤j<k)의 해시 함수 서브그룹으로 분할되는 k 개의 해시 함수들을 제공하는 단계;
상기 j 개의 해시 함수 서브그룹들 중 i 번째(1≤i≤j) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 i 번째 서브 블룸 필터에 연결되도록, 총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 제공하는 단계;
프로그래밍 시에, 원소에 관하여 상기 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 설정하는 단계; 및
멤버쉽 쿼리 시에 입력 데이터에 관하여 상기 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 생성하고, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들 따라 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터의 멤버쉽을 검증하는 단계를 포함하고,
상기 j 개의 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는
Figure 112015031095143-pat00051
인 정수 또는
Figure 112015031095143-pat00052
의 정수배인 정수로 결정되고, 여기서
Figure 112015031095143-pat00053
는 천정 함수로서, 실수 X보다 작지 않으면서 가장 작은 정수이며,
상기 j 개의 서브 블룸 필터들 중 i 번째 서브 블룸 필터의 크기는 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 반드시 i 번째 서브 블룸 필터 내에 설정될 수 있는 조건을 만족하도록 결정되고,
상기 입력 데이터의 멤버쉽을 검증하는 단계는,
상기 입력 데이터에 대해 상기 해시 인덱스 서브그룹들의 각각에 상응하는 상기 서브 블룸 필터들의 각각에서 모두 비트 1이 출력되어야 입력 데이터에 대해 양성으로 판정하고, 만약 어느 한 서브 블룸 필터에서 비트 0이 나오면, 음성으로 판정하는 단계를 포함하는 것을 특징으로 하는 블룸 필터 처리 방법.
A method of processing a bloom filter performed on a computer,
The computer comprising:
Providing k hash functions dividing into j hash function subgroups (2 < = j &lt; k) to produce k hash indices divided into j hash index subgroups for the input element or data;
The hash indexes of the i-th hash index subgroup generated by the i-th (1? I? J) hash function subgroup among the j hash function subgroups are connected to the i-th sub- Providing j sub-blob filters with the sub-blob filters;
The hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the elements, and the hash indexes of the generated ith hash index subgroup are denoted by i Th sub-bloom filter; And
The hash indexes of the i-th hash index subgroup are generated by the i-th hash function subgroup among the j hash function subgroups with respect to the input data at the time of membership query, and the hash indexes of the generated i- And verifying the membership of the input data based on bit strings output from the i-th sub-blob filter, respectively,
The size of at least one sub-blob filter among the j sub-
Figure 112015031095143-pat00051
Integer or
Figure 112015031095143-pat00052
Is an integer that is an integer multiple of
Figure 112015031095143-pat00053
Is the ceiling function and is the smallest integer not smaller than the real number X,
The size of the i-th sub-bloom filter among the j-number of sub-blob filters is determined by the hash indexes of the i-th hash index subgroup generated by the i-th hash function subgroup among j- Lt; RTI ID = 0.0 &gt; a &lt; / RTI &gt;
Wherein the step of verifying the membership of the input data comprises:
A bit 1 is output in each of the sub-bloom filters corresponding to each of the hash index subgroups, and if the bit 0 is output from any of the sub-bloom filters, &Lt; / RTI &gt; of the bloom filter.
삭제delete 삭제delete 컴퓨터에서 청구항 9 내지 11 및 청구항 13 중 어느 한 청구항에 따른 블룸 필터 처리 방법을 구동하도록 구현된 프로그램이 기록된 컴퓨터로 독출 가능한 기록 매체.A computer-readable recording medium having recorded thereon a program for implementing a method of processing a bloom filter according to any one of claims 9 to 11 and claim 13.
KR1020130109597A 2013-09-12 2013-09-12 Apparatus and method for bloom filter capable of improving false positives performance KR101537445B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130109597A KR101537445B1 (en) 2013-09-12 2013-09-12 Apparatus and method for bloom filter capable of improving false positives performance

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130109597A KR101537445B1 (en) 2013-09-12 2013-09-12 Apparatus and method for bloom filter capable of improving false positives performance

Publications (2)

Publication Number Publication Date
KR20150030405A KR20150030405A (en) 2015-03-20
KR101537445B1 true KR101537445B1 (en) 2015-07-16

Family

ID=53024454

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130109597A KR101537445B1 (en) 2013-09-12 2013-09-12 Apparatus and method for bloom filter capable of improving false positives performance

Country Status (1)

Country Link
KR (1) KR101537445B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101648317B1 (en) * 2015-12-09 2016-08-16 성균관대학교산학협력단 Method for searching data using partitioned bloom filter for supporting item elimination, cache memory apparatus and storage apparatus using the same
KR101666758B1 (en) * 2015-08-03 2016-10-17 성균관대학교산학협력단 Method for searching data using enhanced bloom filter

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101664712B1 (en) * 2015-06-19 2016-10-10 이화여자대학교 산학협력단 Bloomfilter query apparatus and method for identifying true positiveness without accessing hashtable

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080147714A1 (en) * 2006-12-19 2008-06-19 Mauricio Breternitz Efficient bloom filter

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080147714A1 (en) * 2006-12-19 2008-06-19 Mauricio Breternitz Efficient bloom filter

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Adam Kirsch 외 1인, 'Less Hashing, Same Performance: Building a Better Bloom Filter', Wiley InterScience, 2008.05.15., pp.187-218 *
Mark C. Jeffrey, 'Understanding and improving bloom filter for lazy address-set disambiguation', University of Toronto 박사학위논문, 2011 *
Mark C. Jeffrey, 'Understanding and improving bloom filter for lazy address-set disambiguation', University of Toronto 박사학위논문, 2011*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101666758B1 (en) * 2015-08-03 2016-10-17 성균관대학교산학협력단 Method for searching data using enhanced bloom filter
KR101648317B1 (en) * 2015-12-09 2016-08-16 성균관대학교산학협력단 Method for searching data using partitioned bloom filter for supporting item elimination, cache memory apparatus and storage apparatus using the same

Also Published As

Publication number Publication date
KR20150030405A (en) 2015-03-20

Similar Documents

Publication Publication Date Title
Duffy et al. Ordered reliability bits guessing random additive noise decoding
CN109474346B (en) Optical signal generation method and device, electronic equipment and storage medium
WO2017193716A1 (en) Encoding and rate matching method, apparatus and device for polar code
KR101537445B1 (en) Apparatus and method for bloom filter capable of improving false positives performance
JP2017526021A (en) Error correction apparatus and method for data retrieval
WO2021072874A1 (en) Dual array-based location query method and apparatus, computer device, and storage medium
Moia et al. Similarity digest search: A survey and comparative analysis of strategies to perform known file filtering using approximate matching
KR101311031B1 (en) A multi bloom filter including a detecting bloom filter
Balaji et al. A tight rate bound and matching construction for locally recoverable codes with sequential recovery from any number of multiple erasures
Jamali et al. Coded distributed computing: Performance limits and code designs
CN107508775B (en) Decoding method and device in sparse code multiple access system
CN112131609A (en) Merkle tree-based electric energy quality data exchange format file integrity verification method and system
Mook et al. Lattice (list) decoding near Minkowski’s inequality
CN110661535B (en) Method, device and computer equipment for improving Turbo decoding performance
US11283470B2 (en) Method for constructing parity-check concatenated polar codes and apparatus therefor
Gladkikh et al. Methods of coherent networks matching with codecs computational capabilities
EP3790224A1 (en) Sparsed merkle tree method and system for processing sets of data for storing and keeping track of the same in a specific network
CN116628083A (en) Block chain transaction data capacity expansion storage method and system
CN113535803B (en) Block chain efficient retrieval and reliability verification method based on keyword index
CN115149962A (en) Deterministic finite automata compression method, device, equipment and storage medium
WO2018219031A1 (en) Polar code processing method, decoder and terminal
KR101666758B1 (en) Method for searching data using enhanced bloom filter
US20210203364A1 (en) Apparatuses and methods for mapping frozen sets between polar codes and product codes
WO2021012211A1 (en) Method and apparatus for establishing index for data
Smith et al. Dynamic Merkle B-tree with efficient proofs

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180703

Year of fee payment: 4