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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital 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
본 발명은 블룸 필터에 관한 것으로, 더욱 상세하게는, 거짓 양성 성능을 개선할 수 있는 블룸 필터에 관한 것이다.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
외부에서 어떤 데이터가 집합에 포함되는지 여부를 검사(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
해시 함수에 의해 각각의 포지션이 선택될 확률이 균일하고 랜덤하여야 블룸 필터에 적합한 해시 함수라고 할 수 있고, 다양한 상사 함수들이 해시 함수로서 이용될 수 있음이 알려져 있지만, 대표적으로 예를 들어 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
따라서, 해시 인덱스들의 순서 정보가 프로그래밍 과정 중에 전부 또는 부분적으로 유지될 수 있다.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
따라서, 해시 인덱스들의 순서 정보가 쿼리 과정 중에서도 전부 또는 부분적으로 유지될 수 있다.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.
바람직하게는, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는 이다. [X]는 가우스 기호 또는 최대 정수 함수(greatest integer function)로서, 실수 X보다 크지 않으면서 가장 큰 정수이다.Preferably, the size of at least one of the sub-bloom filters is to be. [X] is the Gaussian symbol or greatest integer function, the largest integer not greater than the real number X.
바람직하게는, j = 2이고, 서브 블룸 필터들 중 하나의 크기는 인 정수이다. 나머지 하나의 크기는 산술적으로, 다시 말해 으로 결정된다.Preferably, j = 2 and the size of one of the sub- Lt; / RTI > The size of the remaining one is arithmetic, in other words .
바람직하게는, j = 3이고, 서브 블룸 필터들 중 둘의 크기는 인 정수이다. 나머지 하나의 크기는 산술적으로 결정될 수 있다.Preferably, j = 3 and the size of two of the sub-blob filters is 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 개의 서브 블룸 필터들의 크기는 인 정수 또는 의 정수배인 정수이고, 나머지 하나의 크기는 산술적으로, 다시 말해 총 비트 포지션의 크기 m에서 j-1 개의 서브 블룸 필터들의 크기를 뺀 값으로서 결정될 수 있다.Preferably, the size of j-1 sub-blob filters among j sub-blob filters smaller than k is Integer or 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라면, 서브 블룸 필터들의 크기는 인 정수로 결정될 수 있다.If j = k, the size of the subbubble filters is May be determined.
다른 실시예에서, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는 인 정수일 수 있다. 는 천정 함수(ceiling function)로서, 실수 X보다 작지 않으면서 가장 작은 정수이다.In another embodiment, the size of at least one of the sub-bloom filters is Lt; / RTI > 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
해시 인덱스 생성부(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.
바람직하게는, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는 이다. Preferably, the size of at least one of the sub-bloom filters is to be.
바람직하게는, j = 2이고, 서브 블룸 필터들 중 하나의 크기는 인 정수이다. 나머지 하나의 크기는 산술적으로, 다시 말해 으로 결정된다.Preferably, j = 2 and the size of one of the sub- Lt; / RTI > The size of the remaining one is arithmetic, in other words .
바람직하게는, j = 3이고, 서브 블룸 필터들 중 둘의 크기는 인 정수이다. 나머지 하나의 크기는 산술적으로 결정될 수 있다.Preferably, j = 3 and the size of two of the sub-blob filters is Lt; / RTI > The size of the remaining one can be determined arithmetically.
바람직하게는 k보다 작은 j 개의 서브 블룸 필터들 중 j-1 개의 서브 블룸 필터들의 크기는 인 정수 또는 의 정수배인 정수이고, 나머지 하나의 크기는 산술적으로 결정될 수 있다.Preferably, the size of j-1 sub-blob filters among j sub-blob filters smaller than k is Integer or And the size of the remaining one can be determined arithmetically.
만약 j = k라면, 서브 블룸 필터들의 크기는 인 정수로 결정될 수 있다.If j = k, the size of the subbubble filters is May be determined.
다른 실시예에서, 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는 인 정수일 수 있다.In another embodiment, the size of at least one of the sub-bloom filters is 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
도 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
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다.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)
총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 보유하며, j 개의 해시 함수 서브그룹들 중 i 번째(1≤i≤j) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 연결하는 서브 블룸 필터 저장부;
프로그래밍 시에 원소를 상기 해시 인덱스 생성부에 입력하고, 상기 원소에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터에 설정하는 프로그래밍부; 및
멤버쉽 쿼리 시에 입력 데이터를 상기 해시 인덱스 생성부에 입력하고, 상기 입력 데이터에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 생성되면, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들에 따라 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터에 대해 상기 해시 인덱스 서브그룹들의 각각에 상응하는 상기 서브 블룸 필터들의 각각에서 모두 비트 1이 출력되어야 입력 데이터에 대해 양성으로 판정하고, 만약 어느 한 서브 블룸 필터에서 비트 0이 나오면, 음성으로 판정하도록 동작함으로써 상기 입력 데이터의 멤버쉽을 검증하는 쿼리부를 포함하고,
상기 j 개의 서브 블룸 필터들 중 j-1 개의 서브 블룸 필터의 크기는 인 정수 또는 보다 크면서 의 정수배인 정수로 결정되며, 나머지 하나의 서브 블룸 필터의 크기는 총 비트 포지션의 크기 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 < th > 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 Integer or Bigger 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.
총 m 개의 비트 포지션들을 가지는 j 개의 서브 블룸 필터들을 보유하며, j 개의 해시 함수 서브그룹들 중 i 번째(1≤i≤j) 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 i 번째 서브 블룸 필터에 연결하는 서브 블룸 필터 저장부;
프로그래밍 시에 원소를 상기 해시 인덱스 생성부에 입력하고, 상기 원소에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 생성되는 i 번째 해시 인덱스 서브그룹의 해시 인덱스들을 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터에 설정하는 프로그래밍부; 및
멤버쉽 쿼리 시에 입력 데이터를 상기 해시 인덱스 생성부에 입력하고, 상기 입력 데이터에 관하여 j 개의 해시 함수 서브그룹들 중 i 번째 해시 함수 서브그룹에 의해 i 번째 해시 인덱스 서브그룹의 해시 인덱스들이 생성되면, 생성된 i 번째 해시 인덱스 서브그룹의 해시 인덱스들에 따라 상기 서브 블룸 필터 저장부의 i 번째 서브 블룸 필터로부터 각각 출력되는 비트열에 기초하여, 상기 입력 데이터에 대해 상기 해시 인덱스 서브그룹들의 각각에 상응하는 상기 서브 블룸 필터들의 각각에서 모두 비트 1이 출력되어야 입력 데이터에 대해 양성으로 판정하고, 만약 어느 한 서브 블룸 필터에서 비트 0이 나오면, 음성으로 판정하도록 동작함으로써 상기 입력 데이터의 멤버쉽을 검증하는 쿼리부를 포함하고,
상기 j 개의 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는 인 정수로 결정되고, 여기서 는 천정 함수(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 < th > 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- , Where < RTI ID = 0.0 > 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.
상기 컴퓨터가,
입력되는 원소 또는 데이터에 관하여, 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 개의 서브 블룸 필터의 크기는 인 정수 또는 보다 크면서 의 정수배인 정수로 결정되며, 나머지 하나의 서브 블룸 필터의 크기는 총 비트 포지션의 크기 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 < 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 Integer or Bigger 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 > a < / RTI >
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, ≪ / RTI > of the bloom filter.
상기 컴퓨터가,
입력되는 원소 또는 데이터에 관하여, 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 개의 서브 블룸 필터들 중 적어도 하나의 서브 블룸 필터의 크기는 인 정수 또는 의 정수배인 정수로 결정되고, 여기서 는 천정 함수로서, 실수 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 < 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- Integer or Is an integer that is an integer multiple of 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 > a < / RTI >
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, ≪ / RTI > of the bloom filter.
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)
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080147714A1 (en) * | 2006-12-19 | 2008-06-19 | Mauricio Breternitz | Efficient bloom filter |
-
2013
- 2013-09-12 KR KR1020130109597A patent/KR101537445B1/en active IP Right Grant
Patent Citations (1)
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)
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)
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 |