Skip to the content.

ProjectDb

A key-value storage engine library


Contributing to the repo


Getting Started:

Requirements

Usage

To use ProjectDb, follow the following steps:

Example

The directory structure for this example is as following:

.
..
ProjectDbTest
    main.cpp .............> This is the application that's trying to use ProjectDb
ProjectDb ................> This is cloned ProjectDb repo 
    cmake-build-release
        libprojectdb.a ...> This is generated after running "make init_build && make projectdb"

main.cpp, which represents the application, is as following:

// main.cpp

#include "projectdb/projectdb.h"

int main() {
    // A config file template can be found in ./config/config.template
    // To use a customized config, create object with:
    // ProjectDb::ProjectDb db {"<config_file_path>"};
    projectdb::ProjectDb db;
    db.set("Hello", "World!");
    return 0;
}

The command used to build main.cpp is as following:

g++ -std=gnu++20 -I../ProjectDb/include main.cpp -o main \
    -L../ProjectDb/cmake-build-release/ -lprojectdb -lpthread

Current Limitations


Evaluating from Docker


Docs:

All the documents can be found in docs/, specifically:


Coverage:

coverage


References

Roadmaps

Features:

  1. Support range query for read.
  2. Add bloom filter.
  3. Work on making this distributed.

Tests & Benchmark:

  1. Add more unit tests.
  2. Add more tests for crash recovery. (Need to investigate the concept of commit and rollback.)
  3. Rewrite benchmark code and compare with leveldb.

Misc:

  1. Add badge for code coverage.