Data Diffing Based Software Architecture Patterns
summary
Covers a production Clojure/ClojureScript diff/patch library EditScript and two algorithms (quick and A algorithms) that run in production for years; claims diffs are smaller than full state, patch is fast, and using diffs cuts a GraphQL schema from thousands of lines to a few endpoints so a complete SPA UI rewrite ships in months. Shows externalizing per-chat agent state via Kafka diff logs to recover sessions and using differential synchronization (Google Docs style). Recommends avoid vectors* for diff-heavy models.
AI-written summary · about
chapters (17)
- 0:00Intro
- 0:22What is diffing?
- 2:13Evolution of diffing (2)
- 5:15Diffing enables decoupling
- 7:18Diffing encourages data model reuse
- 8:02Diffing tracks changes
- 8:43Editscript: a Clojure data diffing library
- 10:04Case study: Juji Studio UI Re-design
- 11:24UI Data model: config doc
- 12:12Traditional GraphQL API
- 13:18Diffing based GraphQL API
- 15:08Case study: externalize application states
- 17:03Case study: reduce component dependency • Stateful components depend on one another • Introducing user inable system functions.
- 20:39Case study: synchronize collaborative editing
- 22:29Differential Synchronization
- 26:35Data modeling guideline: Don't use vector
- 28:16Conclusion
related talks
40mDelta for your Data: How to efficiently track and store deeply nested data changes
25mDomain-specific model differencing in visual concrete syntax
22mShifting Left, Shifting Right
01h 01mArchitecture Decisions: A Case Study -
50mThe Babel Fish Data: A Case Study
33mClojure Dispatches From a National Research Lab
01h 01mLegacy Architecture Migration Patterns with DDD
46mMeet the Social Side of Your Architecture
