Ptnk is a log-structured database manager implementation.
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.
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.
Ptnk has multi-version concurrency control support. Write can be done without interfering other read operations.
Ptnk is still at very early stage of development.
DO NOT STORE VALUABLE DATA YET
- 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.
see examples directory
-
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++
run configure
./waf configure
build & run test
./waf build_rel --check
install
./waf install_rel
build, run test, and install debug build
./waf build_dbg --check
./waf install_dbg