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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 2Python 3

File details

Details for the file soonerdb-0.1.2.tar.gz.

File metadata

  • Download URL: soonerdb-0.1.2.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0

File hashes

Hashes for soonerdb-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f9a8b3f7028ed0245a4d070000ec52c440f697740067673eeedcc7700828b28a
MD5 e0b2c3675baf54ad975dea2eb8ead324
BLAKE2b-256 5ddf2a0ca0223f15502d33223bd0d7f855a21af0c121a9e440a0927c50032764

See more details on using hashes here.

File details

Details for the file soonerdb-0.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: soonerdb-0.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0

File hashes

Hashes for soonerdb-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2dc636ed2477f9d286c6bec5aba7572323d0a30d0b1663e5b3ce3eedcee0275e
MD5 b4af4a0893921fceaa12f9a5bab9b693
BLAKE2b-256 4fa6dec25fa2989fecc6dc423d81ea58f54c54f0ed00ca6e00c77ed9c691556b

See more details on using hashes here.

Supported by

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