This lesson on The Cost of Bad Models — Three War Stories is hands-on and example-driven. You will evaluate and choose between One Big Table (OBT), Kimball Dimensional Modeling, Inmon Corporate Information Factory (CIF), and Data Vault architectures. You will balance query latency, development velocity, data redundancy, and historical auditability to match specific enterprise analytical workloads.
What You'll Be Able To Do
- Select the optimal data modeling paradigm based on organizational governance, velocity, and analytical query requirements.
- Contrast the implementation overhead and join penalties between One Big Table (OBT) and Kimball dimensional schemas.
- Evaluate the trade-offs of Inmon 3NF architectures versus Kimball star schemas for enterprise single-source-of-truth governance.
- Identify scenarios where Data Vault provides superior auditability and historical tracking compared to business-process-centric Kimball models.
Detailed Concept Walkthrough
1. One Big Table Architecture
One Big Table (OBT) fully denormalizes all dimension attributes and numeric facts into a single wide relation to maximize query simplicity and remove join overhead.
- Mechanism: Data engineers pre-join transactional measures directly with customer, product, and geographic descriptive attributes into a flat structure before ingestion or downstream consumption.
- Under the Hood: Modern columnar cloud data warehouses (e.g., Snowflake, BigQuery) compress repeated columnar values efficiently and scan only queried columns, bypassing relational join execution plans.
- Trade-off & Nuance: While query construction is trivial for end users and performant on moderate datasets, schema mutations require re-engineering the wide table, and massive data volume expansion causes high storage redundancy and unwieldy maintenance.
-- Example OBT: Flattening transactional facts with customer and store dimensions
CREATE OR REPLACE TABLE obt_sales_analytics AS
SELECT
f.order_id,
f.order_timestamp,
f.sales_amount,
f.quantity,
c.customer_id,
c.customer_name,
c.customer_segment,
s.store_id,
s.store_region
FROM raw_orders f
LEFT JOIN raw_customers c ON f.customer_id = c.customer_id
LEFT JOIN raw_stores s ON f.store_id = s.store_id;
Key Takeaway: OBT provides rapid time-to-value and eliminates joins in columnar engines but scales poorly under evolving schemas and massive data complexity.
2. Kimball Dimensional Modeling
Kimball is a bottom-up, process-centric modeling technique that separates operational events into Fact tables and descriptive context into Dimension tables arranged in star or snowflake schemas.
- Mechanism: Fact tables store foreign keys and additive numeric metrics (e.g., sales revenue, quantities), while shared Dimension tables hold contextual business attributes connected via primary/foreign key relationships.
- Execution Flow: Departmental data marts query star schemas directly, allowing BI tools to generate performant, predictable multi-table SQL joins using conformed dimensions across business processes.
- Audit Limitation: Because the model optimizes for specific business reporting processes, altering underlying business rules or tracking end-to-end historical data lineage across unmodeled attributes can be difficult and inflexible.
-- Kimball Star Schema: Conformed Dimension and Fact Table
CREATE TABLE dim_customer (
customer_sk INT PRIMARY KEY,
customer_id VARCHAR(50),
customer_segment VARCHAR(50)
);
CREATE TABLE fact_sales (
sales_sk INT PRIMARY KEY,
customer_sk INT REFERENCES dim_customer(customer_sk),
order_date_sk INT,
sales_amount DECIMAL(18, 2),
quantity INT
);
Key Takeaway: Kimball star schemas optimize BI querying and analytical intuitiveness around business processes at the expense of comprehensive forensic historical tracking.
3. Inmon Corporate Information Factory
Inmon CIF is a top-down enterprise architecture centered around an atomic, highly normalized (Third Normal Form) Enterprise Data Warehouse (EDW) that serves as the single source of truth.
- Mechanism: Data is extracted from disparate source systems, cleansed, and loaded into an integrated 3NF relational core data warehouse to eliminate redundancy and enforce referential integrity.
- Execution Flow: Specialized departmental data marts (often dimensional) are downstream read-only artifacts generated from the normalized core rather than populated directly from raw source systems.
- Governance & Overhead: This architecture guarantees strict enterprise-wide data governance, auditability, and consistency, but demands substantial upfront schema design, high engineering complexity, and longer initial delivery timelines.
-- Inmon 3NF Core EDW: Normalized Entities Enforcing Integrity
CREATE TABLE edw_customers (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(255)
);
CREATE TABLE edw_customer_addresses (
address_id INT PRIMARY KEY,
customer_id INT REFERENCES edw_customers(customer_id),
street_address VARCHAR(255),
postal_code VARCHAR(20)
);
Key Takeaway: Inmon 3NF minimizes data anomalies and establishes a pristine enterprise source of truth, but requires significant upfront investment and slower delivery cycles.
4. Data Vault Modeling
Data Vault is a hybrid modeling approach designed to provide long-term historical traceability, auditability, and agile parallel loading across disparate enterprise systems.
- Mechanism: The architecture decouples business concepts into Hubs (unique business keys), Links (relationships and transactions between keys), and Satellites (contextual attributes and historical timelines).
- Under the Hood: Satellites store raw historical snapshots with load timestamps and record sources, allowing non-destructive insertions without updating existing records in place.
- Best Practice: Data Vault serves as the durable enterprise staging and raw storage layer, sitting upstream of downstream Kimball dimensional marts or denormalized reporting layers.
-- Data Vault: Hub and Satellite Structure
CREATE TABLE hub_customer (
hk_customer_id CHAR(32) PRIMARY KEY, -- Hash key
customer_id VARCHAR(50) NOT NULL,
load_dts TIMESTAMP NOT NULL,
rec_src VARCHAR(50) NOT NULL
);
CREATE TABLE sat_customer_detail (
hk_customer_id CHAR(32) REFERENCES hub_customer(hk_customer_id),
load_dts TIMESTAMP NOT NULL,
customer_segment VARCHAR(50),
rec_src VARCHAR(50) NOT NULL,
PRIMARY KEY (hk_customer_id, load_dts)
);
Key Takeaway: Data Vault provides enterprise-grade auditability and historical tracking through modular Hubs, Links, and Satellites.
Topics Covered in The Cost of Bad Models — Three War Stories
- Enterprise Modeling Overview (0:00 - 0:43) — The instructor introduces the evolution of enterprise modeling and lists the four core architectures.
- One Big Table Strategy (0:43 - 2:49) — The lesson examines the pros and cons of denormalizing datasets into a single wide table for columnar systems.
- Kimball Dimensional Modeling (2:49 - 4:50) — The instructor outlines bottom-up star schemas, dimensional data marts, and business-process tracking trade-offs.
- Inmon Corporate Information Factory (4:50 - 6:47) — The lesson details normalized 3NF central data warehouses and evaluates their governance advantages against upfront delivery costs.
- Introduction to Data Vault (6:47 - 7:01) — The instructor introduces Data Vault as a hybrid architecture built for enterprise auditability and agility.
Data Modeling & Warehousing Fundamentals Cheat Sheet
-
One Big Table (OBT)— Denormalizes facts and dimensions into single wide tableCREATE TABLE obt_sales AS SELECT f.*, d.* FROM facts f JOIN dims d ON f.id = d.id; -
Kimball Star Schema— Separates measures in facts from descriptors in dimensionsSELECT d.region, SUM(f.sales) FROM fact_sales f JOIN dim_geo d ON f.geo_id = d.id GROUP BY 1; -
Inmon 3NF EDW— Normalizes enterprise data into single source of truthCREATE TABLE edw_orders (order_id INT PRIMARY KEY, cust_id INT REFERENCES edw_cust(id)); -
Data Vault Hub— Stores unique business keys and surrogate hash keysCREATE TABLE hub_order (hk_order CHAR(32) PRIMARY KEY, order_id VARCHAR(50), load_ts TIMESTAMP); -
Data Vault Link— Models relationships between multiple business key hubsCREATE TABLE lnk_order_cust (hk_lnk CHAR(32) PRIMARY KEY, hk_order CHAR(32), hk_cust CHAR(32)); -
Data Vault Satellite— Tracks descriptive context and history over timeCREATE TABLE sat_cust (hk_cust CHAR(32), load_ts TIMESTAMP, name VARCHAR(100), PRIMARY KEY(hk_cust, load_ts));
Comparison Table
| Architecture | Primary Normalization Level | Core Advantage | Primary Trade-off |
|---|---|---|---|
| One Big Table | Fully Denormalized (Flat) | Zero relational joins needed | Storage redundancy and schema rigidity |
| Kimball | Denormalized Star/Snowflake | Intuitive querying for BI | Limited historical forensic tracking |
| Inmon (CIF) | Normalized (3NF Core) | High data integrity single-source-of-truth | High upfront design complexity |
| Data Vault | Hybrid (Hubs/Links/Satellites) | Full auditability and agility | Complex multi-table join structures |
Common Pitfalls
- Mistake: Using One Big Table for highly volatile enterprise entities. Avoid: Choose Kimball or Data Vault when schemas and business attributes change frequently.
- Mistake: Expecting Kimball star schemas to provide full historical forensic auditing. Avoid: Implement Inmon 3NF or Data Vault when strict audit traceability is mandated.
- Mistake: Building departmental BI dashboards directly on top of Inmon 3NF tables. Avoid: Generate dimensional data marts downstream from the 3NF core for user reporting.
FAQs
- Why is One Big Table performant in modern data warehouses like Snowflake or BigQuery? Columnar storage engines read only the requested columns and compress repetitive string values efficiently, avoiding multi-table relational join computation.
- What is the difference between Inmon and Kimball delivery methodologies? Inmon builds a top-down, normalized central EDW first before deriving marts, whereas Kimball builds bottom-up dimensional marts centered on specific business processes.
- When should an enterprise transition from Kimball to Data Vault? Transition when you need full historical traceability across source systems, frequent integration of new sources, or audit-proof lineage that dimensional models cannot support.