Amazon Redshift: Complete Gids 2025

Bijgewerkt: 17 maart 2026
Leestijd: 45 minuten
Amazon Redshift, Serverless, RA3, Spectrum, AWS Data Warehouse

Van provisioned clusters tot volledig serverless — alles wat je moet weten over Amazon Redshift in 2025. Inclusief architectuur, SQL-patronen, pricing breakdown en een eerlijke vergelijking met BigQuery en Snowflake.

AWS Redshift Expert zoeken?

Vind ervaren data engineers en Redshift-architects voor jouw cloud data warehouse implementatie.

1. Wat is Amazon Redshift?

Definitie

Amazon Redshift is een volledig beheerde, cloud-native data warehouse service van AWS. Het combineert columnar storage, Massively Parallel Processing (MPP) en geïntegreerde machine learning voor analytische queries over petabytes aan data. Redshift is marktleider in cloud data warehousing met meer dan 10.000 enterprise klanten wereldwijd.

10x Sneller

Columnar storage + MPP geeft tot 10× betere prijs-prestatieverhouding versus traditionele data warehouses

Petabyte Scale

Schaalbaar van gigabytes tot exabytes via RA3 managed storage of Redshift Serverless

ML Ingebouwd

Redshift ML traint SageMaker-modellen direct via SQL CREATE MODEL statements

AWS Ecosystem

Native integratie met S3, Glue, Kinesis, Lake Formation, QuickSight en 170+ AWS services

2. Serverless vs Provisioned

Het eerste beslismoment bij Redshift: kies je voor een provisioned cluster (vaste capaciteit, voorspelbare prijs) of Redshift Serverless (automatisch schalen, betalen per gebruik)?

Criterium Provisioned Cluster Redshift Serverless
Beheer Cluster inrichten, nodes kiezen, onderhoud Nul infrastructuurbeheer
Schaalbaarheid Handmatig resize of elastic resize Automatisch (0 → max RPUs)
Kosten model Per uur (ook als cluster stilstaat) Per RPU per seconde (alleen bij gebruik)
Cold start Geen (altijd aan) ~10–30 sec bij eerste query
Beste voor Continue, voorspelbare workloads (>8 uur/dag) Variabele, bursty of dev/test workloads
Reserved pricing Ja, tot 75% korting Nee
VPC integratie Volledig Volledig

Vuistregel

Gebruik Serverless voor dev/test omgevingen, BI dashboards met onregelmatige gebruik en startende projecten. Kies Provisioned + Reserved Instances zodra je >8 uur per dag actief bent — dat is aanzienlijk goedkoper dan Serverless bij continue workloads.

3. Architectuur: MPP, Columnar & Data Lake

Hoe werkt Redshift intern?

Redshift gebruikt een shared-nothing MPP architectuur: een leader node verdeelt queries over meerdere compute nodes. Elke node verwerkt zijn eigen gegevenssegment parallel. Data wordt opgeslagen in columnar format (per kolom ipv per rij), wat analytische queries enorm versnelt omdat alleen relevante kolommen worden gelezen.

Redshift Cluster Architectuur

-- TYPISCHE CLUSTER STRUCTUUR

┌─────────────────────────────────────┐
│         LEADER NODE                 │
│  Query planning, metadata, parsing  │
│  Distribueert werk naar compute     │
└──────────────┬──────────────────────┘
               
       ┌───────┴───────┐
       ▼               ▼
┌────────────┐   ┌────────────┐
│ COMPUTE 1  │   │ COMPUTE 2  │
│ Slice 0    │   │ Slice 2    │
│ Slice 1    │   │ Slice 3    │
│ (RA3→S3)   │   │ (RA3→S3)   │
└────────────┘   └────────────┘

-- RA3: data in managed S3 (onbeperkte opslag)
-- DC2: data in lokale NVMe SSD (max 326 TB)
-- Serverless: AWS beheert nodes volledig

-- KOLOM-OPSLAG VOORDEEL:
-- SELECT SUM(bedrag) FROM orders
-- → leest ALLEEN kolom 'bedrag', niet hele rijen
-- → 10-100x minder I/O dan row-based opslag

4. Node Types: RA3, DC2 en Serverless RPU

