swecrets

ClickHouse vs. Snowflake vs. BigQuery

Judgment — Rung 425 min read

Learning Objectives

  • Evaluate whether a workload fits ClickHouse's real-time OLAP category or Snowflake/BigQuery's data warehouse category, applying the distinction Module 1 established at the vocabulary level to a concrete architecture decision
  • Compare Snowflake's credit-based per-warehouse pricing, BigQuery's on-demand-per-TB-scanned and capacity/slots pricing, and ClickHouse's separated compute/storage pricing, and predict which usage pattern punishes which model
  • Choose between self-hosted ClickHouse, ClickHouse Cloud, and a fully-managed warehouse based on a team's tolerance for operational burden against its need for zero-ops elastic scaling
  • Defend a warehouse-vs-ClickHouse decision by naming the specific workload property driving it, and read a vendor-published comparison or benchmark with appropriate skepticism about its framing

Why This Matters

Module 1 gave you the vocabulary to place ClickHouse against Snowflake and BigQuery in the abstract: data warehouse — "built around a scheduled (batch) load pipeline... in exchange for deep, structured, ad-hoc query support over large historical datasets" — versus real-time OLAP — "architected for continuous ingestion... and sub-second query serving, typically to live dashboards or applications." That distinction was never wrong, but it was never a purchasing decision either. This module is where that vocabulary starts costing real money and real engineering time: a team that reads "ClickHouse is faster and cheaper" off a vendor comparison page and migrates an internal, latency-tolerant BI workload learns nothing from the migration except that the bill changed shape. The judgment this lesson builds is knowing which of your workloads actually lives in which category — and reading the (mostly vendor-published) evidence for that decision with your eyes open about who wrote it.

The trade-off

The real axis isn't "which system is faster" — on the right workload, each of these three can look excellent, and on the wrong one, each can look terrible. The axis is fit between a workload's latency/concurrency shape and cost model, and each system's actual architecture — not a single number, but three separate questions that don't always point the same direction: how latency-sensitive are the queries, how many of them run concurrently against live, continuously arriving data, and which pricing model turns your actual usage pattern into a predictable bill instead of a surprising one.

The alternatives, steelmanned

Snowflake — the mature, governed warehouse. Snowflake's compute is billed in credits, consumed per-second once a virtual warehouse is running, with a warehouse's credit rate roughly doubling each size tier up. Crucially, a suspended warehouse burns zero credits — "Warehouses are only billed for credit usage while running" — so a workload with real idle time (nightly batch, business-hours-only analysts) can genuinely cost very little the rest of the day if auto-suspend is configured well. Beyond pricing, Snowflake's actual strength is maturity: zero-copy cloning, time travel, a large semi-structured (VARIANT) type ecosystem, deep governance and access-control tooling, and a vast BI-tool integration surface built over more than a decade of enterprise adoption. For an internal analytics team running ad hoc, exploratory SQL over a large historical warehouse, where "the dashboard takes 8 seconds to load" is a non-issue, this is a genuinely strong, unglamorous, defensible choice.

BigQuery — serverless-by-default analytics. BigQuery's on-demand model charges per amount of data a query processes, with no warehouse to size at all — genuinely serverless, in the sense that there's no compute unit to provision, start, or stop. For workloads with unpredictable, bursty query patterns and no dedicated platform team to manage warehouse sizing, this removes an entire category of operational decision that Snowflake and self-hosted ClickHouse both require someone to make. BigQuery also offers capacity-based "editions" pricing — reserved slot-hours, billed with a one-minute minimum, for teams that want predictable costs instead of per-query variability. Like Snowflake, its real strength beyond pricing is ecosystem maturity: tight integration with the rest of Google Cloud, native JSON support, and the same multi-year enterprise governance track record.

