NoSQL at About.me
        Luke Gotszling
             Aol
         about.me/luke
        luke@about.me

       February 8, 2012
    NoSQL in the Real World



                              1
NoSQL
★ Membase            ★ MongoDB

• Sessions           • User profile data

• User profile data   • Dashboard data

• Dashboard data     • Asynchronous task
                       queues
• Rate limits
                     • ...
• ...


                                           2
Membase
        http://www.couchbase.com/membase
• Don’t roll your own
  client-side key hashing
  algorithm

• Scales up and down         • Operational differences

• No change in application   • Need to be aware of
                               utilization
• No new libraries

• Web console for admin

• 20MB object limit by
  default

                                                         3
Membase
 http://www.couchbase.com/membase

• Like memcached (ascii and binary)
• Sharding invisible to the application
  (moxi proxy)
• Disk persistence / failover options
• Dynamically add and remove nodes
• 3ms inter-datacenter retrieval
  (including application latency)
• New version: Couchbase
                                          4
Membase:
                   Architecture




http://www.couchbase.com/docs/membase-manual-1.7/membase-deployment.html
                 Image used with permission from Couchbase
                                                                           5
Membase:
                      Web Console




http://www.couchbase.com/docs/membase-manual-1.7/membase-admin-web-console.html

                    Image used with permission from Couchbase
                                                                                  6
MongoDB: Part 1
        http://www.mongodb.org




★ Document store
• Some user data and memoized
  information
• about.me: 44kB avg. document size




                                      7
MongoDB: Part 2
           http://www.mongodb.org

★ Message queue          • Ability to re-shard
• Not AMQP                 dynamically
• Tailored persistence   • Operational
• Async operations         familiarity

• Batch processes        • But... need to poll

• Per message            • See my mongoSV
  (document)               presentation:
  atomicity                bit.ly/mongo-as-mq

                                                 8
MongoDB: Part 3
                http://www.mongodb.org


★ Auto-increment document store
• Autoincrementing data storage classes
• Custom class-based ORM
• AutoIncrement: side counting collection
  or optimistic loop [1]
• ACID
 [1]   http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto
                          +Incrementing+Field

                                                                 9
Don’t forget to Shard
  each collection




                        10
Questions?

aol.it/aol-jobs


                  11

Gotszling mogo db-membase

  • 1.
    NoSQL at About.me Luke Gotszling Aol about.me/luke luke@about.me February 8, 2012 NoSQL in the Real World 1
  • 2.
    NoSQL ★ Membase ★ MongoDB • Sessions • User profile data • User profile data • Dashboard data • Dashboard data • Asynchronous task queues • Rate limits • ... • ... 2
  • 3.
    Membase http://www.couchbase.com/membase • Don’t roll your own client-side key hashing algorithm • Scales up and down • Operational differences • No change in application • Need to be aware of utilization • No new libraries • Web console for admin • 20MB object limit by default 3
  • 4.
    Membase http://www.couchbase.com/membase • Likememcached (ascii and binary) • Sharding invisible to the application (moxi proxy) • Disk persistence / failover options • Dynamically add and remove nodes • 3ms inter-datacenter retrieval (including application latency) • New version: Couchbase 4
  • 5.
    Membase: Architecture http://www.couchbase.com/docs/membase-manual-1.7/membase-deployment.html Image used with permission from Couchbase 5
  • 6.
    Membase: Web Console http://www.couchbase.com/docs/membase-manual-1.7/membase-admin-web-console.html Image used with permission from Couchbase 6
  • 7.
    MongoDB: Part 1 http://www.mongodb.org ★ Document store • Some user data and memoized information • about.me: 44kB avg. document size 7
  • 8.
    MongoDB: Part 2 http://www.mongodb.org ★ Message queue • Ability to re-shard • Not AMQP dynamically • Tailored persistence • Operational • Async operations familiarity • Batch processes • But... need to poll • Per message • See my mongoSV (document) presentation: atomicity bit.ly/mongo-as-mq 8
  • 9.
    MongoDB: Part 3 http://www.mongodb.org ★ Auto-increment document store • Autoincrementing data storage classes • Custom class-based ORM • AutoIncrement: side counting collection or optimistic loop [1] • ACID [1] http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto +Incrementing+Field 9
  • 10.
    Don’t forget toShard each collection 10
  • 11.