SlideShare a Scribd company logo
How to choose the right
  NoSQL Technology
     Josh Butts - 7/6/2011
Agenda

• Spoilers
• Evaluation criteria
• Winners & Losers
• Gotchas
• Questions & Discussion
Spoilers
Spoilers

• We picked MongoDB and Redis
Spoilers

• We picked MongoDB and Redis
• We love Redis to death
Spoilers

• We picked MongoDB and Redis
• We love Redis to death
• We’re in a platonic relationship with
  MongoDB
Spoilers

• We picked MongoDB and Redis
• We love Redis to death
• We’re in a platonic relationship with
  MongoDB
  •   Maybe one day it can be something more
Where to start?
Where to start?

• First, why are you even considering
  this?
Where to start?

• First, why are you even considering
  this?

• Very, very clearly define the problem
Where to start?

• First, why are you even considering
  this?

• Very, very clearly define the problem
• You already know SQL. Are you sure
  it isn’t the right choice?
Building Criteria
Building Criteria

• Make a list of real criteria
Building Criteria

• Make a list of real criteria
  • These should be points which will help you
    differentiate
Building Criteria

• Make a list of real criteria
  • These should be points which will help you
    differentiate

• Hint: “Fast, flexible, good language
  support” are not useful
Building Criteria

• Make a list of real criteria
  • These should be points which will help you
    differentiate

• Hint: “Fast, flexible, good language
  support” are not useful
  • These are the common denominator
Use case #1 at
 Offers.com
Use case #1 at
           Offers.com

• Log impressions of content on web
  pages
Use case #1 at
           Offers.com

• Log impressions of content on web
  pages
• Light caching
Use case #1 at
           Offers.com

• Log impressions of content on web
  pages
• Light caching
• Data de-normalization
Our requirements
Our requirements


• Reads & writes need to be blazing fast
Our requirements


• Reads & writes need to be blazing fast
• Data persistence is reasonably
  important
Our requirements


• Reads & writes need to be blazing fast
• Data persistence is reasonably
  important

• Need to implement incrementally
The contenders
The contenders

• In-memory key-value stores
The contenders

• In-memory key-value stores
 • Memcached
The contenders

• In-memory key-value stores
 • Memcached
 • Membase
The contenders

• In-memory key-value stores
 • Memcached
 • Membase
 • Redis
The contenders

• In-memory key-value stores
 • Memcached
 • Membase
 • Redis
 • Tokyo Tyrant
Why Redis
Why Redis

• Redis is damn cool
Why Redis

• Redis is damn cool
• In memory + disk storage
Why Redis

• Redis is damn cool
• In memory + disk storage
• As fast as Memcached
Why Redis

• Redis is damn cool
• In memory + disk storage
• As fast as Memcached
• “Remote data structures”
Why Redis

• Redis is damn cool
• In memory + disk storage
• As fast as Memcached
• “Remote data structures”
 • This is where the magic happens
Extras with Redis
Extras with Redis

• Most libraries provide a session
  handler
Extras with Redis

• Most libraries provide a session
  handler
• Super-easy to install
Extras with Redis

• Most libraries provide a session
  handler
• Super-easy to install
• Ability to treat it like memcached
Extras with Redis

• Most libraries provide a session
  handler
• Super-easy to install
• Ability to treat it like memcached
  • memory model not quite the same
Extras with Redis

• Most libraries provide a session
  handler
• Super-easy to install
• Ability to treat it like memcached
  • memory model not quite the same
    • In fact, not the same at all
Why not the others?
Why not the others?

• Memcached has no disk persistance
Why not the others?

• Memcached has no disk persistance
 • I can’t rely on the data (easily)
Why not the others?

• Memcached has no disk persistance
 • I can’t rely on the data (easily)
• Membase seems pointless-ish
  (compared to redis) for small-to-
  medium scale
Use Case #2 at
 Offers.com
Use Case #2 at
        Offers.com

• Process (diff / update) 10 million
  SKU-level items from 100 partners
Use Case #2 at
        Offers.com

• Process (diff / update) 10 million
  SKU-level items from 100 partners
• Do this once per day
Use Case #2 at
        Offers.com

• Process (diff / update) 10 million
  SKU-level items from 100 partners
• Do this once per day
• Deal with disparate data schemas
Use Case #2 at
        Offers.com

• Process (diff / update) 10 million
  SKU-level items from 100 partners
• Do this once per day
• Deal with disparate data schemas
• Deal with missing / null data nicely
The Contenders
The Contenders


• Document-oriented Databases
The Contenders


• Document-oriented Databases
 • MongoDB
The Contenders


