django mongodb engine

33
So you want to use DJANGO AND MONGODB @flaper87

Upload: flavio-percoco-premoli

Post on 23-Jan-2015

1.939 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Django Mongodb Engine

So you want to use

DJANGO ANDMONGODB

@flaper87

Page 2: Django Mongodb Engine

THAT’S COOL, but you n!dto know A COUPLE OF THINGS

DJANGO ANDMONGODB

Page 3: Django Mongodb Engine

LIKE: WHAT ARETHE OPTIONS?

Page 4: Django Mongodb Engine

An object-document mapperto connect Python and MongoDB

( http://mongoengine.org )

Page 5: Django Mongodb Engine

Another ODMthat takes mongodb into the web

Mongokit( http://namlook.github.com/mongokit/ )

Page 6: Django Mongodb Engine

OR, OF COURSE

Page 7: Django Mongodb Engine

DJANGOMONGODBENGINE(A MongoDB backend for Django)

DJANGO-NONRELA good and up to date Django fork

that brings non-rel support

Page 8: Django Mongodb Engine

DJANGO-NONRELA good and up to date Django fork

that brings non-rel support

Unfortunately, most of your

may be broken, but not the admin

Page 9: Django Mongodb Engine

django.contrib.*Sadly, some of your

may be broken, but not the admin

DJANGO-NONRELA good and up to date Django fork

that brings non-rel support

Page 10: Django Mongodb Engine

erm...

No "anges n!ded.

Page 11: Django Mongodb Engine

erm... OKAYWHAT’S SO COOL

ABOUT THIS THEN?No "anges n!ded.

Page 12: Django Mongodb Engine

No "anges n!ded.

erm... OKAYWHAT’S SO COOL

ABOUT THIS THEN?

Page 13: Django Mongodb Engine

No "anges n!ded.

NOBODY’S GONNA TOUCHYOUR PRECIOUS BUILTINS.

WHAT’S SO COOLABOUT THIS THEN?

Page 14: Django Mongodb Engine

NOBODY’S GONNA TOUCHYOUR PRECIOUS BUILTINS.

REDUCED IMPEDANCE MISSMATCH

Page 15: Django Mongodb Engine

WHAT ELSE?#at’s c$l

Page 16: Django Mongodb Engine

NEW FIELDS

Page 17: Django Mongodb Engine

AGGREGATIONS

Page 18: Django Mongodb Engine

GRIDFS

Page 19: Django Mongodb Engine

CACHING

Page 20: Django Mongodb Engine

MAP / REDUCE>>> for pair in Article.objects.map_reduce(_map, _reduce, 'wordcount'):... print pair.key, pair.value

Page 21: Django Mongodb Engine

NEW INDEXESclass Club(models.Model): location = ListField() rating = models.FloatField() ... class MongoMeta: indexes = [ [('rating', -1)], {'fields': [('location', '2d')], 'min': -42, 'max': 42}, ]

Page 22: Django Mongodb Engine

TONS OF DOCSPlus:

(which never hurts)

Page 23: Django Mongodb Engine

Su%estions

Page 24: Django Mongodb Engine

RAW QUERIESMyModel.objects.raw_query(field=“value”)

Page 25: Django Mongodb Engine

EMBEDD IF POSSIBLE

class Comment(models.Model): created_on = models.DateTimeField() author = EmbeddedModelField('Author') text = models.TextField()

Page 26: Django Mongodb Engine

RE-THINK YOUR MODELS

class Post(models.Model): title = models.CharField() text = models.TextField() tags = ListField()

# Note: Use defer comments = ListField(EmbeddedModelField('Comment'))

Page 27: Django Mongodb Engine

DO NOT USE IT EVERYWHERE

MONGODB_MANAGED_APPS = ['myapp']

MONGODB_MANAGED_MODELS = ['myapp.MongoDBModel']

Page 28: Django Mongodb Engine

SERVE STATIC FILES

GridFSStorage + nginx-GridFS

Page 29: Django Mongodb Engine

AGGREGATIONS? MAP/REDUCE

class Min(MongoAggregate):    initial_value = float('inf')    reduce_template = '{alias} = ({lookup}<{alias})?{lookup}:{alias}'

class Max(MongoAggregate):    initial_value = float('-inf')    reduce_template = '{alias} = ({lookup}>{alias})?{lookup}:{alias}'

Page 30: Django Mongodb Engine

DATES WORK But, MongoDB does not support month/day queries

Page 31: Django Mongodb Engine

DO NOT TRY TO MIGRATEIt Wont Work!

Page 32: Django Mongodb Engine

CONTRIBUTEThe Compiler’s a mess