A simple immutable ordered key/value storage system, for indexing a large amount of data for sorted order queries.
https://github.com/ConorStokes/bitable
Bitables
Bitables are a data structure that is a hybrid of an SSTable and a b+ tree. They are an immutable and ordered indexed data structure designed for fast range and point queries, as well as quick merging. They are described here.
This library is the reference implementation, written in C and using memory mapped I/O.
Building
Premake4 is used for generating build files for different platforms (although, currently Windows and Visual Studio 2013 and Linux/GCC/Ubuntu are the only ones that have been testing). The Windows Premake4 binary used for testing is included. On Ubuntu, the Premake4 package from the apt-get repository was used.
There are 4 build configurations (combinations of debug/release and static library/shared library) and 2 platforms (x86 and x64). For gmake, these configurations are releaselib64, releasedll64, debuglib64, debugdll64, releaselib32, releasedll32, debuglib32 and debugdll32.
To build the static lib release x64 version with make on Linux (from the repository directory):
premake4 gmake
cd gmake
make config=releaselib64
On Windows, you can produce a Visual Studio 2013 file (in the vs2013 subdirectory) using the below:
premake4 vs2013
Example
The library is C, but there is an example included in C++ which shows how to use the library.
Burning Candle Software
ABN: 47 060 916 507
Perth, Western Australia
Email: info@burningcandle.io
Skype: conor.stokes
Github: github.com/Conorstokes
LinkedIn: au.linkedin.com/in/conor-stokes-a0554088
Blog: conorstokes.github.io