/django-riak-engine

A Riak (nosql) backend for Django

Primary LanguagePythonBSD 2-Clause "Simplified" LicenseBSD-2-Clause

django-riak-engine

Please note: this is a development README! None of this works yet. When we're done, this is what you will read to learn about and use this product :-)

Riak is a nosql database solution, built with Erlang and designed to duplicate the functionality of Amazon's Dynamo.

Riak has a pluggable backend for its core shard-partitioned storage, with the default storage backend being Bitcask. Riak also has built-in MapReduce with native support for both JavaScript (using the SpiderMonkey runtime) and Erlang, while supporting a variety of additional language drivers, including Python.

For a comparison of Riak with other nosql solutions, visit this page:

For a general nosql comparison, read this blog post:

In order to be used in Django-nonrel applications, this project is cenetered upon creating the necessary database adaptors for Django.

There is a development discussion Google group here for public participation of anyone interested in coding on the project:

django_riak_engine has the following dependencies:

  • Python
  • Riak
  • Python drivers for Riak
  • Django nonrel
  • Django toolbox
  • Django Riak engine

If you want to assist with developement of django_riak_engine or use the latest code we're working on, you can install from the sources. Once you have git installed, just do the following:

$ git clone git@github.com:oubiwann/django-riak-engine.git
$ cd django-riak-engine
$ make install

You can use the setuptools easy_install script to get django_riak_engine on your system (add sudo at beginning if not inside virtualenv):

$ easy_install django-riak-engine

You can manually download the source tarball from the Python Package Index by visiting the following URL:

http://pypi.python.org/pypi/django-riak-engine

You'll need to untar and gunzip the source, cd into the source directory, and then you can do the usual:

$ sudo python setup.py install

Once installed, you can test the source code by executing this in your local source tree:

$ make check

That will run the test suite and report on ther successes and/or failures.

Let's get started with a demo app:

$ django-admin.py startproject riakproj
$ cd riakproj
$ django-admin.py startapp riakapp

Configure the app to talk to a specific database in settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django_riak_engine.riak',
        'NAME': 'mydatabase',
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '8091',
        'SUPPORTS_TRANSACTIONS': False,
    },
}

Let's created a model:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length = 64)
    content = models.TextField()

And a quick view that exercises it:

from django.http import HttpResponse
from models import *

def testview(request):
  article = Article(title = 'test title',
    content = 'test content')
  article.save()

  return HttpResponse("<h1>Saved!</h1>")

Now let's use the Django Riak API:

db.riakapp_article.find()

To get a list of all articles:

articles = Article.objects.all()

Get the base unit tests set up.

Everything.

All the implementation.

All the implementation.

  • Initial release of django_riak_engine.