ClickHouse — self-hosted or Cloud — built for the workload the other two weren't. Both warehouses above are architected around ad hoc, latency-tolerant analytical queries over data that arrives on a batch schedule. ClickHouse's entire design — from Module 2's vectorized execution through Module 3's merge-driven storage engine — targets a different shape: continuous ingestion and sub-second query latency at high concurrency, including workloads where the queries aren't internal analysts but your own product's end users. Self-hosted ClickHouse has no consumption-pricing surprises at all — you pay for the hardware you provision, running or not — at the real cost of needing the operational skill this entire course has been building. ClickHouse Cloud narrows that gap by separating compute and storage and scaling compute toward zero when idle, similar in spirit to the warehouses' elasticity, while still running the same MergeTree engine this course has spent five modules teaching. What neither ClickHouse deployment option has yet is Snowflake or BigQuery's depth of governance tooling, semi-structured-data ergonomics polish, or multi-decade enterprise track record — real gaps, not marketing exaggerations, for a team that specifically needs those things.

The same query volume, three different bills, depending on the actual usage shapetext
Workload: 200 queries/day, each scanning ~50 GB, run in short bursts
during business hours, idle the other 16 hours.

Snowflake (Small warehouse, auto-suspend after 1 min idle):
  Pays only for active seconds — idle hours cost ~$0, per the
  "billed only while running" mechanic above.

BigQuery on-demand:
  Pays per query regardless of clustering in time — no idle-time
  discount exists because there's no warehouse sitting idle to begin
  with; cost is purely a function of bytes scanned per query.

Self-hosted ClickHouse:
  Pays for the provisioned server 24 hours a day, whether or not
  a query is running in any given hour — idle time is not free here.

Decision framework

  1. Who is running the queries, and what latency do they actually need? Internal analysts running ad hoc SQL who are fine waiting several seconds are a different workload than end users viewing a live dashboard inside your product. This is Module 1's data-warehouse/real-time-OLAP distinction, made concrete: it's the single most determinative question here, not a detail to check last.
  2. What does your actual usage pattern look like against each pricing model's punishing case? A bursty, idle-heavy workload is cheap on Snowflake (auto-suspend) and BigQuery (pay only for what's scanned), but expensive on self-hosted ClickHouse (the server runs regardless). A workload with unbounded, unfiltered ad hoc queries over huge tables is exactly what makes BigQuery on-demand's per-TB-scanned model dangerous, covered in the case study below.
  3. How much operational ownership is the team actually willing to take on, and does the cost model reflect that honestly? Self-hosted ClickHouse's lower sticker price isn't free — it's paid in the operational skill this course exists to teach. ClickHouse Cloud, Snowflake, and BigQuery all convert that ownership into a dollar line item, priced differently by each vendor's own economics.
  4. Does the workload need governance and semi-structured-data maturity that only an established warehouse has today, or genuine real-time ingestion and interactive latency that only a real-time OLAP system delivers? Neither category substitutes for the other's core strength — this is a "which one, for which job" question, not "which one, period."
  5. Who published the evidence you're using to decide, and what are they selling? Every specific number in this lesson — Snowflake's and BigQuery's own pricing docs, ClickHouse's own comparison page, even a competing vendor's cautionary blog post — comes from a source with a stake in the answer. That doesn't make the numbers false; it means reading them as one data point about someone else's workload, not a verdict about yours.

Cold Start — No AI

Your company runs Snowflake for internal BI: roughly 30 analysts, nightly ETL, dashboards refreshed each morning and queried throughout the business day. Typical query latency is 5–20 seconds, which nobody has ever complained about. The monthly Snowflake bill is around $12,000, and finance has asked whether it can be reduced. A vendor sales engineer pitches: "switch your warehouse to ClickHouse Cloud and cut this bill by 4–5x" — citing real customer numbers similar to this lesson's case studies below.

Before reading further or asking an AI assistant anything: is this workload actually a good candidate for that pitch? What, specifically, would you need to know before agreeing or disagreeing — not in general, but about this workload? Write your reasoning down.

Reflection: Where were you tempted to just ask an AI "should we switch from Snowflake to ClickHouse to save money" and act on whatever came back? A prompt phrased that generically is likely to surface real cost-comparison numbers — the same kind this lesson cites — without ever asking whether nightly-refreshed, 5-to-20-second-latency internal BI is the workload shape those numbers were measured on. Would a quick AI answer have caught that this workload's idle-heavy, latency-tolerant profile is exactly the shape Snowflake's auto-suspend billing already handles reasonably well, and that ClickHouse's core advantage — sub-second latency at high concurrency — isn't a problem this workload has?