• Document-oriented Databases
 • MongoDB
 • CouchDB
The Contenders


• Document-oriented Databases
 • MongoDB
 • CouchDB
 • Cassandra
Why Documents?
Why Documents?

• Data arrives in various XML formats
Why Documents?

• Data arrives in various XML formats
 • No one likes XML except Java devs
Why Documents?

• Data arrives in various XML formats
 • No one likes XML except Java devs
• Need flexible schema
Why Documents?

• Data arrives in various XML formats
 • No one likes XML except Java devs
• Need flexible schema
• Need searching / querying by various
  fields
Why MongoDB
Why MongoDB
• Fast
Why MongoDB
• Fast
• Outstanding connectivity
Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
• Ad-hoc queries
Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
• Ad-hoc queries
• Extremely low learning curve
Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
• Ad-hoc queries
• Extremely low learning curve
• They sent us stickers
Why not the others
Why not the others


• We’re pretty sure Cassandra is just a
  Facebook troll project
Why not the others


• We’re pretty sure Cassandra is just a
  Facebook troll project
• CouchDB is brilliant but queries can
  be tedious without a plan
Downsides of Mongo
Downsides of Mongo

• I still don’t trust that my data is 100%
  safe
Downsides of Mongo

• I still don’t trust that my data is 100%
  safe
• Aggregates and map/reduce are
  cumbersome compared to CouchDB
Downsides of Mongo

• I still don’t trust that my data is 100%
  safe
• Aggregates and map/reduce are
  cumbersome compared to CouchDB
• Lack of good GUI tools for exploring
  data
Where we failed
Where we failed

• We didn’t clearly articulate the
  problem
Where we failed

• We didn’t clearly articulate the
  problem
• We built a brilliant product catalog
  parser
Where we failed

• We didn’t clearly articulate the
  problem
• We built a brilliant product catalog
  parser
• We forgot it had to get to MySQL
  eventually
Why is this harder than
a traditional RDBMS?
Why is this harder than
a traditional RDBMS?


• Vendor lock in (model)
Why is this harder than
a traditional RDBMS?


• Vendor lock in (model)
• Vendor lock in (feature set)
Why is this harder than
a traditional RDBMS?


• Vendor lock in (model)
• Vendor lock in (feature set)
• Vendor lock in (fanboyism)
How does SQL solve
      this?
How does SQL solve
        this?

• ANSI SQL
How does SQL solve
         this?

• ANSI SQL
• Adapter patterns
How does SQL solve
         this?

• ANSI SQL
• Adapter patterns
• Abstraction layers
How does SQL solve
         this?

• ANSI SQL
• Adapter patterns
• Abstraction layers
• ORMs
With NoSQL, you must
      choose!
With NoSQL, you must
       choose!

• There’s no useful way to abstract
  NoSQL systems to the point of code
  portability
With NoSQL, you must
       choose!

• There’s no useful way to abstract
  NoSQL systems to the point of code
  portability

• ODMs might ease the pain
Questions?

More Related Content

PPTX
New Web Revolution - html5 and css3
PPTX
Course outline Website Design & Development
KEY
Freelancing and side-projects on Rails
KEY
Windycityrails page performance
KEY
Rapid CMS enabled site development with Wordpress
PPT
Customizing the custom loop wordcamp 2012-jeff
PDF
Saigon Ruby Meetup 06/10/2015 - Changeful Gem
PPT
2010 11 pubcon_hendison_wordpress
New Web Revolution - html5 and css3
Course outline Website Design & Development
Freelancing and side-projects on Rails
Windycityrails page performance
Rapid CMS enabled site development with Wordpress
Customizing the custom loop wordcamp 2012-jeff
Saigon Ruby Meetup 06/10/2015 - Changeful Gem
2010 11 pubcon_hendison_wordpress

What's hot (20)

