Snowflake
The orders database has been handling checkout comfortably. Then the reporting team adds a dashboard that scans a year of purchases, joins campaign data, and refreshes every few minutes. Checkout needs a handful of rows quickly; the dashboard needs to read and aggregate millions. They are now competing for the same machine.
Moving analytical data into Snowflake gives those reports their own place to run. Data arrives through batch loads or change-data pipelines, so the team must decide how fresh a report needs to be. The operational database can continue handling orders while analysts work on a copy designed for large scans.
Snowflake was founded in 2012 by Benoit Dageville, Thierry Cruanes, and Marcin Zukowski. Its architecture separates persistent storage from compute. A virtual warehouse is the compute cluster executing queries, not the database containing the tables. Several warehouses can read the same stored data with separate compute resources, so an ingestion job and a dashboard do not have to share a worker pool.
In a Snowflake SQL worksheet, a role with permission to create warehouses can create a small example warehouse. Select an existing database and schema where you can create temporary tables before continuing:
CREATE WAREHOUSE profile_analytics
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE
INITIALLY_SUSPENDED = TRUE;
USE WAREHOUSE profile_analytics;The warehouse starts suspended and resumes when a query needs it. Running compute consumes credits; auto-suspend limits idle time, but is not a spending cap. Separate warehouses provide workload isolation, while warehouse size and query shape affect how much work each one can handle.
To try the reporting query without loading a production export, create a temporary table in that same session:
CREATE TEMPORARY TABLE profile_orders (
order_id NUMBER,
ordered_at TIMESTAMP_NTZ,
total NUMBER(12, 2)
);
INSERT INTO profile_orders VALUES
(101, '2026-11-01 09:00:00', 79.00),
(102, '2026-11-01 10:30:00', 25.50),
(103, '2026-11-02 08:15:00', 40.00);
SELECT
TO_DATE(ordered_at) AS order_day,
COUNT(*) AS order_count,
SUM(total) AS revenue
FROM profile_orders
WHERE ordered_at >= '2026-11-01'::TIMESTAMP_NTZ
GROUP BY order_day
ORDER BY order_day;The query groups purchases by day and sums exact decimal amounts. TIMESTAMP_NTZ deliberately has no timezone; a real ingestion pipeline needs a convention for what those timestamps mean. The temporary table lasts for the session and does not become the reporting team's permanent dataset.
For standard analytical tables, Snowflake stores data in columnar micro-partitions and records metadata such as value ranges. A selective date predicate can let it skip irrelevant partitions. That is why loading and organizing data sensibly still matters even when the service manages storage: a query that genuinely needs the whole history still has that history to process.
After the experiment, explicitly suspend the example warehouse:
ALTER WAREHOUSE profile_analytics SUSPEND;Suspending compute preserves stored tables; storage has its own charges. Teams use this separation for business reporting, combining data from several services, and scheduled transformations. The useful design decision is which workloads and freshness requirements belong together, rather than putting every SQL query on the checkout database.
Batch jobs and resumable work follows the pipelines that keep an analytical copy up to date.