Académique Documents
Professionnel Documents
Culture Documents
com
Brendan W. McAdams
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 1 / 53
Outline
1 Introduction
Basic Rundown
Technology History
2 What We Learned
Lessons Learned Over Time
Open Source Code Yielded
Why MongoDB?
4 Final Items
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 2 / 53
Outline
1 Introduction
Basic Rundown
Technology History
2 What We Learned
Lessons Learned Over Time
Open Source Code Yielded
Why MongoDB?
4 Final Items
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 3 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
advertising as a finky spastic mentally retard cat who sometimes wants to jump in my lap
and other times wants to hiss at me and run for the litterbox and often walks in circles
trying to figure out which of the two it wants, followed by dropping dead with a final
thought..."ohhh! food!"
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 4 / 53
Sluggy.com Rundown
Some Stats
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 5 / 53
Outline
1 Introduction
Basic Rundown
Technology History
2 What We Learned
Lessons Learned Over Time
Open Source Code Yielded
Why MongoDB?
4 Final Items
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 6 / 53
Sluggy.com Technology History
1997 - 2000
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 7 / 53
Sluggy.com Technology History
2002
Rewrite Began using MySQL & PHP to allow for “No More HTML
Editing”
Some Features: Dynamic headlines, news, predefined templates,
dynamic navigation. “Members Only Club” (behind the scenes
features, sketches, etc)
First Folly - Reading MySQL and dynamically generating on each
page request magnitudes harder than static HTML. I/O DOS.
Moved to smarty template caching, generating on-disk cache file
upon first request (expires at midnight)
Next 4 years became hellish with Midnight DOS’ as everyone hit
site and caches regenerated.
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 8 / 53
Sluggy.com Technology History
2006
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 9 / 53
Sluggy.com Technology History
2009
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 10 / 53
Sluggy.com Technology History
Aug. 3, 2009
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 11 / 53
Sluggy.com Technology History
Aug. 14, 2009
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 12 / 53
Sluggy.com Technology History
Sept. 2009
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 13 / 53
Outline
1 Introduction
Basic Rundown
Technology History
2 What We Learned
Lessons Learned Over Time
Open Source Code Yielded
Why MongoDB?
4 Final Items
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 14 / 53
memcached is a crutch. . .
meant to make up for RDBMS’ shortfalls
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 15 / 53
memcached is a crutch. . .
meant to make up for RDBMS’ shortfalls
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 15 / 53
memcached is a crutch. . .
meant to make up for RDBMS’ shortfalls
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 15 / 53
memcached is a crutch. . .
meant to make up for RDBMS’ shortfalls
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 15 / 53
as long as we’re being hyperbolic. . .
mongodb is a bionic leg replacement. . .
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 17 / 53
Outline
1 Introduction
Basic Rundown
Technology History
2 What We Learned
Lessons Learned Over Time
Open Source Code Yielded
Why MongoDB?
4 Final Items
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 18 / 53
Open Source Code
mongodb_beaker: Beaker Caching for MongoDB
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 20 / 53
Open Source Code
mongodb_beaker: Beaker Caching for MongoDB
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 20 / 53
Open Source Code
mongodb_beaker: Beaker Caching for MongoDB
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 20 / 53
Open Source Code
MongoKit-Pylons: Pylons patches for Python MongORM
1 Introduction
Basic Rundown
Technology History
2 What We Learned
Lessons Learned Over Time
Open Source Code Yielded
Why MongoDB?
4 Final Items
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 23 / 53
Why MongoDB?
Dynamic Querying
Flexibility
CouchDB’s approach appeared obtused and rather unPythonic
Tools like MongoKit allowed for easy replacement of existing
MySQL ORM code with something almost identical
FAST
Great Support & Community Available
MongoDB Mailing List
IRC: freenode.net #mongodb
Easy access - talking to developers NOT support staff. One
official development company behind MongoDB.
Shiny
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 24 / 53
Why MongoDB?
Dynamic Querying
Flexibility
CouchDB’s approach appeared obtused and rather unPythonic
Tools like MongoKit allowed for easy replacement of existing
MySQL ORM code with something almost identical
FAST
Great Support & Community Available
MongoDB Mailing List
IRC: freenode.net #mongodb
Easy access - talking to developers NOT support staff. One
official development company behind MongoDB.
Shiny
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 24 / 53
Why MongoDB?
Dynamic Querying
Flexibility
CouchDB’s approach appeared obtused and rather unPythonic
Tools like MongoKit allowed for easy replacement of existing
MySQL ORM code with something almost identical
FAST
Great Support & Community Available
MongoDB Mailing List
IRC: freenode.net #mongodb
Easy access - talking to developers NOT support staff. One
official development company behind MongoDB.
Shiny
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 24 / 53
Why MongoDB?
Dynamic Querying
Flexibility
CouchDB’s approach appeared obtused and rather unPythonic
Tools like MongoKit allowed for easy replacement of existing
MySQL ORM code with something almost identical
FAST
Great Support & Community Available
MongoDB Mailing List
IRC: freenode.net #mongodb
Easy access - talking to developers NOT support staff. One
official development company behind MongoDB.
Shiny
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 24 / 53
Why MongoDB?
Dynamic Querying
Flexibility
CouchDB’s approach appeared obtused and rather unPythonic
Tools like MongoKit allowed for easy replacement of existing
MySQL ORM code with something almost identical
FAST
Great Support & Community Available
MongoDB Mailing List
IRC: freenode.net #mongodb
Easy access - talking to developers NOT support staff. One
official development company behind MongoDB.
Shiny
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 24 / 53
Why MongoDB?
Dynamic Querying
Flexibility
CouchDB’s approach appeared obtused and rather unPythonic
Tools like MongoKit allowed for easy replacement of existing
MySQL ORM code with something almost identical
FAST
Great Support & Community Available
MongoDB Mailing List
IRC: freenode.net #mongodb
Easy access - talking to developers NOT support staff. One
official development company behind MongoDB.
Shiny
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 24 / 53
Outline
1 Introduction
Basic Rundown
Technology History
2 What We Learned
Lessons Learned Over Time
Open Source Code Yielded
Why MongoDB?
4 Final Items
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 25 / 53
MySQL Schema Snippets
The Admin Table...
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 27 / 53
MySQL Schema Snippets
The News Table...
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 29 / 53
SQLAlchemy Model
The Admin Object
1 c l a s s AdminUser ( ORMObject ) :
2 pass
3
4 t_admin_users = Table ( ’ admin_users ’ , meta . metadata ,
5 Column ( ’ i d ’ , I n t e g e r , primary_key =True ) ,
6 Column ( ’ username ’ , Unicode ( 4 5 ) , n u l l a b l e =False , unique=True ) ,
7 Column ( ’ password ’ , Unicode ( 3 2 ) , n u l l a b l e = False ) ,
8 Column ( ’ display_name ’ , Unicode ( 6 4 ) ) , # Should be unique ?
9 Column ( ’ e m a i l ’ , Unicode ( 2 5 5 ) , n u l l a b l e =False , unique=True ) ,
10 Column ( ’ l a s t _ i p ’ , IPV4Address , n u l l a b l e =True ) ,
11 Column ( ’ l a s t _ l o g i n _ d a t e ’ , MSTimeStamp , n u l l a b l e = False ) ,
12 Column ( ’ a v a t a r ’ , Unicode ( 2 5 5 ) , n u l l a b l e =True ) ,
13 Column ( ’ d i s a b l e d ’ , Boolean , d e f a u l t = False ) ,
14 mysql_engine= ’ InnoDB ’
15 )
16
17 mapper ( AdminUser , t_admin_users )
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 31 / 53
SQLAlchemy Model
The News Object
1 c l a s s NewsStory ( ORMObject ) :
2 pass
3
4 t_news = Table ( ’ news ’ , meta . metadata ,
5 Column ( ’ i d ’ , I n t e g e r , primary_key =True ) ,
6 Column ( ’ a u t h o r _ i d ’ , I n t e g e r , ForeignKey ( ’ admin_users . i d ’ ) , n u l l a b l e
= False ) ,
7 Column ( ’ s t a r t _ d a t e ’ , Date , n u l l a b l e = False ) ,
8 Column ( ’ end_date ’ , Date ) ,
9 Column ( ’ h e a d l i n e ’ , Unicode ( 2 5 5 ) , n u l l a b l e = False ) ,
10 Column ( ’ s t o r y ’ , Unicode , n u l l a b l e = False ) ,
11 Column ( ’ a r c h i v e ’ , Boolean , d e f a u l t = False ) ,
12 mysql_engine= ’ InnoDB ’
13 )
14
15 mapper ( NewsStory , t_news , p r o p e r t i e s ={
16 ’ a u t h o r ’ : r e l a t i o n ( AdminUser , b a c k r e f = ’ n e w s _ s t o r i e s ’ )
17 })
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 33 / 53
SQLAlchemy Model
Paypal: OH THE HORROR
1 c l a s s PaypalIPN ( ORMObject ) :
2 pass
3
4
5 t _ p a y p a l _ i p n = Table ( ’ p a y p a l _ i p n ’ , meta . metadata ,
6 Column ( ’ i d ’ , I n t e g e r , primary_key =True ) ,
7 Column ( ’ f i r s t _ n a m e ’ , Unicode ( 6 4 ) ) ,
8 Column ( ’ last_name ’ , Unicode ( 6 4 ) ) ,
9 Column ( ’ payer_business_name ’ , Unicode ( 1 2 7 ) ) ,
10 Column ( ’ payer_email ’ , Unicode ( 1 2 7 ) ) ,
11 Column ( ’ p a y e r _ i d ’ , Unicode ( 1 3 ) ) ,
12 Column ( ’ p a y e r _ s t a t u s ’ , Unicode ( 1 0 ) ) ,
13 Column ( ’ r e s i d e n c e _ c o u n t r y ’ , Unicode ( 2 ) ) ,
14 Column ( ’ business ’ , Unicode ( 1 2 7 ) ) ,
15 Column ( ’ r e c e i v e r _ e m a i l ’ , Unicode ( 1 2 7 ) ) ,
16 Column ( ’ r e c e i v e r _ i d ’ , Unicode ( 1 3 ) ) ,
17 Column ( ’ item_name ’ , Unicode ( 1 2 7 ) ) ,
18 Column ( ’ item_number ’ , Unicode ( 1 2 7 ) ) ,
19 Column ( ’ q u a n t i t y ’ , I n t e g e r ) ,
20 Column ( ’ payment_date ’ , Unicode ( 1 2 7 ) ) ,
21 Column ( ’ payment_status ’ , Unicode ( 2 0 ) ) ,
22 Column ( ’ payment_type ’ , Unicode ( 1 0 ) ) ,
23 Column ( ’ pending_reason ’ , Unicode ( 2 0 ) ) ,
24 BrendanColumn
W. McAdams ( ’ reason_code
(Sluggy.com) ’ From
, Unicode
MySQL to (MongoDB
2 0 ) ) , at Sluggy.com Mongo NYC, May 2010 35 / 53
MongoKit Model
Admin
1 c l a s s AdminUser ( MongoPylonsDocument ) :
2 u s e _ a u t o r e f s = True
3 u s e _ d o t _ n o t a t i o n = True
4 c o l l e c t i o n _ n a m e = ’ admin_users ’
5 structure = {
6 ’ username ’ : unicode , # unique
7 ’ password ’ : unicode ,
8 ’ display_name ’ : unicode ,
9 ’ e m a i l ’ : unicode ,
10 ’ l a s t _ i p ’ : unicode ,
11 ’ l a s t _ l o g i n _ d a t e ’ : d a t e t i m e . datetime ,
12 ’ a v a t a r ’ : unicode ,
13 ’ d i s a b l e d ’ : bool ,
14 }
15
16 r e q u i r e d _ f i e l d s = [ ’ username ’ , ’ password ’ , ’ e m a i l ’ ]
17 d e f a u l t _ v a l u e s = { ’ d i s a b l e d ’ : False , ’ l a s t _ l o g i n _ d a t e ’ : d a t e t i m e .
d a t e t i m e . now ( ) }
18
19 indexes = [
20 {
21 ’ f i e l d s ’ : [ ’ username ’ , ’ password ’ ] ,
22 ’ t t l ’ : 86400
23 },
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 37 / 53
MongoKit Model
Admin
1 c l a s s NewsStory ( MongoPylonsDocument ) :
2 u s e _ d o t _ n o t a t i o n = True
3 u s e _ a u t o r e f s = True
4 c o l l e c t i o n _ n a m e = ’ news ’
5 structure = {
6 ’ a u t h o r ’ : AdminUser ,
7 ’ h e a d l i n e ’ : unicode ,
8 ’ s t o r y ’ : unicode ,
9 ’ s t a r t _ d a t e ’ : d a t e t i m e . datetime ,
10 ’ end_date ’ : d a t e t i m e . datetime ,
11 ’ archived ’ : bool # d e f a u l t f a l s e
12 }
13
14 r e q u i r e d _ f i e l d s = [ ’ author ’ , ’ headline ’ , ’ story ’ , ’ sta rt_da te ’ ]
15 default_values = {
16 ’ s t a r t _ d a t e ’ : TODAY,
17 ’ a r c h i v e d ’ : False ,
18 }
19
20 indexes = [
21 {
22 ’ f i e l d s ’ : [ ’ s t a r t _ d a t e ’ , ’ end_date ’ ] ,
23 ’ t t l ’ : 86400 ,
24 },
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 39 / 53
MongoKit Model
PayPal: OH THE. . . that’s not so bad.
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 41 / 53
MongoKit Model
PayPal: “Instead”
1 ipn_db = None
2 try :
3 dbh = MongoPylonsEnv . mongo_conn ( ) \
4 [ MongoPylonsEnv . g e t _ d e f a u l t _ d b ( ) ] [ ’ d e f e n d e r s _ p a y p a l _ i p n ’ ]
5 i p n _ i d = dbh . i n s e r t ( d i c t ( r e q u e s t .POST. i t e m s ( ) ) , s a f e =True )
6 ipn_db = dbh . f i n d _ o n e ( { ’ _ i d ’ : i p n _ i d } )
7 i f n o t ipn_db :
8 r a i s e E x c e p t i o n ( ’ c o u l d n o t lookup , post−i n s e r t ’ )
9 except Exception , e :
10 l o g . e x c e p t i o n ( " Paypal IPN E r r o r : Unable t o commit IPN data t o "
11 " Database : %s " % r e p r ( e ) )
12 r a i s e DefendersIPNException ( r e p r ( e ) )
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 43 / 53
MySQL -> Mongo Migration
Admin Migration
1 db = mongoModel . AdminUser . _ g e t _ c o n n e c t i o n ( )
2 conn = db . c o n n e c t i o n ( )
3 conn . drop_database ( ’ emergencyPants ’ )
4
5 admins = { }
6 f o r user i n meta . Session . query ( AdminUser ) . a l l ( ) :
7 _admin = mongoModel . AdminUser ( doc ={
8 ’ username ’ : user . username ,
9 ’ password ’ : user . password ,
10 ’ a v a t a r ’ : user . a v a t a r ,
11 ’ d i s a b l e d ’ : user . d i s a b l e d ,
12 ’ display_name ’ : user . display_name ,
13 ’ e m a i l ’ : user . email ,
14 ’ l a s t _ i p ’ : unicode ( user . l a s t _ i p ) ,
15 ’ l a s t _ l o g i n _ d a t e ’ : user . l a s t _ l o g i n _ d a t e ,
16 } ) . save ( )
17 admins [ user . i d ] = _admin
18
19 mongoModel . AdminUser . g e t _ c o l l e c t i o n ( ) . ensure_index ( ’ password ’ ,
20 d i r e c t i o n =ASCENDING, unique=True )
21 mongoModel . AdminUser . g e t _ c o l l e c t i o n ( ) . ensure_index (
22 [ ( ’ username ’ , ASCENDING) ,
23 ( ’ password ’ , ASCENDING) ] )
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 45 / 53
MySQL -> Mongo Migration
News Migration
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 47 / 53
Looking for news
In Mongo. . .
1 d e f _get_news ( date ) :
2 news = NewsStory . a l l ( {
3 ’ a r c h i v e d ’ : False ,
4 ’ s t a r t _ d a t e ’ : { ’ $ l t e ’ : c . _today }
5 } ) . where ( ’ t h i s . end_date == n u l l | | t h i s . end_date >= new Date ( ) ’ ) . \
6 s o r t ( ’ s t a r t _ d a t e ’ , −1)
7
8 r e t u r n news
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 49 / 53
Looking for news
The old MySQL/SQLAlchemy way. . .
1 d e f _get_news ( date ) :
2 news = meta . Session . query ( NewsStory ) . \
3 f i l t e r ( and_ ( NewsStory . a r c h i v e ==False , NewsStory . s t a r t _ d a t e <=date
,
4 or_ ( NewsStory . end_date==None , NewsStory . end_date >date ) ) ) \
5 . order_by ( NewsStory . s t a r t _ d a t e . desc ( ) ) . a l l ( )
6 r e t u r n news
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 51 / 53
MongoKit
Upcoming Features
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 52 / 53
Questions?
Contact Info
Contact Me
I twitter: @rit
I email: bwmcadams@gmail.com
I bitbucket: http://hg.evilmonkeylabs.net
Pressing Questions?
I IRC - freenode.net #mongodb
I MongoDB Users List -
http://groups.google.com/group/mongodb-user
Mongo Python Language Center -
http://api.mongodb.org/python/1.6%2B/index.html
(Links to Java driver docs, and many of the third party libraries. Pythonic!)
MongoKit -
http://bitbucket.org/namlook/mongokit/wiki/Home
Pylons -http://pylonshq.com
Brendan W. McAdams (Sluggy.com) From MySQL to MongoDB at Sluggy.com Mongo NYC, May 2010 53 / 53