6. Spoilers
• We picked MongoDB and Redis
• We love Redis to death
• We’re in a platonic relationship with
MongoDB
7. 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
10. Where to start?
• First, why are you even considering
this?
• Very, very clearly define the problem
11. 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?
14. Building Criteria
• Make a list of real criteria
• These should be points which will help you
differentiate
15. 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
16. 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
39. Extras with Redis
• Most libraries provide a session
handler
• Super-easy to install
40. Extras with Redis
• Most libraries provide a session
handler
• Super-easy to install
• Ability to treat it like memcached
41. 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
42. 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
44. Why not the others?
• Memcached has no disk persistance
45. Why not the others?
• Memcached has no disk persistance
• I can’t rely on the data (easily)
46. 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
48. Use Case #2 at
Offers.com
• Process (diff / update) 10 million
SKU-level items from 100 partners
49. Use Case #2 at
Offers.com
• Process (diff / update) 10 million
SKU-level items from 100 partners
• Do this once per day
50. 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
51. 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
59. Why Documents?
• Data arrives in various XML formats
• No one likes XML except Java devs
60. Why Documents?
• Data arrives in various XML formats
• No one likes XML except Java devs
• Need flexible schema
61. Why Documents?
• Data arrives in various XML formats
• No one likes XML except Java devs
• Need flexible schema
• Need searching / querying by various
fields
66. Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
67. Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
• Ad-hoc queries
68. Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
• Ad-hoc queries
• Extremely low learning curve
69. Why MongoDB
• Fast
• Outstanding connectivity
• Schema free
• Good community support
• Ad-hoc queries
• Extremely low learning curve
• They sent us stickers
75. Downsides of Mongo
• I still don’t trust that my data is 100%
safe
• Aggregates and map/reduce are
cumbersome compared to CouchDB
76. 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
79. Where we failed
• We didn’t clearly articulate the
problem
• We built a brilliant product catalog
parser
80. 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