,

Data storage options: pick by question, not fashion

8 min read
Server and archive aisle with labels and a decision notebook under a lamp. Text: Data storage options

Someone asks where “the data” lives. You open your mouth and five answers fight for the microphone: the app database, the warehouse, a lake bucket, a Looker explore, and a spreadsheet named final_final_v3. They are all partly right. Different stores solve different jobs.

This guide sorts the main options (operational databases, warehouses, lakes, marts, and the messy file layer) so you can choose by question and workload, not by which logo is trendy. Related reading: ETL vs ELT and data governance.

What you’ll learn

  • What each major store is for
  • How latency, structure, and cost trade off
  • When a mart helps and when it creates another silo
  • A simple decision table for common analytics questions
  • Mistakes teams make when they buy storage before they name a use case

Start with the question, not the product

Storage debates go wrong when they start with “we need a lakehouse” instead of “we need same-day order margins by region with a trusted product grain.” Name the grain, freshness, users, and failure cost first. Then pick the layer.

Stack diagram of operational databases, warehouse, lake, marts, and files
Most healthy stacks use several layers on purpose.

Operational databases

These power products: Postgres, MySQL, SQL Server, and app-specific stores. Optimized for correct writes and fast lookups of single records. They are usually a poor home for heavy historical analytics scans, but they are the system of record for many entities. If analysts run year-long scans on production checkouts, you will meet your DBA in a hallway conversation you will not enjoy.

Good forRisky for
App transactions, current stateYear-long scans that block writers
Point lookups by primary keyAd hoc joins across the whole business
Strict schemas the product needsUncontrolled analyst write access

Data warehouses and lakehouse cousins

Warehouses (Snowflake, BigQuery, Redshift, and similar) are built for analytical queries over large modeled tables. Cloud warehouses made ELT common: load, then transform with SQL and tools like dbt. Lakehouse platforms blur lines by putting warehouse-style tables on cheap object storage with table formats that support richer management.

What you want here: clear facts and dimensions, documented grains, and access controls that match business roles. What you do not want: every raw JSON dump with no owner living forever under a folder called temporary that is five years old.

Data lakes and object storage

S3, GCS, ADLS, and lake formats store cheap, flexible files: logs, extracts, images, parquet dumps. Great for history and multi-purpose raw landing. Terrible as the only interface for executives, because “just query the lake” often means “become a part-time data engineer before lunch.”

Use lakes as a landing and archive layer. Promote curated datasets into warehouse tables or well-governed lakehouse tables people can trust. Promotion is a product decision, not a weekend script without an owner.

Data marts and semantic layers

A mart is a purposeful slice: finance mart, growth mart, support mart. A semantic layer (LookML, dbt metrics, BI datasets) exposes business-friendly fields on top. They reduce repeated join logic. They also create drift if five marts redefine revenue differently. Pair marts with governance, not copy-paste SQL across folders.

Files and spreadsheets

Sheets still run companies. Pretending they do not is how shadow pipelines form. Give critical sheets owners, versioning where possible, and a path into the warehouse when a process stabilizes. Banning sheets without offering a better path just moves the chaos to email attachments and desktop files named for someone’s dog.

Decision table

You need…Prefer…Watch out for…
Correct order writes from the appOperational DBAnalysts overloading prod
Trusted cross-domain reportingWarehouse modelsUndefined grains
Cheap long history of raw eventsLake / object storageNo curation path
Department self-serve with guardrailsMart + semantic layerMetric forks
Fast one-off scenario modelingSheet or notebookBecoming the system of record

Cost, latency, and governance

Cloud storage is cheap; careless cloud compute is not. Scans that read every column of a giant fact table for a tiny chart will show up on a finance review. Design tables and clustering with common filters in mind. Put owners on expensive datasets. Governance is not only privacy; it is also “who pays when this query goes wild.”

Common mistakes

  • Buying a lake to store everything with no promotion rules
  • Running huge analytics on the production OLTP database
  • Three warehouses for politics, not workload
  • No cost controls on cloud scans
  • Calling a folder of CSVs a platform
  • Skipping grain definitions because “we will clean it later”

