Upload
coraline-ehmke
View
244
Download
0
Embed Size (px)
Citation preview
IN A PREVIOUS LIFE...
BUILDING A PPC LANDING PAGE HOSTING PLATFORM
INTERACTION-LEVEL ANALYTICS
A/B AND MULTIVARIATE TESTING
DYNAMIC PAGE CONTENT
REQUIREMENT FOR REAL-TIME REPORTING
DOES THIS SOUND FAMILIAR?
MODELS CONSTANTLY EVOLVING IN RESPONSE TO ILL-DEFINED REQUIREMENTS AND CHANGING NEEDS
POLYMORPHIC REPRESENTATIONS OF USER INTERACTIONS
VERSIONING TO SUPPORT MULTIVARIATE TESTING REQUIREMENTS
NEED TO QUICKLY SCALE UP IN RESPONSE TO DEMAND
ACTIVE RECORD:THE WRONG HAMMER
BIG DATA = PAINFUL MIGRATIONS
RAKE TASKS TO MANAGE DATA TRANSFORMATIONS
SINGLE TABLE INHERITANCE NIGHTMARE
CHALLENGE OF SCALING UP A SQL DATABASE
MONGODB TO THE RESCUE
DOCUMENT MODEL ALLOWS FOR THE EASY ADDITION OF NEW FIELDS
EMBEDDED COLLECTIONS
BUILT-IN VERSIONING
MAP REDUCE FOR FAST DATA AGGREGATION
SCALING IS EASY
THE DESIGN PHILOSOPHY
DATA MODELS SHOULD BE EASY TO CODE, EASY TO MANAGE, AND HIGHLY PERFORMANT
DATABASES SHOULD BE ABLE TO SCALE HORIZONTALLY WITH EASE
PRACTICAL CONSIDERATIONS
STOP THINKING IN TABLES, START THINKING IN DOCUMENTS
EMBEDDED COLLECTIONS, BUT USE CAREFULLY
FULLY CAPABLE OF TRADITIONAL RELATIONS
NO SCHEMAS, NO MIGRATIONS
NO SQL (USE JAVASCRIPT)
MONGOID
MY OBJECT-DOCUMENT-MAPPER (ODM) OF CHOICE
ACTIVEMODEL MAKES MONGOID DOCUMENTS FIRST-CLASS CITIZENS IN RAILS
PARTIAL UPDATES (CHANGED FIELDS ONLY)
CHAINABLE, LAZY-EVALUATED QUERIES VIA CRITERIA
HELL YEAH PERFORMANCE
1,000,000 DOCUMENTS
2.93 GHZ IMAC WITH 8GB RAM
MODEL#CREATE: 2,392 / SECOND
MODEL#UPDATE_ATTRIBUTE: 2,945 / SECOND
MODEL.ALL#EACH: 2,325 / SECOND
USE CASES
BIG DATA(LOGS, ANYONE?)
COMPLEX QUERIES(MAP REDUCE IS YOUR FRIEND)
RAPIDLY EVOLVING MODELS
LIBERAL USE OF JSON
RELATIONS THAT WANT TO BE EMBEDDED(E.G. ORDERS <=> LINE ITEMS)