~/talk

The 30-Month Migration

Talkat RailsConf 2019 · 2019-05-01..05-03· [ruby-on-rails, devops-and-delivery]
slides:none on file

A sustained 30 months effort restructures contacts across two databases into a single Postgres schema in four stages: migrate from Neo4j to Active Record using a Ruby switching model and feature flag, convert UUID primary keys to integer IDs with reversible migration helpers, run SQL CTE upserts (about 10 minutes per realtor versus ~1 day in Ruby) to de-duplicate shared contacts, and finally replace the join table with direct foreign keys plus triggers; extensive cloning, CI, QA swarms and spot checks validate each step and it works.

AI-written summary · about

  1. 0:00Intro
  2. 2:23Three Principles
  3. 6:57Making a Plan
  4. 7:27Schema Definition
  5. 8:13Switching Models
  6. 11:23Testing
  7. 12:45Executing
  8. 13:04Finishing the Job
  9. 14:56A Spike
  10. 15:52Problem: Foreign Key References
  11. 17:04Problem: Polymorphic Tables
  12. 17:47Discovering Constraints
  13. 18:22Five Big Migrations
  14. 18:38From Spike to Solution
  15. 19:29Being Careful
  16. 22:40The Strategy
  17. 24:18INSERT with ON CONFLICT
  18. 28:08What Drove the Change?
  19. 32:22The Plan: A 12-Step Epic
  20. 33:18Tracking Progress
  21. 33:36Auditing Trigger Activity
  22. 34:47Slow and Steady
  23. 35:11Keep Looking Ahead
  24. 35:34Each Stage Was Different!
  25. 36:12Leverage Your Database
  26. 37:21Focus: The Two-Edged Sword
  27. 38:00What Would We Do Differently?
~/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.