Type Opslag vCPUs RAM Prijs (on-demand) Beste voor
RA3.xlplus Managed S3 (onbeperkt) 4 vCPU 32 GB ~$1,086/node/uur Groeiende workloads
RA3.4xlarge Managed S3 (onbeperkt) 12 vCPU 96 GB ~$3,26/node/uur Enterprise data lakes
RA3.16xlarge Managed S3 (onbeperkt) 48 vCPU 384 GB ~$13,04/node/uur Grootste workloads
DC2.large 160 GB SSD (lokaal) 2 vCPU 15 GB ~$0,25/node/uur Kleine, vaste datasets
DC2.8xlarge 2,56 TB SSD (lokaal) 32 vCPU 244 GB ~$4,80/node/uur Hoge-performance vaste DWH
Serverless Managed S3 (onbeperkt) Auto (8–512 RPU) Auto $0,36/RPU/uur Variabele workloads

5. SQL-patronen en Distributiestrategieën

De keuze van DISTKEY en SORTKEY heeft de grootste impact op Redshift performance. Verkeerde keuzes leiden tot data skew en trage queries.

Optimale tabelstructuur — Fact tabel

-- FACT TABEL: gebruik DISTKEY op meest-gejoinde kolom
CREATE TABLE dw.fact_verkoop (
    verkoop_id   BIGINT IDENTITY(1,1),
    klant_id     INTEGER NOT NULL     DISTKEY,   -- verdeelt data gelijkmatig
    product_id   INTEGER NOT NULL,
    datum        DATE NOT NULL         SORTKEY,   -- meest gefilterde kolom
    bedrag       DECIMAL(18,2),
    aantal       SMALLINT
)
DISTSTYLE KEY
COMPOUND SORTKEY (datum, klant_id);   -- compound voor range + equality filters

-- DIMENSIE TABEL: gebruik DISTSTYLE ALL voor kleine tabellen
CREATE TABLE dw.dim_klant (
    klant_id     INTEGER PRIMARY KEY,
    naam         VARCHAR(255),
    segment      VARCHAR(50),
    regio        VARCHAR(100)
)
DISTSTYLE ALL;   -- kopie op élke node → snelle joins, geen data movement

-- QUERY VOORBEELD: zo min mogelijk data movement
SELECT
    k.regio,
    k.segment,
    DATE_TRUNC('month', v.datum) AS maand,
    SUM(v.bedrag)                 AS totaal_omzet,
    COUNT(*)                      AS aantal_orders
FROM dw.fact_verkoop v
JOIN dw.dim_klant k USING (klant_id)
WHERE v.datum BETWEEN '2025-01-01' AND '2025-12-31'
GROUP BY 1, 2, 3
ORDER BY maand;

Data laden via COPY (meest efficiënt)

-- COPY vanuit S3 — paralleliseert automatisch over alle nodes
COPY dw.fact_verkoop
FROM 's3://mijn-bucket/verkoop/2025/'
IAM_ROLE 'arn:aws:iam::123456789:role/RedshiftS3Role'
FORMAT AS PARQUET
-- of: CSV DELIMITER ',' IGNOREHEADER 1 GZIP
STATUPDATE ON
COMPUPDATE ON;

-- VACUUM na bulk loads: resort data en verwijder ghost rows
VACUUM dw.fact_verkoop TO 90 PERCENT;   -- hersorteert tot 90% gesorteerd
ANALYZE dw.fact_verkoop;                 -- update statistieken voor query planner

-- UNLOAD naar S3 voor export / data lake
UNLOAD ('SELECT * FROM dw.fact_verkoop WHERE datum >= ''2025-01-01''')
TO 's3://mijn-bucket/export/verkoop_'
IAM_ROLE 'arn:aws:iam::123456789:role/RedshiftS3Role'
FORMAT PARQUET
PARTITION BY (datum)
MAXFILESIZE 256 MB
PARALLEL ON;

Window functions en analytische queries

-- RUNNING TOTALS + RANKING in één pass
SELECT
    klant_id,
    datum,
    bedrag,
    SUM(bedrag)  OVER (PARTITION BY klant_id
                       ORDER BY datum
                       ROWS UNBOUNDED PRECEDING)  AS cumulatief,
    LAG(bedrag, 1, 0) OVER (PARTITION BY klant_id ORDER BY datum) AS vorig_bedrag,
    RANK()        OVER (PARTITION BY DATE_TRUNC('month', datum)
                       ORDER BY bedrag DESC)       AS rang_in_maand
FROM dw.fact_verkoop
WHERE datum >= '2025-01-01';

-- MATERIALIZED VIEW voor herhaalde zware queries (Redshift ondersteunt auto-refresh)
CREATE MATERIALIZED VIEW mv_maandelijkse_omzet
AUTO REFRESH YES
AS
SELECT
    DATE_TRUNC('month', datum) AS maand,
    SUM(bedrag)               AS omzet,
    COUNT(DISTINCT klant_id)  AS unieke_klanten
FROM dw.fact_verkoop
GROUP BY 1;

6. Redshift Spectrum — Direct Queryen in S3

Wat is Redshift Spectrum?

Redshift Spectrum laat je data in Amazon S3 queryen via gewone SQL, zonder data te importeren in Redshift. Je betaalt $5 per TB gescand. Combineer je Redshift-tabellen (warm data) met historische S3-data (cold data) in één query — de ideale data lake architectuur.

Spectrum instellen en S3 data queryen

-- STAP 1: Externe schema aanmaken (koppelt aan AWS Glue Data Catalog)
CREATE EXTERNAL SCHEMA spectrum_archive
FROM DATA CATALOG
DATABASE 'mijn_data_lake'
IAM_ROLE 'arn:aws:iam::123456789:role/RedshiftSpectrumRole'
CREATE EXTERNAL DATABASE IF NOT EXISTS;

-- STAP 2: Externe tabel definieëren (verwijst naar S3 partities)
CREATE EXTERNAL TABLE spectrum_archive.fact_verkoop_historisch (
    klant_id  INT,
    datum     DATE,
    bedrag    DECIMAL(18,2),
    regio     VARCHAR(100)
)
PARTITIONED BY (jaar INT, maand INT)
STORED AS PARQUET
LOCATION 's3://mijn-data-lake/verkoop/historisch/'
TABLE PROPERTIES ('compression'='snappy');

-- STAP 3: Gecombineerde query (Redshift + S3 data)
SELECT
    'live'     AS bron,
    SUM(bedrag) AS omzet
FROM dw.fact_verkoop                          -- Redshift tabel (warm)
WHERE datum >= '2024-01-01'
UNION ALL
SELECT
    'archief'  AS bron,
    SUM(bedrag) AS omzet
FROM spectrum_archive.fact_verkoop_historisch  -- S3 Parquet (cold)
WHERE jaar BETWEEN 2020 AND 2023;             -- partition pruning bespaart kosten!

7. Redshift ML — Machine Learning via SQL

Met Redshift ML train en gebruik je Amazon SageMaker-modellen direct vanuit SQL. Geen Python, geen apart ML-platform nodig. Ideaal voor churn prediction, fraude-detectie en sales forecasting direct op je warehouse data.

ML-model trainen en gebruiken

-- STAP 1: Model trainen (Redshift AutoML via SageMaker Autopilot)
CREATE MODEL ml.klant_churn_model
FROM (
    SELECT
        klant_id,
        aantal_orders_afgelopen_90d,
        gemiddeld_orderwaarde,
        dagen_sinds_laatste_order,
        aantal_klachten,
        is_opgezegd           -- TARGET variabele (0/1)
    FROM dw.klant_kenmerken
    WHERE datum_snapshot = '2025-01-01'
)
TARGET is_opgezegd
FUNCTION ml.predict_churn
IAM_ROLE 'arn:aws:iam::123456789:role/RedshiftMLRole'
SETTINGS (
    S3_BUCKET 'mijn-ml-bucket',
    MAX_RUNTIME 7200   -- max 2 uur trainen
);

-- STAP 2: Model toepassen op nieuwe klanten
SELECT
    klant_id,
    naam,
    ml.predict_churn(
        aantal_orders_afgelopen_90d,
        gemiddeld_orderwaarde,
        dagen_sinds_laatste_order,
        aantal_klachten
    ) AS churn_kans
FROM dw.actieve_klanten
WHERE ml.predict_churn(
        aantal_orders_afgelopen_90d,
        gemiddeld_orderwaarde,
        dagen_sinds_laatste_order,
        aantal_klachten
    ) > 0.7   -- klanten met >70% churn kans
ORDER BY churn_kans DESC
LIMIT 100;

8. Vergelijking: Redshift vs BigQuery vs Snowflake

