Skip to content

nyaxt/ptnk

Repository files navigation

Ptnk

Ptnk is a log-structured database manager implementation.

Why yet another DBM?

More Performance by using more disk space

Ptnk's design trades off disk space for more performance. The database file generated by ptnk is not compact compared to other DBMs, but allows to process requests at blazing speed.

All disk writes generated by ptnk is sequential and aligned to 4 kilobytes, optimal for non-volatile memory based storage devices like SSDs.

More durability

Records are always synchronized to disk by default. Many other DBMs tries to get performance by being lazy and not writing their data to disk all time.

Concurrency

Ptnk has multi-version concurrency control support. Write can be done without interfering other read operations.

WARNING

Ptnk is still at very early stage of development.

DO NOT STORE VALUABLE DATA YET

Features

  • Key-value store interface
    • Put/get arbitrary byte sequence
  • Cursor interface
    • All records are stored in B-tree like structure.
    • Iterate over records in its key order.
  • Snapshot / Transactions
    • based on multi-version concurrency control (MVCC)
    • concurrent transaction commits (multi-thread support)
  • MySQL storage engine implementation
    • Applications using MySQL can take advantage of ptnk without changing application itself.

Usage

see examples directory

Install

Dependencies

  • required packages on debian wheezy

    sudo apt-get install libgtest-dev libgoogle-perftools-dev

  • required packages on Fedora 15

    sudo yum install gtest-devel gcc-c++

Build & Install

run configure

./waf configure

build & run test

./waf build_rel --check

install

./waf install_rel

For ptnk developers

build, run test, and install debug build

./waf build_dbg --check
./waf install_dbg

About

ptnk: A Log-structured Database Manager optimized for new storage devices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published