Menu

Topic 1 of 8

Choosing Storage Patterns

Learn Choosing Storage Patterns for free with explanations, exercises, and a quick test (for Data Architect).

Published: January 18, 2026 | Updated: January 18, 2026

Why this matters

Choosing the right storage pattern determines performance, cost, and data reliability. As a Data Architect, you will decide whether data lands in a row store, column store, document database, time-series system, key-value cache, or a data lake/warehouse. These choices affect ETL/ELT design, query speed, governance, and SLAs.

  • Real task: Design an analytics platform for clickstream events with sub-minute freshness.
  • Real task: Support product search and flexible attributes without schema rewrites.
  • Real task: Serve ML features to models in under 10 ms while keeping historical data cheap.

Who this is for

  • Data Architects and Senior Data Engineers designing storage layers.
  • Analytics Engineers selecting file formats, partitions, and layouts.
  • Platform/Infra engineers defining data tiers and lifecycle policies.

Prerequisites

  • Basic understanding of OLTP vs OLAP.
  • Familiarity with data formats (CSV, JSON, Parquet/ORC) and indexing/partitioning.
  • Awareness of SLAs, RPO/RTO, and compliance needs.

Concept explained simply

Storage patterns are repeatable ways to organize and persist data so it fits how it will be used. You match the pattern to access needs: point lookups, range scans, joins, aggregations, full-text search, graph traversals, or streaming.

Mental model (fast pick)

Think in three axes:

  • Access pattern: point lookup, range scan, aggregate, join, search, traversal, stream replay.
  • Data shape: structured rows, wide/columnar, semi-structured documents, key-value, time-stamped series, graph.
  • Freshness & scale: latency targets (ms/sec/min), read/write ratios, total volume and growth.

Then add guardrails: consistency, governance/security, cost, and lifecycle.

Common storage patterns (fit by need)

Row store (OLTP RDBMS)

Best for: transactions, strong consistency, small point reads/updates.

  • Pros: ACID, indexes, joins, mature tooling.
  • Cons: Costly for scans/aggregations at scale.
  • Typical use: orders, users, payments, inventory counts.
Columnar store / files (OLAP, Data Warehouse/Lakehouse)

Best for: analytical scans and aggregations over large datasets.

  • Pros: High compression, vectorized reads, partition pruning.
  • Cons: Poor for frequent single-row updates.
  • Typical use: BI dashboards, batch analytics, ML feature backfills.
Data lake with columnar files (Parquet/ORC)

Best for: cheap, scalable storage with schema evolution and separation of storage/compute.

  • Pros: Cost-effective, open formats, flexible processing engines.
  • Cons: Requires good file sizing/partitioning; small-files problem.
  • Typical use: raw to curated layers (bronze/silver/gold) and replayable history.
Document store

Best for: semi-structured data, flexible attributes per entity.

  • Pros: Schema-on-read per document, secondary indexes.
  • Cons: Joins are limited; careful index planning needed.
  • Typical use: product catalogs, user profiles, content.
Key-value store

Best for: ultra-low-latency point lookups.

  • Pros: Simple access, very fast reads/writes.
  • Cons: Limited query expressiveness.
  • Typical use: session state, feature serving cache, id→entity map.
Time-series database

Best for: telemetry with time as primary dimension.

  • Pros: Time-based partitions, retention policies, downsampling.
  • Cons: Not ideal for complex ad-hoc joins.
  • Typical use: IoT sensor data, metrics, logs.
Graph database

Best for: relationship queries and traversals.

  • Pros: Efficient traversals, relationship-first modeling.
  • Cons: Not for heavy aggregations or wide scans.
  • Typical use: social graph, recommendations, fraud rings.
Search index

Best for: full-text search and relevance scoring.

  • Pros: Inverted indexes, facets, highlighting.
  • Cons: Eventual consistency, extra ingestion pipeline.
  • Typical use: product/site search, log search.
Streaming log as storage (append-only)

Best for: ordered events, replay, backpressure handling.

  • Pros: Retention windows, consumer groups.
  • Cons: Not a general-purpose store; retention-limited.
  • Typical use: event sourcing, streaming ETL, CDC pipelines.
Cold/archive tier

Best for: cheap, infrequently accessed historical data.

  • Pros: Very low cost.
  • Cons: High retrieval latency.
  • Typical use: compliance archives, historical snapshots.

Decision framework (step-by-step)

  1. Workload profile: read/write ratio, latency (ms/sec/min), throughput (events/s), concurrency.
  2. Access patterns: point lookup, range scan, aggregates, joins, search, traversal, stream replay.
  3. Data shape: rows vs columns, nested/semi-structured, time-stamped, graph.
  4. Consistency & transactions: ACID vs eventual; single-record vs multi-entity atomicity.
  5. Scale & growth: current volume, daily growth, hot vs cold data split.
  6. Governance & compliance: PII encryption, row/column-level access, lineage, auditability.
  7. Cost model: storage vs compute separation, hot/warm/cold tiers, egress patterns.
  8. Operations: backups, RPO/RTO, multi-region replication, maintenance tasks.
Quick pick cheat-sheet
  • If you need millisecond point lookups → key-value store.
  • If you need big scans and aggregates → columnar warehouse/lake.
  • If you need flexible attributes per item → document store.
  • If you need time-first queries with retention policies → time-series DB.
  • If you need graph traversals → graph DB.
  • If you need full-text search → search index.
  • If you need event replay → streaming log with retention + sink to durable store.

Worked examples

1) Clickstream analytics with near-real-time dashboards

