kvndb

A modular Key/Value Network Database server+client using twisted


Keywords
database, key, value, network, scalable
License
MIT
Install
pip install kvndb==0.1.2

Documentation

KVNDB - A Key-Value Network Database

KVNDB is a simple scalable pure-python key/value database and a client-API.

Features

  • Scalable
  • Password protection (optional)
  • stores key/value pairs (both needs to be strings)
  • pure-python
  • asynchronous
  • command-line script included
  • allows to automatically reset a database and then sync with the other databases
  • different database-interfaces included

Concept

A KVNDB consists of three components:

  1. The Router is the central manager, which handles all connections and splits the requests. He also handles the version and password checks.

  2. The Databases connect to the router and provide the databases. Every database receive all set and del commands, but the get and getkeys commands are randomly splitted.

  3. The Clients connect to the router and send requests.

Usage

using kvndb:

KVNDB includes the kvndb script, which will automatically be added to your PATH when the setup is run. Command: kvndb [args]

Using python:

You can run KVNDB directly as a standalone module using python. Command: python - m kvndb [args] Using as a module:

You can also import kvndb for a more flexible setup.

Modules:

kvndb.router: The router module. The router class is available as kvndb.router.RouterFactory.

kvndb.dbproto: The code gluing a database and the router togeter. You can access the protocol as kvndb.dbproto.DatabaseClientProtocol.

kvndb.txclient: The KVNDB client for twisted. You can access the client protocal as kvndb.txclient.ClientProtocol.

kvndb.runner: The command line interface. You can pass some arguments to kvndb.runner.run to parse and run them.

kvndb.cmdclient: The command line console. You can subclass kvndb.cmdclient.KVNDBCmdClient to extend the command line.

kvndb.data: Some constants and other data.

Arguments:

You can pass the following arguments to kvndb/python -m kvndb:

host: [ALL] when constructing the endpoint, use this as the host. Default: 0.0.0.0.

port: [ALL] when constructing the endpoint, use this as the port. Default: 54565.

1: [ALL] What mode/database to use. Special modes are router(starts the router) and cmd(launch a console).

arguments ARGS: [DATABASES] pass theses arguments to the database-interface.

--help: [ALL] show a help message.

-t T; --type T: [ALL] endpoint type to use. This may be either tcp, tcp6 or tls. For more options, use the -e option.

-e E; --endpoint E: [ALL] use the following string to construct a twisted endpoint. Ignore other arguments which would define an endpoint.

-p P; --password P: [ALL] When running as a router, set this password as the password. Otherwise, send this password if required.

-v; --verbose: [ALL] Enable verbose output.

-l F; --logfile F: [ALL] Log to this file. Requires -v to be set.

-r: --reset: [DATABASES] After connecting to the router, delete all keys from the database and the sync from the other databases connected to the router.

Requirements

  • python2.7
  • twisted

Installation

Using pip:

Once this module is available on pypi, you can install it using pip install kvndb.

From source:

  1. Download/clone this repository

  2. Install requirements

  3. Run python setup.py install inside this directory. This may require root access.

License

MIT

Author: Benjamin Vogt

Project homepage: https://github.com/bennr01/kvndb/