This document discusses CouchDB and CouchDBKit, a Python framework for CouchDB. It begins by explaining why one may want to use a NoSQL solution like CouchDB, which uses a document-oriented data model with RESTful access and map-reduce functions. It then covers CouchDBKit's features for simple CouchDB client access, schema definitions, and integration with Django web frameworks. The talk concludes by mentioning upcoming CouchDBKit improvements and providing links for further information.
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
CouchDB & Django avec CouchDBkit
1. CouchDB & Django
avec CouchDBkit
Benoît Chesneau
25/04/2010 - djangocong
Sunday, April 25, 2010
2. benoît chesneau
benoitc@apache.org
Artisan web
Minimal web & Opensource
Enki Multimedia
http://www.e-engura.com
Sunday, April 25, 2010
3. • Pourquoi utiliser une solution “NoSQL” ?
• CouchDB
• CouchDBKit: CouchDB & Django
Sunday, April 25, 2010
4. Pourquoi ?
• On a pas forcement besoin de “scalabilité”
• Maj des bases de données < 300 Go (2 Go)
• Souvent les requêtes sont rapides
• Tout tient sur une machine
Sunday, April 25, 2010
5. Souplesse
• Differents types de contenu
• Supprimer les “content-types”
• Faire de la dénormalisation simplement
• Gérer la migration de données/schema
facilement
Sunday, April 25, 2010
7. Ex: boutique en ligne
Données
Commande Livraison
clients
Item Item
Sunday, April 25, 2010
8. • Gérer des differents produits
• Sauver une commande avec le détail des
produits
• à un instant T (le produit est figé)
• Ne pas perdre la commande
• Ne pas perdre les infos de livraisons et
clients
Sunday, April 25, 2010
9. CouchDB
• Base de données orientées document
• REST
• Map/Reduce (M/R)
• Append-Only
• Javascript/Erlang
• Réplication
Sunday, April 25, 2010
10. Orientée Document?
• Pas de schema
• JSON
• Attachements
Sunday, April 25, 2010
12. Map/Reduce ?
• Map (M) : Collecter une liste de valeurs en
fonction d’une clé
• Retourne une liste de clés/valeurs (K/V)
• Reduce (R) : Réduire une liste de clés/
valeurs en une liste de valeurs
• Rereduce
Sunday, April 25, 2010
32. models.py
from datetime import datetime
from couchdbkit.ext.django.schema import *
class Greeting(Document):
author = StringProperty()
content = StringProperty(required=True)
date = DateTimeProperty(default=datetime.utcnow)
Sunday, April 25, 2010
33. forms.py
class GreetingForm(DocumentForm):
class Meta:
document = Greeting
Sunday, April 25, 2010
34. views.py
def home(request):
greet = None
if request.POST:
form = GreetingForm(request.POST)
if form.is_valid():
greet = form.save()
else:
form = GreetingForm()
greetings = Greeting.view("greeting/all")
return render("home.html", {
"form": form,
"greet": greet,
"greetings": greetings
}, context_instance=RequestContext(request))
Sunday, April 25, 2010
35. 0.5
• Nouveau mapper àla sqlalchemy
• Intégration de futon dans l’admin
• Gestion de design docs ameliorée
• Support Eventlet
• ...
Sunday, April 25, 2010
40. Cette création est mise à disposition selon le Contrat
Paternité 2.0 France disponible en ligne http://
creativecommons.org/licenses/by/2.0/fr/ ou par courrier
postal à Creative Commons, 171 Second Street, Suite
300, San Francisco, California 94105, USA.
Sunday, April 25, 2010