Sitemap
Harsh Gupta

Harsh Gupta

Senior BI Engineer turning complex SQL, dirty data, and messy dashboards into fast, reliable business insights

🛑 The Death of the Star Schema: Why Modern Warehouses Swapped Kimball for One Big Table (And Why It’s a Trap)

5 min readOct 28, 2026

--

By Harsh Gupta

Press enter or click to view image in full size

For nearly three decades, Ralph Kimball’s dimensional modeling was the undisputed law of data warehousing.

Every engineer learned the catechism:

  • Normalize entities into shared Dimensions (dim_customers, dim_products).
  • Record transactional events into lean, surrogate-keyed Fact tables (fact_orders).
  • Join them at query time inside your BI tool to build a star schema.

It was an elegant, storage-efficient architecture designed for an era when gigabytes of disk cost thousands of dollars and database storage had to be conserved at all costs.

Then the cloud happened.

Storage decoupled from compute. Columnar formats (Parquet, ORC, Snowflake micro-partitions, BigQuery Capacitor) became the universal standard. Suddenly, storage was practically free, and compute — specifically, the distributed shuffle memory required to join six large tables — became the single biggest line item on your cloud invoice.

The modern data stack responded by declaring the star schema dead, replacing it with One Big Table (OBT): flattening dimensions and facts into a single, denormalized, 120-column table.

On paper, OBT seems like an obvious win. But treating OBT as a silver bullet is creating a brand-new architectural crisis in enterprise production.

Here is why teams are abandoning Kimball, the hidden costs of wide-table denormalization, and the hybrid architecture senior teams use to survive at scale.

Why Columnar Storage Made OBT the Default

In a traditional row-oriented relational database (Postgres, Oracle, SQL Server), querying a 120-column table to view three metrics is suicidal: the engine has to read the entire row off disk into memory, burning massive I/O.

Get Harsh Gupta’s stories in your inbox

Join Medium for free to get updates from this writer.

In modern columnar lakehouses and warehouses, the physics are completely inverted:

  1. True Column Pruning: If an executive dashboard only needs order_date, region, and total_amount, the engine scans only those three physical columnar files. The other 117 columns are completely ignored at zero I/O cost.
  2. Extreme Dictionary Compression: In an OBT, repeated strings like customer state or product category compress down to tiny integer dictionary pointers. An 80-column denormalized table often takes up barely more physical storage than a normalized star schema.
  3. Zero Distributed Shuffle Overheads: The most expensive operation in a distributed MPP warehouse is a hash join. When a query joins an 800-million-row fact table with three dimensions, compute nodes must shuffle partition keys across the network. With OBT, all attributes already sit on the exact same row. Joins drop to zero, and query latency drops from 12 seconds to 400 milliseconds.

The Hidden Trap: Where One Big Table Explodes

If read performance is so superior, why is OBT bankrupting production teams when datasets reach scale?

[ Update: Customer changes shipping tier ]
│
├── Star Schema: Update 1 row in dim_customers (Cost: $0.0001)
│
└── One Big Table: Rewrite 50M historical order records (Cost: $18.40)

1. The Write-Amplification Disaster (Slowly Changing Dimensions)

In real business, dimension attributes change. A customer updates their subscription tier. A sales rep changes territories. A product category gets reclassified.

  • In a Star Schema: You insert or update a single record in dim_customer. Downstream historical fact records stay untouched.
  • In an OBT: That single dimension mutation invalidates every historical transaction ever associated with that customer. If the customer has 10,000 orders across 5 years, you must execute a heavy MERGE across immutable columnar files, triggering massive Copy-on-Write rewrites and file churn.

2. Metric Split-Brain (The dbt DAG Sprawl)

When teams ditch centralized dimensional modeling, they rarely build one big table; they build fifteen slightly different variations of OBT across various dbt models:

  • Marketing builds obt_customer_revenue using an INNER JOIN on campaign IDs.
  • Finance builds obt_financial_metrics using a LEFT JOIN on billing invoices.

Because the underlying entities are no longer governed by a single canonical dimension table, the two teams inevitably end up reporting different total active customer counts to the board.

3. Metadata and Footer Overhead

While columnar storage prunes unread data, the query planner still has to parse file footers, column-level metadata, and min/max statistics for every single column across thousands of Parquet blocks. At petabyte scale, running ad-hoc queries against a 200-column OBT can spend 40% of its execution time just parsing metadata before scanning a single byte of data.

The Production Framework: The Dual-Layer Architecture

Senior analytics architects don’t pick sides in the religious war between Kimball and OBT; they align the architecture to the workload lifecycle:

[ Bronze: Raw Ingestion ] 
│
▼
[ Silver: Governed Kimball Star Schema ] ──> Normalized Core | Strict Lineage | Single Source of Truth
│
▼
[ Gold: Targeted One Big Tables (OBT) ] ──> Domain-Specific Marts | Sub-Second BI | Zero Joins
  • Normalize in the Silver Layer (The Source of Truth): Keep your core integration layer strictly dimensional. Clean facts, surrogate keys, and SCD Type 2 dimensions. This is where business logic, deduplication, and data governance live. All dimension mutations happen here cleanly with zero write amplification.
  • Denormalize at the Gold Presentation Layer (The Query Fast-Path): Do not force BI tools or dashboard users to execute 6-table joins against your core warehouse. Materialize narrow, domain-specific OBT marts (e.g., obt_sales_performance_current_year) that pre-join dimensions for executive dashboards.
  • Partition Wisely: Ensure your Gold OBT models are strictly partitioned by arrival or event date, allowing incremental partition overwrites (INSERT OVERWRITE) so updates never trigger full-table scans.

The Production Architecture Blueprint

Press enter or click to view image in full size

Stop Fighting the Tool Physics

The debate between Kimball’s Star Schema and One Big Table isn’t a theological question; it is an engineering trade-off between write economics and read latency.

If you denormalize your entire data warehouse from day one, you will drown in copy-on-write overhead, metric divergence, and failed updates. If you force modern cloud BI tools to run five-table joins across raw facts, your users will drown in spinning query spinners.

Governing your data in normalized dimensions and serving it through targeted, denormalized marts gives you the best of both worlds: unshakeable data integrity where it matters, and sub-second performance where users look.

🚀 Take the Hot Seat: If you want to practice defending real-world data modeling trade-offs, designing resilient Silver-to-Gold pipelines, and auditing cloud query execution plans in an interactive sandbox, check out PracHub. It’s built specifically to help data and BI professionals master hands-on database internals, schema design, and senior-level architectural trade-offs before high-stakes reviews and interviews.

Where does your team sit on the data modeling spectrum: are you still running traditional Kimball star schemas, have you gone all-in on One Big Table (OBT), or are you running a hybrid model? Let’s debate architecture in the comments!

Harsh Gupta

LinkedIn

--

--

Senior BI Engineer turning complex SQL, dirty data, and messy dashboards into fast, reliable business insights

See more from me