Skip to content

MelleB/sqlite-bloomfilter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bloom filter extension for SQLite

Description

This is a simple bloom filter extension for SQLite. Internally it uses 'buckets' of 64-bit unsigned integers to store the bloomfilter. It uses the Murmur3 hashing function to create a hash.

Installation

Optional: Get the files from github
git clone ...

Initialize the murmur3 submodule. This is a port of murmur3 to C. Please see Peter Scott's repo for details
git submodule init && git submodule update

Compile the module
make module

To play around with murmur3 hashes
make murmur_check

Usage

First, the extension needs to be loaded using
SELECT LOAD_EXTENSION('./libbloom.so');

After that the following functions are provided:

  • murmur3(STRING)
    Calculates the murmur3 hash of a given string.
  • bloomfilter(STRING, [SIZE])
    Create a bloomfilter for a given field.
    E.g. SELECT bloomfilter(name) FROM persons WHERE age < 100;
    This function returns a bloom filter as a long hexadecimal string. The optional SIZE parameter specifies the number of bits of the bloomfilter. By default the bloomfilter is 512 bits.
  • in_bloom(STRING, BLOOMFILTER)
    Test whether the value is in the bloomfilter, returns 1 (true) or 0 (false).

Limitations and bugs

There are probably more bugs and limitations than I can think of, if you come accross any, please let me know.

Limitations:

  • Currently uses a single hash function

License

This code is released under the BSD3 license. For a copy of the license please see the LICENSE file.

About

A simple bloom filter for SQLite using Murmur3

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages