Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

fgmacedo/soonerdb

Open more actions menu

Repository files navigation

soonerdb

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.

Note

This is a toy project and is not yet tested on production environments. Use at your own risk.

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')]

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.