relate or !relate

     mark ramm
Tools Matter
Data matters
just as much
robust
                            scalable                    simple


                  flexible                                           DSL
                                       a good
                                         mix

     consistant                                                             Topic


                                                 SQL

available                                                                       ACID
                  CAP
                                           Tools
                                           Matter
                                                       Know
partition                                              Your                   mongodb
tolerant                        NoSQL                  Tools
                                                                 Screws
                                                                  and
                                                                  Nails

     scalable                                                              siding

                                 focused

                  simple                                            deck


                              fast                       Topic
                                           flexible
Tools
Matter
         Know
         Your                 mongodb
         Tools
                 Screws
                  and
                  Nails

                           siding




                    deck
robust
          scalable                  simple


flexible                                      DSL
                     a good
                       mix

                                                    well
                                                   known


                              SQL

                                                      ACID


                        Tools
                        Matter
ACID




http://www.flickr.com/photos/di4b0liko/2292648884/
Blah, blah blah,

 you are
not normal
  enough
Why I NEED
          Relational

• I can’t use NoSQL because...
  • It’s financial data
    (need consistency)

  • My data is relational
Why I NEED
          Relational

• I can’t use NoSQL because...
  • It’s financial data
    (need consistency)

  • My data is relational
Why I NEED
          Relational
                                 I T
                         S H
• I can’t use NoSQL because...

                   L
  • It’s financial data

              L
    (need consistency)

  • My data is relational
        U
  B
But...
robust
          scalable                  simple


flexible                                      DSL
                     a good
                       mix

                                                    well
                                                   known


                              SQL

                                                      ACID


                        Tools
                        Matter
Blah, blah blah,

 you are
too normal
So why Use RDBS


• DSL for ad-hock queries
• blah blah inconsistencies
  blah blah latency
blah, blah,
blah, blah,
   blah
taxonomy of NoSQL
• key/value store
• distributed key/value stores
• column oriented stores
• map-reduce store/system
• document oriented store
• graph oriented stores
NoSQL
NoSQL
consistant




available
                    CAP

                                         Tools
partition
                                         Matter
tolerant                      NoSQL




        scalable


                               focused

                   simple


                            fast                   Topic
                                         flexible
CAP
http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
consistant




available
                    CAP

                                         Tools
partition
                                         Matter
tolerant                      NoSQL




        scalable


                               focused

                   simple


                            fast                   Topic
                                         flexible
It’s
“WebScale”
It’s
“WebScale”
I T
   It’s H
       S
     L
“WebScale”
   L
     U
 B
http://www.flickr.com/photos/beigephotos/900974545/
taxonomy of NoSQL
• key/value store
• distributed key/value stores
• column oriented stores
• map-reduce store/system
• document oriented store
• graph oriented stores
Tools
Matter
         Know
         Your                 mongodb
         Tools
                 Screws
                  and
                  Nails

                           siding




                    deck
directory                     directory
                                                              directory



   Mongo Slave                   Mongo Slave
                                                             Mongo Slave




                                                fetcher


                                               sf.gobble
                 Mongo Master

                                                fetcher




                                 feed api's




sf.net                 freshmeat.net           hosted apps                 etc
merciless.sourceforge.net
MongoDB
    has a query language
select * from document where x=3
and y="foo"

db.things.find(
      { x : 3, y : "foo" }
      );
Conditional Updates



db.people.update( { name:"Joe" },
{ $inc: { x:1, y:1 } }, true
blah, blah,
blah, blah,
   blah
Concluding
Unscientific
Postscript
•F i g u r e o u t w h a t
 YOUR app needs
•F i g u r e o u t w h a t
 YOUR app needs

•D o n ’ t o b s e s s a b o u t
 SCALE you’ll never
 achieve
•F i g u r e o u t w h a t
 YOUR app needs

•D o n ’ t o b s e s s a b o u t
 SCALE you’ll never
 achieve

•U s e t h e r i g h t t o o l f o r
 the job

Mark ramm To relate or not to relate

Editor's Notes