Query engines
Compute that runs SQL over data it doesn’t own, and scales separately from the storage.
31 technologies on this page ↓How it works
A query engine parses your SQL, asks a catalog which files hold the table, and splits the work into tasks that many workers run in parallel. Each worker reads its share of Parquet files straight from object storage, then results are shuffled, aggregated and returned through a coordinator. Because the data stays in open files, several engines can share it: an interactive SQL engine for dashboards, Spark for heavy batch and ML jobs, DuckDB on a laptop. Each one scales up, or shuts down, without moving any data.
Researchers in a public library. You can bring in one or a hundred and they all read the same shelves. When they go home, the books stay put.
Reach for it when
- Interactive SQL over a data lake without loading it into a warehouse first
- Several teams or tools that need the same tables through different engines
- Spiky analytics, where paying per query or per second beats an always-on cluster
Think twice when
- Sub-second lookups for an app; use a database or a cache
- Small data: DuckDB or a single Postgres is simpler than a distributed cluster
A real example
A retailer keeps three years of clickstream as Iceberg tables in S3. Analysts run Athena queries that each scan a few GB and pay per TB scanned. A nightly Spark job on EMR builds features from the same tables, and an engineer debugs one day’s partition with DuckDB on a laptop.
Technologies
Specific products, and what each does differently.
Distributed engines and MPP databases
Clusters that split one query across many machines.
DremioCommercialA SQL lakehouse engine built on Apache Arrow, with its own Iceberg catalog and “reflections” that speed up queries without anyone changing them.Mainly Lakehouses
StarRocksOpen sourceAn open-source MPP analytical database with a vectorized engine that serves fast joins and real-time updates on its own tables, and also queries Iceberg, Hudi, Delta Lake and Hive tables in place.Mainly Real-time analytics databasesManaged and serverless engines
Someone else runs the machines; you pay per query, scan or use.
Amazon AthenaAWSAWS’s serverless SQL engine for data in S3: no cluster to run, and on-demand queries cost $5 per TB scanned.
MotherDuckCommercialA serverless cloud data warehouse built on DuckDB, where one query can run partly on your laptop and partly in the cloud.Mainly Data warehouses
HotdataCommercialA managed SQL engine for AI agents, built in Rust on Apache DataFusion and Arrow: each agent gets short-lived “instant databases” to load data into, then runs read-only SQL, vector, full-text and geospatial queries over an HTTP API or CLI.Single-node and embedded engines
One process, often a library inside your program, sometimes wrapped as a small server.
GizmoSQLOpen sourceA database server that wraps DuckDB (or SQLite) and serves it to many clients over Arrow Flight SQL, with TLS and authentication.
Spice.ai OSSOpen sourceA single-binary SQL engine in Rust, built on DataFusion and Arrow, that federates queries across databases, warehouses and lakes, keeps hot datasets in a local accelerated copy, and adds search and LLM APIs on top.
PivotOpen sourceA young open-source analytics server in Rust that speaks the PostgreSQL protocol and queries Iceberg and Delta Lake tables straight from object storage.Mainly Real-time analytics databasesBuilding blocks for engine builders
Parsers, planners and execution libraries that other engines are made of.
VeloxOpen sourceMeta’s open-source C++ execution engine library: it takes an already-optimized query plan and runs it with vectorized operators, and it is the engine inside Presto’s C++ workers (Prestissimo) and Apache Gluten’s native Spark.
Apache CalciteOpen sourceA Java framework with everything a database needs to understand a query (SQL parser, validator, relational algebra and a rule-based, cost-based optimizer) but no storage of its own, which Hive, Flink, Druid, Dremio, Beam and many other systems embed as their SQL front end and planner.The Hadoop generation
Where SQL on big clusters started, still found in older data platforms.
Interfaces to engines
Ways to write a query once and send it to an engine.
IbisOpen sourceA Python dataframe API that compiles to SQL, so the same code runs on DuckDB on a laptop and on BigQuery, Snowflake, PostgreSQL or more than 20 other engines.
Apache ZeppelinOpen sourceA self-hosted web notebook where each paragraph runs through an interpreter: Spark, Flink, JDBC, Python and more. Maintained, but behind Jupyter and Databricks in reach.| Distributed engines and MPP databases | Open source | Trino Software Foundation | Apache 2.0 | 2026-10-05 | |
| Distributed engines and MPP databases | Open source | Presto Foundation (Linux Foundation) | Apache 2.0 | 2026-10-06 | |
| Distributed engines and MPP databases | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-05 | |
Dremio | Distributed engines and MPP databases | Commercial product | SAP (acquired Dremio in July 2026) | Proprietary (Dremio Cloud and Enterprise); the free Community Edition is Apache 2.0 (dremio-oss), last released as 26.0.5 in September 2025 | 2026-10-06 |
| Distributed engines and MPP databases | Commercial product | Databricks, Inc. | Proprietary | 2026-10-05 | |
StarRocks | Distributed engines and MPP databases | Open source | StarRocks Project (Linux Foundation), led by CelerData, now PhoenixAI | Apache 2.0 (Elastic License 2.0 until December 2022) | 2026-10-06 |
| Distributed engines and MPP databases | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-10 | |
Amazon Athena | Managed and serverless engines | Managed service on AWS | Amazon Web Services | Proprietary | 2026-10-05 |
| Managed and serverless engines | Managed service on Google Cloud | Google Cloud | Proprietary | 2026-10-05 | |
MotherDuck | Managed and serverless engines | Commercial product | MotherDuck Corporation | Proprietary (built on MIT-licensed DuckDB) | 2026-10-05 |
Hotdata | Managed and serverless engines | Commercial product | Hotdata | Proprietary managed service; the CLI is MIT, and the DuckLake library it donated to DataFusion is Apache 2.0 | 2026-10-11 |
| Managed and serverless engines | Commercial product | SpiralDB (Spiral) | Proprietary (the Python SDK is published under a proprietary licence); its storage format, Vortex, is Apache 2.0 | 2026-10-06 | |
| Single-node and embedded engines | Open source | DuckDB Foundation and DuckLabs | MIT | 2026-10-05 | |
| Single-node and embedded engines | Open source | ClickHouse, Inc. | Apache 2.0 | 2026-10-06 | |
| Single-node and embedded engines | Open source | Polars (the company), started by Ritchie Vink | MIT (Polars Cloud, the company’s managed platform, is a separate commercial service) | 2026-10-06 | |
| Single-node and embedded engines | Open source | GlareDB, Inc. | MIT since the rewrite (0.10.0, April 2025, onward); the DataFusion-based versions up to 0.9.5 were AGPLv3 | 2026-10-11 | |
| Single-node and embedded engines | Open source | Anton Kundenko, with Lynx Trading Technologies | MIT | 2026-10-06 | |
GizmoSQL | Single-node and embedded engines | Open source | GizmoData LLC | Apache 2.0 (Core); Enterprise features proprietary | 2026-10-06 |
Spice.ai OSS | Single-node and embedded engines | Open source | Spice AI, Inc. | Apache 2.0 | 2026-10-06 |
Pivot | Single-node and embedded engines | Open source | Epsio Labs | MIT or Apache 2.0, at your option | 2026-10-06 |
| Building blocks for engine builders | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-05 | |
Velox | Building blocks for engine builders | Open source | Meta | Apache 2.0 | 2026-10-11 |
| Building blocks for engine builders | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-11 | |
Apache Calcite | Building blocks for engine builders | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-11 |
| The Hadoop generation | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-06 | |
| The Hadoop generation | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-06 | |
| Apache Impala | The Hadoop generation | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-06 |
| Apache PigDormant | The Hadoop generation | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-06 |
Ibis | Interfaces to engines | Open source | Ibis project (core team sponsored by Voltron Data) | Apache 2.0 | 2026-10-09 |
Apache Zeppelin | Interfaces to engines | Open source | Apache Software Foundation | Apache 2.0 | 2026-10-06 |
| Other | Commercial product | Cloudflare, Inc. | Proprietary | 2026-10-12 |
What each provider calls it
- AWS
- Athena, Redshift Spectrum, EMR (Spark, Trino), Glue
- Google Cloud
- BigQuery (incl. BigLake tables), Managed Service for Apache Spark (formerly Dataproc)
- Azure
- Microsoft Fabric (SQL endpoint, Spark), Azure Databricks, Synapse serverless SQL
- Open source & others
- Trino, Presto, Apache Spark, Apache Hive, Apache Impala, DuckDB, Polars (a DataFrame library with a streaming engine), StarRocks, ClickHouse, Apache DataFusion (a library to build engines on), chDB (ClickHouse as a library), GizmoSQL (DuckDB served over Arrow Flight SQL), Spice.ai OSS (federates sources and caches them locally, built on DataFusion); also Dremio (now part of SAP), Starburst
See it in a real stack
Architectures that use query engines
In code · python
import duckdb
con = duckdb.connect()
con.sql("CREATE SECRET (TYPE s3, PROVIDER credential_chain)")
# DuckDB reads only the columns and row groups this query needs
con.sql("""
SELECT date_trunc('day', ts) AS day, count(*) AS views
FROM read_parquet('s3://lake/clicks/2026/09/*.parquet')
GROUP BY day ORDER BY day
""").show()Benchmarks
How to read a benchmark →Often confused with
Where it came from2009–2018
For most of database history, the SQL engine and the storage were one product: to query data, you loaded it into the database, in the database’s own format. In the late 2000s, companies such as Facebook began keeping huge datasets as plain files in Hadoop’s HDFS, because traditional warehouses had become prohibitively expensive at that size. But querying those files meant writing low-level MapReduce programs that were hard to maintain and reuse.
Facebook’s Hive, described at VLDB 2009, put SQL on top of those files. A table was just a directory, a catalog (the Hive Metastore) recorded schemas and formats, and each query compiled into MapReduce jobs; Facebook’s Hive warehouse already held over 700 TB. Hive was slow, so a wave of engines followed that read the same files without MapReduce: Google’s Dremel paper (2010) showed interactive SQL on data in place, Cloudera announced Impala and Facebook built Presto in 2012, and Spark SQL followed. AWS made the idea serverless with Athena in 2016, billing per byte scanned.
Sharing files between engines had a weakness: no transactions, so a half-finished write could corrupt a table. Table formats such as Apache Iceberg, created at Netflix in 2017, added that, which is why several engines can now safely work on the same tables.
Why it’s built this way
- A catalog that maps tables to files
- Once storage was just files, an engine needed somewhere to learn which files make up a table and how to read them. Hive’s Metastore filled that role, and later catalogs such as Glue and Iceberg REST catalogs followed the same idea.
- Pipelined, in-memory execution instead of MapReduce
- Hive’s MapReduce jobs wrote every stage to disk. Presto and Dremel-style engines stream results between stages in memory, trading some fault tolerance for interactive speed.
- Open columnar file formats
- Dremel’s encoding for nested columns was adopted by Apache Parquet in 2013, so any engine could read only the columns a query needs, without one vendor owning the format.
Timeline
- 2009
Facebook describes Hive, SQL over files in Hadoop
- 2010
Google’s Dremel paper shows interactive SQL on data in place
- 2012
Cloudera announces Impala; Facebook starts Presto
- 2013
Presto open-sourced; Twitter and Cloudera announce Parquet
- 2016
Amazon Athena offers serverless SQL over S3, billed per byte scanned
- 2018
Netflix’s Iceberg table format enters the Apache Incubator
- Thusoo et al.: Hive, A Warehousing Solution Over a Map-Reduce Framework (VLDB 2009)
- Melnik et al.: Dremel, Interactive Analysis of Web-Scale Datasets (VLDB 2010)
- Melnik et al.: Dremel, A Decade of Interactive SQL Analysis at Web Scale (VLDB 2020) · archived copy, original
- Cloudera blog: Cloudera Impala, real-time queries in Apache Hadoop, for real (Oct 2012)
- Engineering at Meta: Presto, interacting with petabytes of data at Facebook (Nov 2013)
- Armbrust et al.: Spark SQL, Relational Data Processing in Spark (SIGMOD 2015)
- AWS News Blog: Amazon Athena, interactive SQL queries for data in Amazon S3 (Nov 2016)
- Apache Iceberg GitHub: first commit at Netflix (Dec 2017)
- Apache Incubator: Iceberg incubation status
- Armbrust et al.: Delta Lake, ACID Table Storage over Cloud Object Stores (VLDB 2020)
- Trino docs: Fault-tolerant execution (queries fail on node failure by default)
Sources27
- Trino docs: Trino concepts (coordinator, workers, stages, splits)
- Apache Iceberg: REST catalog spec
- AWS Glue docs: Data Catalog and crawlers
- Amazon Athena pricing (per TB scanned)
- DuckDB docs: Reading and writing Parquet files (projection and filter pushdown)
- DuckDB docs: S3 API support (credential_chain secrets)
- Amazon Redshift docs: Amazon Redshift Spectrum
- Amazon EMR docs: Apache Spark
- Amazon EMR docs: Trino
- AWS Glue docs: What is AWS Glue?
- BigQuery docs: Introduction to BigLake
- Google Cloud docs: Managed Service for Apache Spark (formerly Dataproc) overview
- Microsoft Learn: SQL analytics endpoint of a Fabric lakehouse
- Microsoft Learn: Spark compute in Fabric
- Microsoft Learn: What is Azure Databricks?
- Microsoft Learn: Serverless SQL pool in Azure Synapse Analytics
- Apache Spark: Spark SQL
- Presto on GitHub (prestodb)
- ClickHouse docs: What is ClickHouse?
- StarRocks docs: Introduction
- Dremio docs
- Starburst docs: Introduction (products built on Trino)
- DataFusion docs: Introduction
- Apache Hive home page
- Impala docs: Components of the Impala server
- pola-rs/polars on GitHub
- spiceai/spiceai on GitHub