Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

{ "Author" : "Henrik Ingo", "Year" : 2016, "Sharing" : "You may share and modify this presentation under the Creative Commons Attribution license" }

About


{ "About me" : { 
    "Name": "Henrik Ingo",
    "Context": "3 years Solutions Architect, now in server-perf.",
    "Stuff I've influenced" : [ 
        "We need a storage engine API",
        "We need to do somehing about replication protocol",
        "Partial indexes (specific customer request)" ],
  }
}

{ "About this talk" : {
    "General idea" : [
      "Share field point of view.",
      "Dreams and fears of a database consultant or advanced user." ],
    "Table of Contents" : {
      "Part 1" : "The Field team",
      "Part 2" : "What experts do with the product", }
  }
}

People


{ "Field team" : [
    "Solutions Architect",
    "Consulting Engineer",
    "Technical Services Engineer"
  ]
}

{ "Type" : "Solutions Architect",
  "aka"  : "Pre-Sales Consultant",
  "What we do" : [
    "Attend sales calls & meetings",
    { "Help prospects evaluate MongoDB" : [
        "Migrate some functionality from old app to MongoDB",
        "Meet performance goal",
        "Try Ops Manager"]
    },
    "Account management",
    "Evangelism" 
  ],

{ "My dream" : [
    "Do the PoC that leads to largest deal in company history.",
       "While helping customer replace an old Oracle Exadata / DB2.", 
           "(2013 this would have been Couchbase / Cassandra. And we'd lost.)",
       "Saving 10MUSD in the migration and enabling them to scale 100x."
  ],
  "My fear" : [
    "A bug or missing functionality prevents successful PoC.",
    "Note: Handling demos without bugs is part of the job!"
  ],

{ "Lifestyle" : {
    "Sample calendar page" :
      "",

{   "Traveling" : "Working lunch with Koby & Sharon",

{   "Downside" : "Can be hard on family",

{  "Meeting open source friends" : {
      "Sample Facebook post" : [
        "Good Morning HighLoad++.",
        "Morning meeting with our translators went like this:",
        "Translator: So Henrik, I see you have 2 talks after each other.",
        "Are they a sequel?",
        "Me: No they are different topics. In fact they are No-sequel.",
        "Bruce Momjian and Alvaro Hernandez from PostgreSQL", 
        "burst into violent laugh attack"
      ]
    }
  }

}

{ "Type" : "Consulting Engineer",
  "Trivia" : "Most customers prefer buying consulting over support",
  "What we do" : [
    "Health checks",
    "Architecture & design",
    "Fixing performance / other issues customer has",
    { "Dedicated consulting engineer" : [
        "Regular MongoDB expertise throughout the lifecycle of a project",
        "Building MongoDB as a Service within the Enterprise" ] },
    "Training"
  ],

True story!
(MongoDB 2.6)


{ "My fear" : [
    "Last month I taught customer",
    "how to use covering indexes.",
    "Today's GA release announcement",
    "says new query planner doesn't use", 
    "covering index scans (in some cases).",
    "When they upgrade, my queries will suck."
  ],

True story!
(12000 x improvement)


{ "My dream" : [
   "Customer had query running for hours", 
   "trashing the servers.",
   "After adding indexes and",
   "optimizing the aggregation pipeline,",
   "it now completes in 3 seconds."    
  ],

{ "Lifestyle" : {
    "Like SA, but" : [
      "Meet less customers / week",
      "Away from home more"  
    ]
  }
}

{ "Type" : "Technical Services Engineer",
  "aka"  : "Support Engineer",
  "What we do" : [
    "Turn unhappy customers back into happy customers!",
    "Analyze and respond to customer issues in Jira",
      "Often real problem is something else than customer thinks it is",
    "We do phone calls. We help with operating system issues...",
    "Mini health cheks, optimizations",
    "Named TSE",
    "Proactive support",
    "Community support"
  ],

True story!


{ "My dream" : [
    "Customer had deleted all their data.",
    "MongoDB tried to prevent them from doing that, but they insisted.",
    "Working as a team, around the clock, for 9 weeks,",
    "we managed to restore 100% of customer data."
  ],
    "My fear" : [
      "A bug in MongoDB takes down production systems",
      "on a weekend when I'm on call."
  ],

{ "Lifestyle" : [
    "Don't get to travel",
    "But we have bacon",
    "Weekend responder",
    "Even after shift ends, they still follow up on their tickets",
    "When you make a bug, they take care of the mess",
    "Hug your nearby TSE"
  ]
}

What experts do with the product


{ "These things are important, but not to a SA/CE" : [
    "Easy to use",
    "Easy(ish) to scale & HA",
    "Developers love the API",
    "Agile",
    "Security (finance, government)"
  ]
}

{ "Query optimization" : [
    "explain()",
    "Add missing index" ],
  "50% of all problems" : "are this!",
  "MongoDB"             : "is good at this!"
}

{ "Joke version" : {
    "The other 50%" : "Tell them to buy more RAM"
  }
}

{ "About application changes" : {
    "Oracle expert" : "Buy more IOPS",
    "MySQL expert"  : "Optimize the app's DB access"
  }
}

{ "MongoDB specific" : {
    "Index tuning" : "Still a thing, but <50%",
    "My theory"    : "Document model + CRUD is easier to get right",
    "Training"     : "A lot of new users"
  }
}

{ "Advanced indexing" : {
    "Compound PK" : "We::hack::this::with::regex::now",
    "Clustered PK" : {
      "Not to mention" : "clustered secondary keys",
      "For document databases" : "clustered indexes > covering keys"
    },
    "Covering index" : "Fine, but must include shard key"
  }
}

{ "Different db products / engines" : {
    "Philosophy" : "Right tool for the right job",
    "Storage engines" : "Powerful concept. Separates API vs algorithms."
  }
}

{ "#MonitoringLove" : {
    "Travel lightly" : "mtools, timeseries.py",
    "Ops Mgr?" : [
      "Don't assume root access",
      "Too complex to install for a CE engagement",
      "Sometimes need more detail than this"
    ],
    "mongod" : "has always been good at providing metrics!"
  }
}

{ "NOT important" : [
    "Performance for 3.2 improved 2x (on a standalone instance without oplog)",
        ">99% of users use replication",
    "Most users DON'T use sharding",
        "But they feel good knowing that they can if they have to",
    "CPU bound benchmarking"
  ]
}

{ "IMPORTANT" : [
    "Uprade incompatibilities",
    "Online upgrades",
    "Stable performance > peak performance",
        "aka No surprises",
    "Backups",
    "Do find() and aggregate() support the same set of operators yet?"
  ]
}

{ "What do we fear" : [
    "When I can't solve a problem with configuration/application change",
        "Note: undocumented config option is better than no configurability",
        "Our WT integration is cool in this regard!",
    "Backwards incompatibility: It used to work, now it doesn't.",
    { "Democratic decision making" : 
        "I'm an expert. Sometimes the majority is wrong. Trust me." }
  ]
}

{ "Special thanks to" : 
    "Those writing the MongoDB manual. I'm a heavy user!"
}
HToggle this help
SpaceForward
Right, Down, Page DownNext slide
Left, Up, Page UpPrevious slide
POpen presenter console