Needs: append-only events, minute-level freshness, aggregates by time, device, campaign.

  • Ingest: streaming log topic with 24–72h retention for replay.
  • Durable store: data lake using Parquet, partitioned by date/hour; compact small files.
  • Serving: columnar warehouse/lakehouse tables for BI.
  • Why: columnar files excel at scans/aggregates; streaming log allows backfill/replay.
2) Product catalog with varied attributes and search

Needs: flexible per-product attributes, text search, facet filters.

  • Main store: document DB (one document per product; secondary indexes on category, brand).
  • Search: search index for full-text, synonyms, facets.
  • Why: document pattern matches semi-structured data; search index boosts relevance and speed.
3) Real-time ML feature serving for fraud scoring

Needs: single-digit ms reads by key during model inference, high write rate from streaming features.

  • Online store: key-value DB (id → latest features) with TTL for ephemeral fields.
  • Offline store: columnar lake/warehouse for history and training.
  • Why: KV gives low-latency lookups; columnar keeps costs low for historical analytics.
4) IoT telemetry at scale

Needs: time-based writes, downsampling, retention by device type.

  • Primary: time-series DB with time-partitioned shards, retention policies, rollups.
  • Archive: cold tier for aged raw data (cheap storage).
  • Why: TSDB optimizes time-window queries; cold tier minimizes cost.

Practical steps to choose a pattern

  1. Write a one-paragraph workload brief including SLA, access patterns, and data shape.
  2. Map to 1–2 candidate patterns from the cheat-sheet.
  3. Stress-test with worst-case queries and growth assumptions.
  4. Decide tiering: hot (serving), warm (analytics), cold (archive).
  5. Define lifecycle: compaction, partitioning, retention, GDPR/PII handling.
Decision checklist
  • [ ] Access patterns identified and prioritized.
  • [ ] Latency and throughput targets quantified.
  • [ ] Data volume, growth, and hot/cold split estimated.
  • [ ] Consistency/transaction needs clarified.
  • [ ] Governance, security, and audit requirements documented.
  • [ ] Cost model compared across options.
  • [ ] Backup/DR and region strategy defined.
  • [ ] Operational tasks (compaction, reindex, vacuum) planned.

Common mistakes and self-check

  • Mistake: Using row stores for heavy analytics scans. Self-check: Do most queries aggregate over many rows? If yes, prefer columnar.
  • Mistake: Over-partitioning in data lakes. Self-check: Do partitions often read tiny files? If yes, increase target file size and compact.
  • Mistake: Ignoring access paths in document stores. Self-check: Are queries slow without proper secondary indexes? Add them intentionally.
  • Mistake: One system for everything. Self-check: Do online and analytical workloads interfere? Split into serving vs analytics layers.
  • Mistake: Skipping lifecycle policies. Self-check: Do costs grow linearly with time? Set retention/archival and deletion schedules.

Practical projects

  • Build a mini clickstream pipeline: stream → Parquet in lake → warehouse table → dashboard. Measure query times before/after partitioning.
  • Create a product catalog in a document store with 3 secondary indexes and a derived search index. Benchmark queries.
  • Feature serving demo: build KV online store + columnar offline history; validate 95th percentile read latency under load.

Exercises

Note: Anyone can complete these exercises. The quick test is available to everyone; log in to save your progress.

Exercise 1: Pick the pattern

Scenario: A support system must load a customer record by id in under 5 ms and update contact preferences instantly. Nightly analytics compute churn metrics over 2 years.

  1. Choose the primary serving store.
  2. Choose the analytics store.
  3. Explain partitioning/format choices.

Deliverable: 3–5 bullet rationale.

Exercise 2: Design hot/warm/cold tiers

Scenario: IoT sensors write 50k events/s. Product wants 7-day hot queries (sec-level), 90-day warm analytics, 2-year cold archive.

  1. Select stores for hot, warm, and cold tiers.
  2. Define retention and downsampling rules.
  3. Describe compaction/partitioning strategy.

Deliverable: A one-page plan with SLAs per tier.

Learning path

  • Before this: Logical modeling and access pattern discovery.
  • This lesson: Match workloads to storage patterns and tiers.
  • After this: Indexing/partitioning tactics, cost optimization, and lifecycle automation.

Next steps

  • Apply the decision checklist to one real dataset you manage today.
  • Pilot a small workload on the chosen pattern and measure latency/cost.
  • Create a runbook for compaction, reindexing, and retention.

Mini challenge

Design storage for a news app:

  • Use case A: Homepage shows trending articles and personalized recommendations in under 50 ms.
  • Use case B: Editorial analytics aggregates reads by region, device, and hour.
  • Use case C: Compliance requires 7-year archive of published content.

Propose stores, partitions, and lifecycle. Keep your answer under 10 bullets.

Practice Exercises

2 exercises to complete

Instructions

Scenario: A support system must load a customer record by id in under 5 ms and update contact preferences instantly. Nightly analytics compute churn metrics over 2 years.

  1. Choose the primary serving store.
  2. Choose the analytics store.
  3. Explain partitioning/format choices.

Deliverable: 3–5 bullet rationale.

Expected Output
Primary: key-value or row store for sub-5 ms lookups and updates. Analytics: columnar warehouse/lake with Parquet, partitioned by date. Clear rationale bullets.

Choosing Storage Patterns — Quick Test

Test your knowledge with 8 questions. Pass with 70% or higher.

8 questions70% to pass

Have questions about Choosing Storage Patterns?

AI Assistant

Ask questions about this tool