O que é o CouchDB
CouchDB é um banco de dados orientado a documento que utiliza o algoritmo de MapReduce para realizar consultas e indices. O CouchDB é escrito em Erlang, uma linguagem robusta e funcional para a construção simulânea de sistemas distribuídos, permitindo maior escalabilidade e flexibilidade do banco de dados.
O CouchDB oferece também a API RESTful JSON que pode ser acessada a partir de qualquer ambiente, o qual permite solicitações do tipo HTTP. Devido a isso, podemos utilizá-lo juntamente com um framework Web.
O que é o Django
Django é um framework Web high-level escrito em Python que proporciona o desenvolvimento de aplicações web de maneira fácil, rápida e de alto-desempenho utilizando o padrão MVC (Model-View-Controller).
Django utiliza o máximo de automatização possível e adere ao princípio DRY (Don't Repeat Yourself), fazendo com que o desenvolvedor aproveite ao máximo o código ja escrito.
O que é o CouchDBKit
Couchdbkit oferece um cliente completo e fácil de acessar e gerenciar o banco de dados CouchDB. Ele permite a você, gerenciar os seguintes ítens: servidores CouchDB, documentos em databases e acessar sistemas de busca nos bancos. Todos os objetos refletem por conveniência em sua maioria objetos python. Objetos de servidores e bancos de dados poderiam ser usados, por exemplo, como um objeto python do tipo dict.
from couchdbkit import Server
s = Server()
db = s.create_db("NewDatabaseName")
db['user'] = { 'name': 'Rafael' }
doc = db['user']
|
Criando uma nova estrutura de aplicação Web usando o Django:
A aplicação WEB é executada num ambiente distribuído, onde cada parte que compõe o programa está localizada em uma maquina diferente. O programador, e o programa, nem sempre tem consciência deste fato. Sabendo disso iremos criar uma nova aplicação em django que irá suportar o CouchDB.
Na linha de comando, vá até ao diretório onde gostaria de armazenar seu código e em seguida, execute o seguinte comando:
django-admin.py startproject newProject |
Feito isso, um novo diretório será criado, com a seguinte estrutura:
newProject/
__init__.py
manage.py
settings.py
urls.py
__init__.py: Um arquivo vazio que descreve ao Python que esse diretório deve ser considerado como um pacote Python.
manage.py: Utilitário de linha de comando que permite a você interagir com esse projeto Django.
settings.py: Configurações para o projeto Django criado. Configurações do Django irá dizer-lhe tudo sobre como funcionam as configurações do projeto.
urls.py: As declarações de URLs para esse projeto Django; um "índice" do seu site criado a partir do Django.
Com o novo projeto criado, pode-se executar o seguinte comando, que irá executar o servidor na porta (8000) padrão:
python manage.py runserver |
feito isso poderá acessar o projeto através da url http://localhost:8000
Criando uma nova aplicação
Após criada a estrutura, a nova aplicação poderá ser criada, executando o seguinte comando:
python manage.py startapp newApplication |
Isso fará com que seja criado um novo diretório estruturado dessa forma:
newApplication/
__init__.py
models.py
tests.py
views.py
|
Integrando o CouchDB a nova aplicação Django:
Criada a nova aplicação, a integração com o couchdb se derá através do couchdbkit. Para que isso aconteça, deverá ser adicionado ao arquivo settings.py (arquivo criado na raiz do projeto) a seguinte configuração, onde cada linha representa uma aplicação já instalada, que será usada pelo Django, quando for criada uma nova:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'couchdbkit.ext.django',
'newProject.newApplication'
)
|
Feito isso, deverá ser adicionado ao arquivo urls.py (também localizado na raiz do projeto) as views que serão utilizadas pela aplicação. Um exemplo seria se quiséssemos acessar uma informação no banco de dados relacionado ao nome de uma banda. Poderiamos requisitar uma instrução GET na pagina http://localhost:8000/nomeBanda/<NOMEDABANDA>
Tendo em vista o exemplo pode-se adicionar a seguinte entrada no arquivo urls.py:
from django.conf.urls.defaults import *
urlpatterns = patterns('newProject.newApplication.views',
#será criada uma nova view que será acessada pelo usuário na aplicação web
url(r'/nomeBanda/(.*?)/?$', 'getNomeBanda'),
)
Adicionada a nova configuração no arquivo urls.py o próximo arquivo
a ser configurado é views.py, localizado em: newProject/newApplication/views.py
#importando módulo do couchdb
import couchdb
from datetime import datetime
from django.shortcuts import render_to_response as render
from django.template import RequestContext, loader, Context
from django.utils import simplejson
from django.http import HttpResponse
#importando módulo do couchdbkit
import couchdbkit
from couchdbkit.ext.django.forms import DocumentForm
#Conectando no servidor do couchdb
couch = couchdb.Server()
#conectando na base de dados, se caso não contrário irá criar um nova.
try:
db = couch['databaseName']
except:
db = couch.create('databaseName')
#função que irá retornar os dados gravados dentro da base de dados utilizada
def getNomeBanda(request,nomeBanda):
for i in db:
if(db[i]['nomeBanda'] == nomeBanda):
return HttpResponse(db[i], mimetype='application/json')
|
O exemplo acima foi utilizado a requisição GET, se quisessemos fazer uma inserção no banco poderiamos utilizar a requisição POST, incluir a nova view no arquivo urls.py, alterar o newProject/newApplication/views.py e por fim adicionar ao arquivo newProject/newApplication/models.py uma estrutura JSON Document o qual acessariamos em views.py.
Referencias bibliograficas:
https://docs.djangoproject.com/en/1.3/intro/tutorial01/
https://www.djangoproject.com/

Estudante do ultimo ano do Curso de Análise e Desenvolvimento de Sistemas pela UNICAMP, possui conhecimento em Redes e linguagens de programação tais como PERL e PYTHON, em suas horas vagas, gosta principalmente de brincar com Float, seu cachorro e sair com os amigos.Perfil My Developer Works:http://www.ibm.com/developerworks/mydeveloperworks/profiles/user/RafaelLucas.