About This Talk
At the Greenplum Community Meetup in 2021, I shared a candid story about implementing Anchor Modeling on Greenplum โ and the unexpected challenges that emerged when an elegant theoretical methodology met the realities of an MPP database engine. The talk covered what worked, what didn’t, and the practical workarounds we developed.
The Problem
Anchor Modeling is beautiful on paper: 6th normal form, zero-impact schema evolution, full historization by default. But Greenplum is optimized for wide, denormalized tables with predictable JOIN patterns โ the exact opposite of what Anchor Modeling produces. The clash between methodology and technology created performance challenges that weren’t obvious until production.
Key Ideas
The Promise โ Why we chose Anchor Modeling: the business required extreme schema flexibility, new data sources arrived weekly, and the cost of ALTER TABLE operations on large Greenplum tables was prohibitive. Anchor Modeling’s table-per-attribute approach seemed like the perfect solution.
The Reality โ What happened in production: the extreme number of JOINs required by Anchor Modeling overwhelmed Greenplum’s query optimizer. Queries that were simple in dimensional models became 20-way JOINs. Query planning time sometimes exceeded query execution time.
The Workarounds โ How we adapted: materialized views for common query patterns, hybrid approaches that kept Anchor Modeling for loading but pre-joined data for consumption, query rewriting strategies, and Greenplum-specific optimizations (distribution key selection for Anchor tables, partition strategies for temporal attributes).
The Lessons โ Methodology and technology aren’t independent choices. The best modeling approach depends not just on business requirements but also on the capabilities and limitations of your database engine. Always prototype at scale before committing.
Why It Matters
This talk is a cautionary tale for anyone evaluating DWH methodologies. The theoretical elegance of an approach doesn’t guarantee practical success. Understanding the interaction between your modeling methodology and your database engine is essential.