Ebook · Hoofdstuk 2 van 10

Architectuurprincipes en -patronen

Kimball, Inmon en Data Vault — de drie grote stromingen vergeleken, plus de moderne lakehouse-architectuur.

De drie grote stromingen

18 min leestijd Beginner-Gevorderd

De vraag "hoe ontwerp je een datawarehouse?" heeft drie klassieke antwoorden, elk met een eigen filosofie en sterke aanhang in de community. Het is geen religieuze keuze — moderne projecten mengen vaak elementen — maar je moet ze kennen om te begrijpen waarom je iets doet zoals je het doet.

1. Kimball — dimensionele bottom-up aanpak

Ralph Kimball publiceerde in 1996 The Data Warehouse Toolkit, dat tot op de dag van vandaag de facto bijbel is voor BI-developers. Zijn aanpak:

Voorbeeld van een minimaal Kimball star schema:

-- Fact table: één rij per verkoopregel
CREATE TABLE fact_sales (
  sales_key       BIGINT IDENTITY,
  date_key        INT,         -- FK naar dim_date
  customer_key    INT,         -- FK naar dim_customer
  product_key     INT,         -- FK naar dim_product
  store_key       INT,         -- FK naar dim_store
  quantity        INT,
  unit_price      DECIMAL(10,2),
  revenue         DECIMAL(12,2),
  load_timestamp  TIMESTAMP
);

-- Dimension table: contextuele attributen, gedenormaliseerd
CREATE TABLE dim_customer (
  customer_key    INT IDENTITY PRIMARY KEY,    -- surrogate key
  customer_id     VARCHAR(50),                 -- business key
  name            VARCHAR(200),
  segment         VARCHAR(50),
  country         VARCHAR(50),
  city            VARCHAR(100),
  valid_from      DATE,
  valid_to        DATE,
  is_current      BOOLEAN
);

De surrogate keys (customer_key) ontkoppelen het warehouse van de bron-IDs. Dat lijkt overdreven, maar het maakt SCD Type 2-historie mogelijk en beschermt je tegen wijzigingen aan de business key.

Sterk in

Snelle time-to-value, intuïtief voor business users, uitstekend voor BI-tools (Power BI, Tableau, Looker zijn er allemaal op gebouwd). Je levert binnen weken een werkende data mart op.

Slowly Changing Dimensions in Kimball

Een dimensie is zelden statisch — klanten verhuizen, productcategorieën worden hernoemd, salesgebieden gereorganiseerd. Kimball heeft hiervoor zeven SCD-types gedefinieerd, waarvan deze drie het meest gebruikt worden:

SCD Type 2 is in 90% van de gevallen wat je wilt voor business-kritische dimensies. Type 1 voor velden waar niemand naar terugkijkt, Type 3 voor zeldzame "voor en na"-vergelijkingen.

Wanneer Kimball NIET de juiste keuze is

Vermijd Kimball als single source of truth wanneer je tientallen bronsystemen integreert die elkaar overlappen of tegenspreken — je krijgt dan conformed dimensions die voortdurend gestuurd moeten worden. Ook bij strikte regulatory requirements (financieel, medisch) loop je tegen de auditgrens aan: dimensionele modellen leggen niet automatisch herkomst en wijzigingsgeschiedenis vast op recordniveau.

2. Inmon — top-down enterprise warehouse

Bill Inmon ziet het anders: bouw eerst een centraal, genormaliseerd Enterprise Data Warehouse in 3NF, en lever data marts daaruit af. Dat staat bekend als de Corporate Information Factory (CIF).

Voorbeeld 3NF-fragment in Inmon-stijl:

CREATE TABLE customer (
  customer_id   INT PRIMARY KEY,
  name          VARCHAR(200),
  segment_id    INT REFERENCES segment(segment_id),
  address_id    INT REFERENCES address(address_id),
  created_at    TIMESTAMP
);

CREATE TABLE address (
  address_id    INT PRIMARY KEY,
  street        VARCHAR(200),
  city_id       INT REFERENCES city(city_id),
  postal_code   VARCHAR(10)
);

CREATE TABLE city (
  city_id       INT PRIMARY KEY,
  city_name     VARCHAR(100),
  country_id    INT REFERENCES country(country_id)
);

Voor analyses bouw je vervolgens dimensionele marts op basis van dit centrale model. Het kost meer initieel, maar het schaalt voor grote organisaties met veel bronsystemen.

