At my previous company we had a user activity table that was getting too large and query times were degrading. I redesigned it using a star schema with a separate fact table for events and dimension tables for users and content. I added date partitioning on the event timestamp so queries would only scan the relevant day range. The redesign cut average query time by forty percent and the pipeline has been running in production for over a year with no major issues. The data science team uses it daily for their dashboards.
When our team was building the data model for Stories engagement, I pushed back on a flat event log design because the PM had already flagged two upcoming feature additions — reactions and reshares. Instead of modelling for the current use case only, I introduced a bridge table for interaction types and SCD Type 2 on user attributes so demographic breakdowns would stay accurate historically. I documented the extension pattern so any DE could add a new interaction type without touching the fact table. Eight months later, when reshares launched, the schema absorbed the new event with a single bridge table row — no rewrite, no downstream breakage. The data science team onboarded to reshare metrics in two days instead of the usual two-week schema migration cycle.