KEY
Mobilizing wordpress WordCamp Edmonton 2011
PPTX
Bliblidotcom - SASS Introduction
KEY
Construct Unified
PDF
Ruby on Rails Vs. ASP.NET MVC
PPT
Customizing the custom loop wordcamp 2012-jeff
PDF
Web Safe Fonts are Dead Series | Part 1: Web Typography Reincarnated
PDF
Big Projects! Big Problems! Simple Solutions!!?!!
PPTX
Journey To The Front End World - Part2 - The Cosmetic
PDF
Practical IronRuby
PPTX
Themes and Plugins for Wordpress
PPTX
Simplifying sql server upgrades
PDF
Perfect Code
PDF
CSS Grid
PDF
SEO Do's and Dont's - Search in 2018
PPTX
Design Camp Boston - Designing Faster Websites
PPTX
Mike walsh hadr_toomanychoices_20191107
KEY
Responsive web-design
PDF
Riding IronRuby on Rails
PDF
Basics - Setting up a WordPress Site
KEY
Mobilizing WordPress
Mobilizing wordpress WordCamp Edmonton 2011
Bliblidotcom - SASS Introduction
Construct Unified
Ruby on Rails Vs. ASP.NET MVC
Customizing the custom loop wordcamp 2012-jeff
Web Safe Fonts are Dead Series | Part 1: Web Typography Reincarnated
Big Projects! Big Problems! Simple Solutions!!?!!
Journey To The Front End World - Part2 - The Cosmetic
Practical IronRuby
Themes and Plugins for Wordpress
Simplifying sql server upgrades
Perfect Code
CSS Grid
SEO Do's and Dont's - Search in 2018
Design Camp Boston - Designing Faster Websites
Mike walsh hadr_toomanychoices_20191107
Responsive web-design
Riding IronRuby on Rails
Basics - Setting up a WordPress Site
Mobilizing WordPress
Ad

Viewers also liked (12)

PDF
Geek Austin PHP Class - Session 1
KEY
Fall 2011 PHP Class - Session 1
KEY
GeekAustin PHP Class - Session 6
KEY
Fall 2011 PHP Class - Session 2
KEY
GeekAustin PHP Class - Session 7
PPT
Geek Austin PHP Class - Session 2
PPT
Geek Austin PHP Class - Session 3
PPT
Geek Austin PHP Class - Session 4
PDF
Security in php
KEY
Scaling php applications with redis
PPT
Php ssession - cookies -introduction
PPTX
Session php
Geek Austin PHP Class - Session 1
Fall 2011 PHP Class - Session 1
GeekAustin PHP Class - Session 6
Fall 2011 PHP Class - Session 2
GeekAustin PHP Class - Session 7
Geek Austin PHP Class - Session 2
Geek Austin PHP Class - Session 3
Geek Austin PHP Class - Session 4
Security in php
Scaling php applications with redis
Php ssession - cookies -introduction
Session php
Ad

Similar to Austin NoSQL 2011-07-06 (20)

PPT
No sql
PDF
Relational vs. Non-Relational
PDF
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
KEY
SLQ vs NOSQL - friends or foes
PDF
Heterogenous Persistence
PDF
Scaling the Web: Databases & NoSQL
PPTX
noSQL choices
PDF
Overview of no sql
PDF
SLQ vs NOSQL - friends or foes
PDF
Nosql data models
PPTX
Navigating NoSQL in cloudy skies
PPT
Wmware NoSQL
PPT
SQL, NoSQL, BigData in Data Architecture
PPTX
ГАННА КАПЛУН «noSQL vs SQL: порівняння використання реляційних та нереляційни...
PPTX
How big data moved the needle from monolithic SQL RDBMS to distributed NoSQL
PPTX
PDF
The NoSQL Ecosystem
PDF
HPTS 2011: The NoSQL Ecosystem
ODP
Реляционные или нереляционные (Josh Berkus)
PPTX
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...
No sql
Relational vs. Non-Relational
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
SLQ vs NOSQL - friends or foes
Heterogenous Persistence
Scaling the Web: Databases & NoSQL
noSQL choices
Overview of no sql
SLQ vs NOSQL - friends or foes
Nosql data models
Navigating NoSQL in cloudy skies
Wmware NoSQL
SQL, NoSQL, BigData in Data Architecture
ГАННА КАПЛУН «noSQL vs SQL: порівняння використання реляційних та нереляційни...
How big data moved the needle from monolithic SQL RDBMS to distributed NoSQL
The NoSQL Ecosystem
HPTS 2011: The NoSQL Ecosystem
Реляционные или нереляционные (Josh Berkus)
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...

Recently uploaded (20)

PDF
KodekX | Application Modernization Development
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Cloud computing and distributed systems.
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Approach and Philosophy of On baking technology
PPT
Teaching material agriculture food technology
KodekX | Application Modernization Development
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...
Cloud computing and distributed systems.
Diabetes mellitus diagnosis method based random forest with bat algorithm
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Digital-Transformation-Roadmap-for-Companies.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
20250228 LYD VKU AI Blended-Learning.pptx
cuic standard and advanced reporting.pdf
Unlocking AI with Model Context Protocol (MCP)
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Network Security Unit 5.pdf for BCA BBA.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Building Integrated photovoltaic BIPV_UPV.pdf
Big Data Technologies - Introduction.pptx
Approach and Philosophy of On baking technology
Teaching material agriculture food technology

Austin NoSQL 2011-07-06

Editor's Notes