Criterium Amazon Redshift BigQuery ❄️ Snowflake
Cloud native AWS Google Cloud Multi-cloud (AWS/Azure/GCP)
Pricing model Compute + managed storage Per TB verwerkt (serverless) Credits per seconde
Beheer Semi-managed (provisioned) of volledig (serverless) Volledig serverless Volledig managed
Performance Uitstekend bij voorspelbare workloads Uitstekend bij ad-hoc queries Consistent hoog
Data sharing Via AWS Data Exchange Analytics Hub Snowflake Marketplace (beste)
ML integratie SageMaker (via SQL) BigQuery ML (SQL) Snowpark ML (Python)
Semi-structured data SUPER type (JSON/Parquet) Standaard JSON/ARRAY VARIANT (beste JSON support)
Concurrency Concurrency scaling (extra kosten) Automatisch, onbeperkt Multi-cluster warehouse
TCO bij AWS Laagste TCO Hoog bij grote queries Middel, stijgt snel bij scale
Aanbevolen als Je al op AWS zit Je al op GCP zit Je multi-cloud of data sharing nodig hebt

Wanneer kies je Amazon Redshift?

Kies Redshift als je al werkt met AWS (S3, Glue, Lambda, Kinesis). De integraties zijn naadloos en de TCO is bij continue workloads het laagste van de drie. Redshift Serverless maakt het ook aantrekkelijk voor kleinere teams. BigQuery is beter als je GCP-native bent; Snowflake pas je toe als je data sharing over meerdere clouds nodig hebt.

9. Pricing Breakdown 2025

Provisioned (on-demand)

DC2.large: ~$0,25/uur
RA3.xlplus: ~$1,086/uur/node
RA3.4xlarge: ~$3,26/uur/node

Reserved (1 jaar)

Tot 40% korting op on-demand
3 jaar: tot 75% korting
Betaling vooruit of maandelijks

Serverless

$0,36 per RPU per uur
Min. 8 RPU, max 512 RPU
Gratis tier: 300 RPU-uur/maand

Managed Storage

RA3 + Serverless: ~$0,024/GB/maand
Spectrum: $5 per TB gescand
S3 backup: standaard S3 tarieven

Voorbeeld maandprijs

Scenario: 2x RA3.xlplus provisioned, 2 TB managed storage, 10 TB Spectrum/maand.
On-demand: 2 × $1,086 × 730 uur + 2.000 × $0,024 + 10 × $5 = ~$1.685/maand
Met 1-jaar reserved: ~$1.010/maand (40% goedkoper).
Vergelijk: Snowflake Enterprise op vergelijkbare workload ~$2.200/maand.

10. Best Practices & Performance Tuning

Top 10 Redshift Best Practices

-- 1. KIES DE JUISTE DISTKEY (meest-gejoinde kolom, hoge kardinaliteit)
DISTKEY (klant_id)   -- ✅ hoge kardinaliteit, veel gebruikt in joins
DISTKEY (status)     -- ❌ lage kardinaliteit → data skew

-- 2. GEBRUIK COMPOUND vs INTERLEAVED SORTKEY
-- Compound: efficiënt voor range queries op leading column
COMPOUND SORTKEY (datum, regio)   -- ✅ WHERE datum >= '2025-01-01'
-- Interleaved: gelijkmatig voor meerdere kolommen (maar duurder VACUUM)
INTERLEAVED SORTKEY (datum, klant_id, product_id)  -- gebruik spaarzaam

-- 3. COMPRESSIE: gebruik ENCODE AUTO of test met ANALYZE COMPRESSION
ANALYZE COMPRESSION dw.fact_verkoop;
-- Redshift raadt de beste encoding aan per kolom

-- 4. WLM (Workload Management): voorkom dat één query alles blokkeert
-- Stel queue in via console: separate queues voor ETL vs BI queries

-- 5. MATERIALIZED VIEWS voor herhaalde aggregaties
CREATE MATERIALIZED VIEW mv_dagomzet AUTO REFRESH YES AS
    SELECT datum, SUM(bedrag) FROM dw.fact_verkoop GROUP BY datum;

-- 6. RESULT CACHE: identieke queries worden gecached (gratis)
-- Actief by default, werkt voor ongewijzigde tabellen

-- 7. AQUA (Advanced Query Accelerator): automatisch voor RA3 nodes
-- Verplaatst rekenkracht naar storage laag, tot 10x sneller

-- 8. VACUUM regelmatig uitvoeren na DELETE/UPDATE
VACUUM DELETE ONLY dw.fact_verkoop;  -- snel: verwijdert alleen ghost rows
VACUUM FULL dw.fact_verkoop;          -- langzaam: hersorteer + delete