Reasoning Prompt

A different team at the same company is building a brand-new feature: customers will view their own usage analytics inside the product itself, refreshed in near-real-time, with potentially thousands of customers viewing dashboards concurrently during business hours. No data warehouse currently serves this use case. The team is deciding among (1) extending the existing Snowflake account to serve this too, (2) standing up BigQuery specifically for this feature, (3) self-hosted ClickHouse, and (4) ClickHouse Cloud. Reason through which you'd recommend, and what assumption would change your recommendation. There isn't a single correct answer — multiple choices are defensible depending on assumptions you'll need to state explicitly.

Model Answer

A reasonable default: ClickHouse Cloud, with self-hosted ClickHouse as the strongest alternative if the team already has (or is willing to build) real operational capacity, and extending Snowflake or standing up BigQuery as the weaker fits for this specific feature — though not without real conditions attached.

  • Why not extend Snowflake or add BigQuery: this feature's profile — many concurrent end users, near-real-time refresh, latency that's actually user-facing rather than analyst-tolerated — is close to the textbook case Module 1's "real-time OLAP" category exists to name, and neither warehouse's architecture or pricing model was built around it. Snowflake's per-warehouse credit model would likely need either a large, constantly-running warehouse (expensive, since "thousands of concurrent viewers during business hours" isn't the idle-heavy pattern that makes Snowflake cheap) or a queuing strategy that reintroduces the latency this feature can't tolerate. BigQuery's on-demand model bills per query regardless of concurrency, which could become unpredictable at real product scale, and its architecture isn't tuned for this latency profile either.
  • Why ClickHouse Cloud over self-hosted: this is a new workload without existing operational investment behind it — standing up self-hosted ClickHouse well is a real skill (this entire course), and a team building a brand-new customer-facing feature is taking on product risk already. ClickHouse Cloud's separated compute/storage and scale-to-zero behavior gets most of ClickHouse's latency and concurrency advantage without also requiring the team to become MergeTree operators on day one.
  • What would change the recommendation: if the team already runs ClickHouse in production elsewhere and has real operational muscle, self-hosted becomes more attractive purely on unit economics — the ops cost is already sunk. If the "thousands of concurrent viewers" turns out to be a significant overestimate (say, dozens, not thousands, and refresh-every-few-minutes is actually fine, not near-real-time), the latency/concurrency case for ClickHouse at all weakens, and extending the existing Snowflake account — avoiding a second platform to operate and pay for — becomes a genuinely reasonable choice, on operational-simplicity grounds rather than performance ones.

The shape of the reasoning matters more than the specific pick: name the workload's actual latency and concurrency profile before naming a system, and treat "we already operate X" as a real input to the decision, not a tie-breaker applied after the fact.

Case studies

A documented good fit, with a sourcing caveat stated up front. ChartMetric, a music analytics company, is quoted on ClickHouse's own vendor comparison page — not an independent source, and that matters for how much weight to give it — describing Snowflake as "too slow and costly for our needs," adding: "while it performs well for processing in-house data, it becomes quite expensive when handling real-time customer data within a product, which negatively impacts the product's unit economics." Read skeptically, this is still a useful data point, because the shape of the complaint matches this lesson's core distinction precisely: Snowflake struggling specifically with product-embedded, real-time customer data — not with "processing in-house data," which the same quote says it handles well. Two more named quotes on the same page describe similar shapes: M3ter reporting Snowflake and Postgres queries that "had become painfully slow... some took over a minute, others timed out entirely," resolved after migrating; AdGreetz reporting Snowflake's standard plan cost "nearly six times more than ClickHouse Cloud" for a workload wanting sub-second queries and materialized views that plan didn't support well. All three are ClickHouse-published customer testimonials — real, named, quotable, and also exactly the kind of evidence a vendor selects to make its own product look good. Weigh accordingly.