Wanneer Inmon NIET de juiste keuze is

Inmon vraagt veel investering vooraf — modelleurs die de hele organisatie moeten doorgronden voordat je iets oplevert. Voor scale-ups, mkb's en projecten met snelle time-to-value-eisen is dit vaak een dealbreaker. Ook als je business agile werkt en wekelijks nieuwe data marts wil opleveren, blokkeert het centrale 3NF-model meer dan dat het helpt.

3. Data Vault — agility en auditbaarheid

Dan Linstedt's Data Vault (DV2.0) is de jongste van de drie. Het probeert het schaalvoordeel van Inmon te combineren met de agility van Kimball, en voegt sterke auditbaarheid toe — bruikbaar in regulated industries (finance, pharma, insurance).

Data Vault kent drie soorten tabellen:

-- Hub: alleen business key + metadata
CREATE TABLE hub_customer (
  customer_hk     CHAR(32),         -- hash key
  customer_id     VARCHAR(50),      -- business key
  load_dts        TIMESTAMP,
  record_source   VARCHAR(50)
);

-- Satellite: beschrijvende data, historisch
CREATE TABLE sat_customer_details (
  customer_hk     CHAR(32),
  load_dts        TIMESTAMP,
  hash_diff       CHAR(32),         -- detecteert wijzigingen
  name            VARCHAR(200),
  segment         VARCHAR(50),
  country         VARCHAR(50),
  record_source   VARCHAR(50),
  PRIMARY KEY (customer_hk, load_dts)
);

-- Link: relatie tussen hubs
CREATE TABLE link_customer_order (
  link_hk         CHAR(32),
  customer_hk     CHAR(32),
  order_hk        CHAR(32),
  load_dts        TIMESTAMP,
  record_source   VARCHAR(50)
);

De volledige historie en herkomst (record_source, load_dts) zit ingebouwd in elke tabel — handig voor audits en GDPR. Nadeel: zonder een goede automatiseringslaag (bijvoorbeeld dbtvault, Wherescape, Vaultspeed) wordt Data Vault snel een berg boilerplate-code.

Hash keys en hash diff — twee patronen die je móet kennen

Het hashen van business keys (bijvoorbeeld MD5 of SHA-256) doet drie dingen: het maakt parallel laden mogelijk (geen lookup nodig), het maakt bron-overschrijdende joins triviaal (zelfde input → zelfde hash), en het levert een vaste sleutellengte op. De hash_diff in satellites is een hash over alle beschrijvende attributen — als hij gelijk is aan de vorige rij, wordt geen nieuwe rij toegevoegd. Zo voorkom je duplicaten zonder dure rij-vergelijkingen.

Wanneer Data Vault NIET de juiste keuze is

Voor kleine teams zonder ervaring met DV2.0 en zonder automatiseringstool is Data Vault zelden verstandig. De methodologie genereert per bronentiteit al snel 3-5 tabellen plus laadlogica, en zonder generator wordt dat onbeheersbaar. Voor één bronsysteem en één analytisch domein is Kimball gewoon sneller en simpeler.

Vergelijking

Aspect Kimball Inmon Data Vault
AanpakBottom-upTop-downModulair / agile
ModelvormStar schema3NFHubs / Links / Satellites
Time-to-valueWekenMaanden tot jarenWeken (met automatisering)
SchaalbaarheidGoedUitstekendUitstekend
Flexibiliteit bij veranderingMatigLastigHoog (additief)
AuditbaarheidBeperktBeperktIngebouwd
LeercurveLaagHoogHoog
BI-tool friendlyDirectVia martsVia marts (Information Mart Layer)

De medallion architecture (modern)

Sinds de opkomst van het lakehouse (Delta Lake, Iceberg) is de medallion architecture populair geworden — vooral in Databricks en Microsoft Fabric:

De medallion-laagjes komen overeen met staging / integratie / presentatie uit hoofdstuk 1, maar dan op een lakehouse-platform. Dezelfde principes, modernere tooling.

Praktische combinatie

Veel moderne projecten combineren: Data Vault in silver (voor auditbaarheid en flexibiliteit), Kimball in gold (voor BI-tooling). Dat geeft je het beste van beide werelden — auditbare opslag onder de motorkap, intuïtieve modellen voor de eindgebruiker.

