Skip to main content

HTTP access to a LevelDB.

Project description

FlatDB is a thin HTTP wrapper around LevelDB. LevelDB is a simple, persistent key-value store.

API

There are three endpoints. Each accepts multiple values at a time. All use HTTP GET. (This is not a RESTful interface.)

/get

GET /get?key=foo&key=bar HTTP/1.1

Get one or more values from the database. The response will be a JSON object with a key for each key found in the database.

/getrange

GET /getrange?from=from_key HTTP/1.1

Get a range starting at from_key.

/put

GET /put?foo=bar&baz=qux HTTP/1.1

Store one or more values in the database. If multiple key/value pairs are specified, they will be written atomically as a batch. If the write succeeds, the return status will be 201. If the write fails, it will not.

/delete

GET /delete?key=foo&key=baz HTTP/1.1

Delete one or more keys from the database. If multiple keys are specified, they will be deleted atomically as a batch. If the delete succeeeds, the return status will be 200.

Why FlatDB?

LevelDB is an ideal solution for a persistent, fast key-value store. (RocksDB is an alternative from Facebook that has a lot in common, but is also very new.) Since LevelDB (and RocksDB) is a library-level data store, FlatDB provides a simple, service-oriented interface to it.

Other projects, like RevelDB and the Python leveldb-server package, provide similar functionality, but:

  • RevelDB barely built and then segfaulted on startup.

  • leveldb-server is weird and tornadoy and undocumented.

Running FlatDB

FlatDB installs two executable scripts: flatdb and flatdb-dev.

$ flatdb -h
usage: flatdb [-h] [-d] [-p PORT] [-b DATABASE] [-H HOST]

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug
  -p PORT, --port PORT
  -b DATABASE, --database DATABASE
  -H HOST, --host HOST
--port:

Port to listen on. (7532)

--host:

Address to bind to. (127.0.0.1)

--database:

Path to a LevelDB (will be created if it doesn’t exist).

flatdb runs a gevent server. flatdb-dev runs the built-in Flask server.

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

flatdb-0.1.0.tar.gz (3.5 kB view details)

Uploaded Source

File details

Details for the file flatdb-0.1.0.tar.gz.

File metadata

  • Download URL: flatdb-0.1.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for flatdb-0.1.0.tar.gz
Algorithm Hash digest
SHA256 15cd2f1e0bc804113de902e8970ad7c2ac864fc0e84ceb6a3910d7a146eb0b27
MD5 09e955480a0d0bddda49b11e2b0f0626
BLAKE2b-256 f5829fbaf0e408311dad474747de7106d7a9c308cd01ec03dc3af0f769e3e7d0

See more details on using hashes here.

Provenance

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