-- 9. QUERY MONITORING via STL/SVL views
SELECT query, TRIM(querytxt), starttime, elapsed
FROM stl_query
WHERE elapsed > 60000000   -- queries langer dan 60 seconden
ORDER BY elapsed DESC
LIMIT 10;

-- 10. GEBRUIK LATE BINDING VIEWS voor flexibele schema-evolutie
CREATE VIEW vw_verkoop_huidig AS
SELECT * FROM dw.fact_verkoop
WITH NO SCHEMA BINDING;   -- view breekt niet bij tabelwijzigingen

11. Aan de Slag in 15 Minuten

Stap 1: Redshift Serverless starten (gratis tier)

-- AWS Console → Redshift → Serverless → Get Started
-- Of via AWS CLI:

aws redshift-serverless create-namespace \
    --namespace-name mijn-datawarehouse \
    --admin-username admin \
    --admin-user-password 'MijnWachtwoord123!' \
    --db-name analytics

aws redshift-serverless create-workgroup \
    --workgroup-name mijn-werkgroep \
    --namespace-name mijn-datawarehouse \
    --base-capacity 8 \   -- minimale RPU (gratis tier = 300 RPU-uur/maand)
    --publicly-accessible false

Stap 2: Verbinden via Redshift Query Editor v2

-- Direct in AWS Console via Query Editor v2 (geen client nodig!)
-- Of via Python/psycopg2:

import psycopg2

conn = psycopg2.connect(
    host="mijn-werkgroep.123456789.eu-west-1.redshift-serverless.amazonaws.com",
    port=5439,
    dbname="analytics",
    user="admin",
    password="MijnWachtwoord123!",
    sslmode="require"
)

-- Of via SQLAlchemy (voor dbt, pandas, enz.):
-- pip install sqlalchemy-redshift psycopg2-binary
from sqlalchemy import create_engine
engine = create_engine(
    "redshift+psycopg2://admin:wachtwoord@host:5439/analytics"
)

Stap 3: Eerste tabel laden vanuit S3

-- Maak IAM role aan met S3 leesrechten en koppel aan Redshift

-- Maak tabel aan
CREATE TABLE verkoop (
    order_id  INTEGER,
    datum     DATE,
    bedrag    DECIMAL(10,2),
    klant_id  INTEGER
);

-- Laad vanuit S3 CSV
COPY verkoop
FROM 's3://mijn-bucket/verkoop.csv'
IAM_ROLE DEFAULT
CSV IGNOREHEADER 1;

-- Klaar! Eerste query:
SELECT DATE_TRUNC('month', datum), SUM(bedrag)
FROM verkoop
GROUP BY 1 ORDER BY 1;

12. Veelgestelde Vragen

Wat is het verschil tussen Redshift Serverless en Provisioned?

Serverless schaalt automatisch op/neer, je betaalt alleen bij gebruik (per RPU per seconde). Provisioned heeft vaste capaciteit (nodes), betaal je altijd, maar is goedkoper bij constante workloads. Kies Serverless voor variabele of sporadische workloads; Provisioned + Reserved voor dagelijkse ETL en BI.

Kan ik Redshift gebruiken met dbt?

Ja, dbt heeft een native Redshift adapter. Installeer dbt-redshift, configureer je profiles.yml en gebruik gewone dbt modellen. Redshift ondersteunt alle dbt features inclusief snapshots, seeds, exposures en tests. Materialized views via dbt zijn ook mogelijk met materialized='materializedview'.

Hoe zit het met de beveiliging in Redshift?

Redshift biedt: VPC-isolatie, versleuteling at-rest (AES-256 via AWS KMS), SSL in transit, IAM-integratie, row-level security (RLS), column-level security, dynamic data masking (preview) en audit logging via CloudTrail. Lake Formation integratie geeft centrale data governance over Redshift én S3.

Wat is de maximale datagrootte in Redshift?

Voor RA3 en Serverless is er geen praktische limiet op opslag (managed S3 is onbeperkt). DC2 nodes hebben een maximum van 326 TB per cluster. Met Redshift Spectrum kun je petabytes aan S3-data queryen zonder dit in Redshift op te slaan.

Abdullah Özisik - AI Data Engineer

👨‍💻 Over de auteur

Abdullah Özisik — Data Engineer met specialisatie in cloud data warehouses en AWS. Expert in het implementeren van Redshift-architecturen voor enterprise klanten, van eerste cluster tot petabyte-scale data lakes met Spectrum en Redshift ML.