Django MongoDB Engine

   [google_plusone size=”standard”]   Estou testando o módulo Django MongoDB Engine, um backend para Django bastante completo.

O grande diferencial desse módulo é permitir uma integração total e transparente do Django com o MongoDB, inclusive trabalhando no models da mesma forma que em um banco relacional. Além disso, o módulo também permite utilizar GridFS, Map Reduce, Agregadores e _Atomic Updates_ em apps do Django, mantendo total compatibilidade com Admin, Sessões e Autenticação padrão do Django.

Como ainda não existe uma solução oficial para trabalhar com NoSQL no Django, esse módulo — até agora — é o mais completo e parece bastante estável. Ainda não instalei em aplicações em produção, mas ao realizar testes em laboratório, o módulo promete ter um grande potencial.

Instalação

A recomendação inicial é utilizar virtualenv, pelo fato do módulo ser recente e estar em constante desenvolvimento. É necessário instalar algumas dependências, como Django-Nonrel e Djangotoolbox. Fiz a instalação seguindo o próprio manual do módulo, que sugere pegar esses módulos diretamente de seus repositórios, mas acredito que também funciona utilizando o pip install.

Com o ambiente virtualenv já criado e o Django já instalado, o primeiro passo é instalar o Django-Nonrel direto do repositório Mercurial:

$ hg clone http://bitbucket.org/wkornewald/django-nonrel
$ cd django-nonrel && python setup.py install

Depois, instalamos o módulo Djangotoolbox:

$ hg clone http://bitbucket.org/wkornewald/djangotoolbox
$ cd djangotoolbox && python setup.py install

E por último, vamos instalar o módulo Django MongoDB Engine, esse último, buscando do repositório Git:

$ git clone https://github.com/django-mongodb-engine/mongodb-engine
$ cd mongodb-engine && python setup.py install

Alterações no settings.py

Depois de instalar os módulos acima, basta alterar o backend no settings.py para trabalhar com o MongoDB. O meu ficou da seguinte forma:

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine',
        'NAME': 'testedjango',
    }
}

Depois disso é só trabalhar normalmente! No caso acima, a base de dados será a “testedjango”, os parâmetros de host, user, password são opcionais.

Em um teste simples, após seguir todos os procedimentos acima, rode um syncdb e depois entre no shell do Mongo. Poderá notar que o banco “testedjango” foi criado e as collections básicas para trabalhar com Django.

Vou realizar testes mais pesados com o módulo e publicarei posts mais completos a respeito.

Para maiores informações, o site oficial do projeto é http://django-mongodb.org/


Veja também