Hoe kies je het juiste patroon?

Een eenvoudige beslissingsboom:

  1. Klein team, één bedrijfstak, snel resultaat nodig? → Kimball.
  2. Grote enterprise met tientallen bronnen, governance kritisch? → Inmon of Data Vault.
  3. Strikte audittrail nodig (financieel, medisch, verzekering)? → Data Vault.
  4. Lakehouse-platform met machine learning naast BI? → Medallion (Bronze/Silver/Gold).
  5. Mengsel? → Hybride, met dimensionele goldlaag op een Data Vault-silverlaag.

Praktijkscenario: een hybride aanpak in een retail-omgeving

Een Nederlandse retailer met 12 webshops in vijf landen had twee problemen: marketing wilde elke week een nieuwe campagne-rapportage, finance vroeg een GDPR-proof audittrail op klantniveau. Een pure Kimball-aanpak loste het tweede niet op, een pure Data Vault-aanpak was te traag voor het eerste. De gekozen architectuur:

Resultaat: marketing kreeg dashboards binnen een sprint, finance kreeg een herleidbare audittrail per record, en nieuwe bronsystemen (een nieuwe webshop, een logistieke partner) konden in dagen worden toegevoegd zonder bestaande modellen te raken. De prijs: drie ETL-lagen onderhouden in plaats van één — maar elk laag had een duidelijk doel.

Anti-patterns om te vermijden

Key takeaways

  • Kimball, Inmon en Data Vault zijn geen vijanden — ze beantwoorden verschillende vragen.
  • Kimball is het snelst, Inmon het meest gestructureerd, Data Vault het meest flexibel.
  • De medallion architecture is de moderne herinterpretatie van de drielagen-aanpak.
  • Een hybride keuze (DV in silver, Kimball in gold) is in de praktijk vaak optimaal.
  • Surrogate keys zijn niet optioneel — ze zijn de levensader van een goed warehouse.

Veelgestelde vragen

Wat is het verschil tussen Kimball en Inmon?

Kimball werkt bottom-up met dimensionele star schemas per business proces. Inmon werkt top-down met een centraal genormaliseerd 3NF Enterprise Data Warehouse, waar data marts uit worden afgeleid. Kimball levert sneller resultaat op, Inmon schaalt beter voor grote organisaties met veel bronsystemen en strikte governance-eisen.

Wanneer kies je voor Data Vault?

Data Vault is de juiste keuze bij strikte audit-eisen (banken, verzekeraars, pharma), bij veel bronsystemen die regelmatig wijzigen, en wanneer je flexibel nieuwe bronnen wilt toevoegen zonder bestaande modellen te breken. Niet kiezen als je team klein is en geen automatiseringstool inzet — dan word je begraven in boilerplate.

Wat is medallion architecture?

Medallion architecture verdeelt data in drie lagen op een lakehouse: bronze (ruwe ingest, immutable), silver (geschoond, geharmoniseerd) en gold (business-ready dimensionele modellen). Het is de moderne herinterpretatie van de klassieke staging/integratie/presentatie-aanpak, populair bij Databricks en Microsoft Fabric met Delta Lake of Apache Iceberg als opslagformaat.

Kun je Kimball en Data Vault combineren?

Ja, dit is in de praktijk vaak de optimale keuze. Data Vault in silver voor auditbaarheid en flexibiliteit, Kimball-stijl star schemas in gold voor BI-tools. Zo combineer je sterke historiek onder de motorkap met intuïtieve modellen voor eindgebruikers — het beste van beide werelden.

Welke architectuur past bij Microsoft Fabric of Databricks?

Beide platforms zijn geoptimaliseerd voor medallion architecture met Delta Lake. In gold leg je dimensionele modellen aan in Kimball-stijl, omdat Power BI en Tableau daarop geoptimaliseerd zijn. Voor compliance-zware projecten kun je in silver een Data Vault aanleggen — dbtvault werkt prima op beide platforms.

Hoeveel SCD-types gebruik je in de praktijk?

In de praktijk kom je vooral SCD Type 1 (overschrijven, geen historie) en SCD Type 2 (historische rijen met valid_from/valid_to) tegen. SCD Type 3 (vorige waarde naast huidige) is bruikbaar voor "voor en na"-vergelijkingen. Types 4 t/m 7 zijn academisch interessant maar zelden nodig.