A data integration approach that provides a unified, real-time view of data from multiple sources without physically moving or replicating the data.
Data virtualization is the "query where the data lives" approach. Instead of copying every source into a central warehouse, you put a query engine in front (Trino, Starburst, Denodo, Dremio, Snowflake cross-database queries) and let users issue one SQL statement that federates across Postgres, S3 + Iceberg, MongoDB, Kafka, and the Snowflake warehouse. The appeal is obvious: no ETL pipeline for every new source, no data duplication, real-time freshness. The reality is subtler.
Data virtualization earns its keep in three places: (1) exploration and discovery — analysts can sniff a new source before you commit to ingesting it; (2) "last-mile" joins between warehouse data and a low-volume source (e.g., joining Snowflake fact tables with a Postgres config table that has 5K rows); (3) cross-region or cross-cloud federation where physically replicating everything is impractical or violates data-residency rules. It loses its value when you start federating heavy BI workloads across half a dozen sources — pushdown works imperfectly, network latency dominates, and queries that would take 2 seconds on a materialized warehouse table take 45 seconds on the virtualization layer.
A retailer I worked with used Trino/Starburst to federate across their Snowflake warehouse, a Postgres product catalog, and S3 + Iceberg event logs. This worked beautifully for data exploration — analysts prototyped dashboards in days instead of waiting on an ETL pipeline. When those dashboards moved to production and got hit by 200 concurrent users, Trino struggled; the queries were joining 50M-row Iceberg tables with Snowflake fact tables over the network, and p95 latency spiked to 30+ seconds. The fix was to materialize the production joins into Snowflake (regular ETL) and leave Trino for exploration. Virtualization is a great front door for analysts; it's rarely the right answer for production BI. Know what workload you're actually building before you commit either way.
Data Virtualization is a data integration technique that allows users to access, query, and combine data from multiple heterogeneous sources through a single virtual layer — without physically moving, copying, or transforming the data into a centralized repository.
Traditional ETL:
Source A → [Extract] → [Transform] → [Load] → Data Warehouse → Query
Source B → [Extract] → [Transform] → [Load] → Data Warehouse → Query
(Hours/days of latency, data duplication)
Data Virtualization:
Source A ──┐
├── Virtual Layer → Query (real-time, no duplication)
Source B ──┘| Tool | Type | Best For |
|---|---|---|
| Denodo | Enterprise platform | Large enterprise data fabric |
| Dremio | Open lakehouse | Data lake virtualization |
| Trino (PrestoSQL) | Open source query engine | Federated SQL across sources |
| Starburst | Managed Trino | Enterprise query federation |
| TIBCO Data Virtualization | Enterprise | Hybrid/multi-cloud integration |
| Snowflake (External Tables) | Cloud DW | Querying external data sources |
Data virtualization sells a beautiful story. The pitfalls are where production burns you:
Data virtualization is a technology that lets you query data from multiple sources — databases, data lakes, APIs, files — as if they were a single database, without physically copying the data into one place. A query engine (Trino, Denodo, Dremio) sits in front of the sources and translates your SQL into source-native queries, joins results across sources, and returns a unified view. It's useful for exploration, cross-source joins with small dimensions, and situations where physically replicating data is impractical — but it's rarely a full replacement for a properly built data warehouse at scale.
ETL physically moves and transforms data into a central warehouse — batch process, hours of latency, data is duplicated but available locally for fast queries. Data virtualization leaves data in place and queries it in real-time through a federated layer — no duplication, always-fresh data, but query performance depends on source systems and network. ETL is better for heavy analytics, historical data, and high-concurrency BI; virtualization is better for real-time access, data exploration, and scenarios where replication isn't feasible. Most mature organizations use both.
Yes — Trino (formerly PrestoSQL, originally built at Facebook) is an open-source distributed SQL query engine that functions as a data virtualization/federation layer. It has connectors for S3 + Iceberg/Parquet, Hive, Snowflake, BigQuery, Postgres, MySQL, MongoDB, Kafka, Elasticsearch, and many more. You write one SQL query and Trino executes it across sources, pushing filters down where possible. Starburst is the commercial, enterprise-supported version of Trino with added security, governance, and cost-management features. Trino is the go-to open-source choice for query federation in modern data platforms.
Use virtualization when: (a) you're exploring a new source before committing ETL effort; (b) you need to join warehouse fact tables with a small external dimension table; (c) data residency or cross-cloud constraints make replication impractical; (d) real-time freshness matters more than raw query speed. Use a warehouse when: (a) you have high-concurrency BI workloads (100+ users); (b) queries routinely aggregate large data volumes; (c) you need historical point-in-time snapshots; (d) SLAs demand predictable query latency. Most mature platforms use both — warehouse for the hot path, virtualization for exploration and edge cases.
Open source: Trino (most popular), Presto, Apache Drill, Dremio (open core). Commercial / enterprise: Denodo (the heavyweight enterprise data fabric platform), Starburst (managed Trino), TIBCO Data Virtualization, IBM Cloud Pak for Data, SAP HANA SDI. Cloud-native: Snowflake's cross-database queries and external tables, BigQuery's external data sources, AWS Athena Federated Queries. Choose based on ecosystem — Trino/Starburst for open-source and multi-cloud; Denodo for enterprise data fabric with strong governance; cloud-native for teams heavily invested in a single cloud warehouse.
Rarely in production. Virtualization excels at exploration, low-volume cross-source joins, and real-time access to operational sources. It struggles at high-concurrency BI, heavy aggregations, and predictable SLA-bound workloads. Network latency, imperfect pushdown, and source availability make it fragile for mission-critical dashboards used by hundreds of users. The successful pattern is hybrid: warehouse for materialized, high-concurrency workloads; virtualization for exploration, edge cases, and last-mile joins. Teams that try to go pure-virtualization usually end up building a warehouse within 18-24 months.
Query federation is the core mechanism of data virtualization — a single SQL query is parsed, split into per-source subqueries, executed on each source system, and results are combined and returned. The federation engine (Trino, Denodo) pushes down as much work as possible — filters, projections, simple aggregations — to the source system to minimize data movement. What can't be pushed down is performed in the federation engine itself. Pushdown efficiency varies by connector and query shape, which is why profiling matters. A well-designed federated query can be nearly as fast as native; a poorly-designed one pulls millions of rows across the network.