A cost-model failure mode, from the opposite side. RisingWave Labs — a competing streaming-database vendor, worth noting as its own source bias — published a detailed account of a single EXPORT DATA query against a large public BigQuery dataset that, due to an unfiltered scan, was billed for "1,576.56 TB" of referenced data across three executions, totaling roughly "$9,847.24" for queries that ran in about 22 seconds. Whatever the framing, the underlying mechanism is real and matches BigQuery's own documented pricing model: cost tracks data referenced by a query, not how carefully that query happened to be written, which is exactly why decision-framework step 2 treats "unbounded, unfiltered ad hoc queries over huge tables" as a real risk factor specific to on-demand pricing, not a hypothetical one.

Citing a vendor's own comparison page as neutral evidence. Every specific testimonial number in this lesson's first case study came from ClickHouse's own marketing site. That doesn't make them fabricated, but treating "ClickHouse says it's 4x cheaper than Snowflake" as settled fact, rather than as one vendor's selected evidence, is exactly the reflex decision-framework step 5 exists to interrupt — including when reading this lesson.

Choosing based on a raw benchmark number without checking cost-model fit. A workload that's genuinely faster on ClickHouse in a synthetic benchmark can still cost more in practice if it's idle-heavy enough that Snowflake's auto-suspend or BigQuery's pure pay-per-query model already keeps the bill near zero the rest of the time — the CodeExample above exists to make this concrete, not hypothetical.

Treating self-hosted ClickHouse's lower sticker price as free. The "pay for hardware, not credits" pitch is real, but it silently assumes a team that already has, or is willing to build, the operational skill this entire course has spent five modules on. A team without that skill isn't choosing "cheaper ClickHouse" — it's choosing "the same operational cost, paid in outages and slow debugging instead of a monthly invoice."

Summary

Module 1 named the category distinction — data warehouse versus real-time OLAP — and this lesson turns it into an architecture decision with real cost consequences. Snowflake and BigQuery are both mature, well-governed systems built around ad hoc, latency-tolerant analytical queries over batch-loaded data; their pricing models (Snowflake's per-second, per-warehouse credits with real idle-time savings via auto-suspend; BigQuery's on-demand per-TB-scanned model, or its capacity/slots alternative) reward different usage shapes than they punish. ClickHouse — self-hosted or via ClickHouse Cloud — targets the opposite shape: continuous ingestion and sub-second latency at high concurrency, including product-embedded, customer-facing analytics neither warehouse's architecture was built around. The decision isn't "which is faster" in the abstract; it's which workload you actually have, measured against each system's real cost-model punishing case, and weighed against how much operational ownership your team is honestly willing to take on. Every specific comparison number available on this topic — including the ones cited in this lesson — comes from a source with a stake in the answer, which makes reading the framing, not just the number, part of the actual skill.

Quiz

  1. 1. A team runs internal BI dashboards, refreshed nightly, queried by ~20 analysts during business hours, currently on Snowflake with auto-suspend configured. A vendor pitches switching to ClickHouse Cloud for a 4x cost reduction, citing real customer testimonials. What's the strongest first response, applying this lesson's decision framework?

  2. 2. Why does a workload with real idle time (business-hours-only queries, idle overnight) tend to cost much less on Snowflake or BigQuery than the same workload run on self-hosted ClickHouse?

  3. 3. A team runs an unfiltered SELECT * against a huge, unpartitioned BigQuery table. What specifically makes this dangerous under BigQuery's on-demand pricing model, as opposed to Snowflake's or self-hosted ClickHouse's pricing?

  4. 4. A team is building a new feature where end customers view live usage dashboards inside the product, with thousands of potential concurrent viewers. Why does this lesson's model answer favor ClickHouse Cloud over extending an existing Snowflake account for this specific feature?

  5. 5. This lesson cites ClickHouse's own comparison page for customer testimonials and a competing vendor's blog post for a BigQuery cost story. Why does the lesson treat both as useful evidence while also explicitly flagging their sourcing?