A Monday whiteboard exercise

Draw the stack. Point to one painful metric. Ask which layer owns its truth and who can change the definition. If nobody can answer, that is your first project. New vendors can wait until the ownership sentence is boringly clear.

Quick recap

  • Different stores solve different jobs
  • Warehouses excel at modeled analytics; lakes excel at cheap raw history
  • Marts need shared definitions
  • Start from grain and freshness
  • Promote data upward with owners

Write examples from your own workplace. A named dashboard fight teaches more than a generic industry claim, and it keeps the post useful when the logos on the architecture slide change again next year.

If two teams argue about a number, put both definitions on one page with owners and timestamps. Clarity beats a forced compromise that nobody trusts enough to use in a real decision meeting.

Ship a small artifact this week: a definition card, a quality check, a retired vanity chart, or a one-page brief. Momentum compounds faster than another strategy deck about becoming data driven someday.

Teach newcomers where the source of truth lives on day one. Onboarding is a data-system surface. If new hires learn the wrong table first, you will spend months undoing that habit in code review and Slack threads.

When something breaks, fix the rule or the automated test that should have caught it. Heroic manual checks do not scale, and they disappear the week everyone is out on holiday or buried in a launch.

Prefer plain words in meetings until everyone shares a definition. Jargon is fine after that. Before that, jargon is just a way to lose the people who will actually act on the analysis.

Keep a short change log for metrics, pipelines, and critical dashboards. Future you will need the date a definition shifted, and you will not find it in a year-old screenshot buried in a slide archive.

Measure one concrete thing that proves the new approach beats the old habit: fewer reconcile hours, faster ticket answers, lower duplicate rates, or fewer “which number is right” threads per month.

Resist boiling the ocean. One domain, one partnership, one metric strip, or one retrieval evaluation set is enough to learn. Expansion is easier after you have a win people can point at without squinting.

Document the messy edge cases in the open. Hidden footnotes become tribal knowledge, and tribal knowledge becomes an outage when the only person who remembered the footnote changes teams.

Write examples from your own workplace. A named dashboard fight teaches more than a generic industry claim, and it keeps the post useful when the logos on the architecture slide change again next year.

If two teams argue about a number, put both definitions on one page with owners and timestamps. Clarity beats a forced compromise that nobody trusts enough to use in a real decision meeting.

Ship a small artifact this week: a definition card, a quality check, a retired vanity chart, or a one-page brief. Momentum compounds faster than another strategy deck about becoming data driven someday.

Teach newcomers where the source of truth lives on day one. Onboarding is a data-system surface. If new hires learn the wrong table first, you will spend months undoing that habit in code review and Slack threads.

When something breaks, fix the rule or the automated test that should have caught it. Heroic manual checks do not scale, and they disappear the week everyone is out on holiday or buried in a launch.

Prefer plain words in meetings until everyone shares a definition. Jargon is fine after that. Before that, jargon is just a way to lose the people who will actually act on the analysis.

Keep a short change log for metrics, pipelines, and critical dashboards. Future you will need the date a definition shifted, and you will not find it in a year-old screenshot buried in a slide archive.

Measure one concrete thing that proves the new approach beats the old habit: fewer reconcile hours, faster ticket answers, lower duplicate rates, or fewer “which number is right” threads per month.

Resist boiling the ocean. One domain, one partnership, one metric strip, or one retrieval evaluation set is enough to learn. Expansion is easier after you have a win people can point at without squinting.

Document the messy edge cases in the open. Hidden footnotes become tribal knowledge, and tribal knowledge becomes an outage when the only person who remembered the footnote changes teams.

Write examples from your own workplace. A named dashboard fight teaches more than a generic industry claim, and it keeps the post useful when the logos on the architecture slide change again next year.

If two teams argue about a number, put both definitions on one page with owners and timestamps. Clarity beats a forced compromise that nobody trusts enough to use in a real decision meeting.

Sources