Skip to main content

A LSM-Tree key/value database in Python

Project description

soonerdb

https://img.shields.io/pypi/v/soonerdb.svg https://img.shields.io/travis/fgmacedo/soonerdb.svg Coverage report Documentation Status

A LSM-Tree key/value database in Python.

This project started as a learning tool when studing the excelent book “Designing data-intensive applications” by Martin Kleppmann.

Features

  • Pure Python fast LSM-Tree based key/value database.

  • Embedded and zero-conf.

  • Support in-order traversal of all stored keys.

  • On-disk database persistence.

  • Data is durable in the face of application or power failure.

  • Background merge of segment files.

  • Python 3.6+.

📝 TODO List

  • [ ] Deletion of keys.

Installation

You can install using pip:

pip install soonerdb

Or from source:

git clone https://github.com/fgmacedo/soonerdb
cd soonerdb
python setup.py install

Quick intro

SoonerDB has a dict-like API.

Showtime:

In [1]: from soonerdb import SoonerDB

In [2]: db = SoonerDB('./tmp')

In [3]: db["my key"] = "A value"

In [4]: db["my key"]
Out[4]: 'A value'

In [5]: "my key" in db
Out[5]: True

In [6]: "other key" in db
Out[6]: False

In [7]: db["other key"]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-7-bc114493f395> in <module>
----> 1 db["other key"]
KeyError: "Key 'other key' not found."

In [8]: db.get("other key", "default value")
Out[8]: 'default value'

In [9]: db.set("another", "value")

In [10]: list(db)
Out[10]: [('another', 'value'), ('my key', 'A value')]

History

0.1.2 (2020-12-18)

  • Background merge of segment files.

  • Adding coverage badge on README.

0.1.1 (2020-12-18)

  • Fixes setup.py.

  • Improved README.

0.1.0 (2020-12-18)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soonerdb-0.1.2.tar.gz (16.6 kB view hashes)

Uploaded Source

Built Distribution

soonerdb-0.1.2-py2.py3-none-any.whl (9.0 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page