~/talk

Murdering our Mongo Database (or how we migrated to a relational database)

Talkat RubyConf Au 2020 · 2020-02-20..02-21· [databases]
slides:none on file

A migration from MongoDB to MySQL with zero downtime that actually explains how: design relational schemas to accept missing fields, implement dual writing to both stores, backfill documents via the API, and flip reads gradually using scientist experiments that surface mismatches. Found bugs include an off‑by‑one index error and MySQL silently accepting invalid enum writes. Operational lessons: EC2 instance‑store wiped data during an upgrade, Prometheus load caused thousands of concurrent connections, and request‑cursing plus Jaeger tracing reveal lingering Mongo usage.

AI-written summary · about

  1. 0:00Introduction
  2. 1:53What is MongoDB
  3. 3:28Tradeoffs
  4. 4:49Why MongoDB
  5. 6:18Migration
  6. 7:53Monolith Architecture
  7. 8:56Issues with Mongo
  8. 13:43No ORM
  9. 15:04Removing Mongo
  10. 16:55Migration in small steps
  11. 17:23Migrating records
  12. 19:04Testing in production
  13. 21:30Switching to MySQL
  14. 24:18Why API from Mongo
  15. 25:19Conclusion
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.