The Hardest Part of Our SAP Migration Wasn't the Data. It Was Timing
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-08-2026 03:26 AM
Part 2 of my series on building an enterprise data platform on Databricks — this one's about Silver.
Part 1 covered why we ran two ingestion paths in parallel (GoldenGate CDC + JDBC batch) and kept them as separate bronze tables. If you missed it:
https://medium.com/@savlahanish/why-we-used-two-bronze-tables-instead-of-one-and-why-it-mattered-9c4...
Part 2 is where it got harder.
When both Bronze tables exist simultaneously, you inevitably end up with the same logical record in two places — captured differently, timestamped differently, and neither timestamp is fully reliable on its own.
Three things this covers that most CDC tutorials don't:
→ The 5-minute overlap window where _ingest_time alone gives you the wrong answer - and the tiebreaker we added to fix it
→ How CDC DELETE events silently keep deleted SAP records alive in Silver if you don't handle them explicitly in your MERGE statement
→ The natural key mistake we made on one table - only caught when a business analyst noticed transaction counts in Silver didn't match SAP
Has anyone else hit timing issues during the initial load window on a similar migration?
Curious how others handled the overlap period between snapshot and streaming.