VAST Data
VAST DataBase
IntermediateA columnar table format - like Iceberg or Delta, but native to the platform - that runs analytics directly on exabyte-scale storage, with no separate Parquet files or metastore.
A columnar table format built into storage
The lakehouse pattern stores tables as Parquet files on object storage, then layers a table format (Iceberg, Delta, Hudi) plus a separate metastore on top to add schema, ACID, and time-travel. It works, but the format, the files, and the catalog are three loosely-coupled pieces to keep consistent - and streaming ingest buries them under millions of tiny files that constantly need compaction.
VAST DataBase is a columnar table format too - analytical, schema-aware, ACID - but it is native to the platform: the table format, its metadata, and the data all live in DASE storage as one thing. There is no Parquet-files-plus-metastore split, and no small-file problem to compact away. Models and agents scan columnar tables directly on the source of truth, with no ETL copy into a separate warehouse.
Columnar
Tables stored as columns for fast analytical scans with predicate & projection pushdown.
Mutable & ACID
Real inserts / updates / deletes with ACID guarantees - not append-only like classic lake formats.
One copy
No metastore, no ETL hops - query the live source of truth in place.
The write path: Persistent Write Buffer → Low-Cost Flash
VAST DataBase unifies transactional and analytical workloads in one table format. It writes in rows, perfect for transactions, and stores in columns, optimized for analytics - and it is fully ACID compliant. Writes land row-by-row into a Persistent Write Buffer (Storage-Class Memory), a low-latency tier that removes write hotspots, then background processes reshape those records into small ~32 KB columnar chunks on low-cost QLC flash. The result is low-latency ingest and fast columnar scans from the same table, without the read-versus-write trade-off that forces most shops to run a separate OLTP database and analytical warehouse.
Compute is stateless over NVMe-oF: any node serves any query, with no sharding or partition owners, and ACID is enforced through decentralized object- and file-level locks at exabyte / trillion-row scale. Because the columnarization runs off the critical write path, ingest never pays the column-store tax, and there is no small-file compaction debt to chase.
Persistent Write Buffer
rows · SCM · no hotspots
Low-Cost Flash
columns · ~32 KB chunks · QLC
Writes land in the Persistent Write Buffer
Inserts, updates and deletes hit a low-latency, persistent write buffer (Storage-Class Memory) row-by-row - ideal for transactions. Every CNode can absorb a write, so there are no partition owners and no write hotspots: writes commit immediately, durably, and become queryable.
Crucially, tables, files and objects all live in one namespace with atomic, unified permissions - so a table row, a Parquet object and a raw file are governed and transacted together rather than scattered across systems.
Inside the column: a 32 KB chunk that prunes itself
Each column lands on flash as a ~32 KB chunk with a footer of metadata - sorted projections, customer-defined sort keys, and per-chunk statistics (min/max and count) - held in SCM, with no separate metadata manager. A chunk is roughly 1/4000th the size of a Parquet row group, so min/max pruning skips almost everything for a selective query: the engine reads one chunk instead of scanning a whole row group. That fine granularity is also why table updates stay simple - there is no partitioning to design, no pruning or vacuuming to run, and cross-table change data capture works at scale.
Anatomy of a 32 KB column
Footer metadata - in SCM
Self-describing, no metadata manager
Each chunk operates somewhat like Parquet, but the statistics, sort keys and projections travel with the data in SCM - there is no separate metadata service to scale or keep consistent. Customers can add their own sort keys for distributed sorting, projection and filtering, with index support built in.
Fine-grained: ~1/4000th of a Parquet row group
Fire a selective point lookup. Min/max statistics in each chunk's footer prune everything whose range cannot contain the value, so the engine reads a single 32 KB chunk instead of a whole row group - the best way to find needles in a haystack.
32 KB
0-999
32 KB
1000-1999
32 KB
2000-2999
32 KB
3000-3999
32 KB
4000-4999
32 KB
5000-5999
32 KB
6000-6999
32 KB
7000-7999
32 KB
8000-8999
32 KB
9000-9999
32 KB
10000-10999
32 KB
11000-11999
No partitioning toil
Non-partitioned datasets scan as fast as partitioned Parquet or Iceberg. Per-chunk min/max does the pruning, so there is no partition layout to design, maintain, or get wrong.
No pruning, no vacuuming
Updates rewrite only the affected 32 KB chunks - table updates stay simple and fast. There are no snapshot rewrites and no compaction or vacuum jobs to chase.
Cross-table CDC at scale
Fine-grained, mutable chunks make change data capture across tables simple - without the ETL limitations of legacy lake formats.
Simplified from VAST's published DataBase design (VAST-reported: ~32 KB columnar chunks, roughly 1/4000th the size of a Parquet row group, with per-chunk min/max statistics for pruning). Chunk ranges shown are illustrative.
Beyond the lakehouse
Iceberg, Delta Lake and Snowflake-style lakehouses pair Parquet files with a table format and a separate metastore. VAST DB is itself a native table format - metadata lives with the data, so there is no metastore bottleneck. Streaming and CDC into Iceberg / Delta spawn countless tiny Parquet files that need compaction; VAST's 32 KB chunking on flash sidesteps the small-file problem entirely. And instead of append-only writes with snapshot rewrites, VAST does real-time mutable inserts, updates and deletes with query-in-place and atomic multi-table transactions - no copy into a warehouse.
VAST-reported benchmark
120 ms
VAST DB point lookup
10-billion-row table
~1.6 s
Iceberg at equal concurrency
row-group scans
VAST reports storage-layer predicate pushdown and hierarchical sorted projections give roughly O(log n) lookups, versus Iceberg scanning row groups.
Lookup figures are from a VAST-run benchmark and reflect a specific configuration; treat as vendor-reported, not an independent result. The architectural differences above (no metastore, mutability, no small files) are verifiable design properties.
Query engines: native, federated & pushdown
VAST has its own native query engine that runs in-place on the CNodes, executing SQL and vector search directly against the columnar tables, with heavy aggregations GPU-accelerated by Sirius (VAST's open-source engine built on NVIDIA cuDF). Open engines such as Trino and Spark can also run natively on VAST serverless compute, or attach externally via push-down plugins that ship predicates and projections down to storage. BI tools reach the data through those SQL engines or via Arrow Flight SQL, and the Python SDK gives programmatic access. Pick an engine to see how it connects and where it fits.
VAST Query Engine
Native serverlessHow it connects
VAST's own query engine runs in-place on the CNodes, executing SQL and vector search directly against the columnar tables with predicate and projection pushdown - no external engine to deploy. Heavy SQL is GPU-accelerated by Sirius, VAST's open-source engine built on NVIDIA cuDF.
Typical use
In-platform SQL analytics and vector retrieval with no separate query cluster; GPU acceleration for large aggregations, joins and statistical functions.
GPU-accelerated SQL with NVIDIA Sirius
Sirius is an open-source GPU SQL engine - it accelerates DuckDB by plugging in through the Substrait query-plan format and running relational operators on NVIDIA cuDF, with no query rewrites. VAST embeds it inside the DataBase so heavy aggregations execute on GPUs at the compute layer, running on CNode-X (NVIDIA-Certified GPU servers). VAST's strengths - intelligent columnar layout and predicate / projection pushdown - cut how much data the GPU has to touch in the first place; Sirius makes the work that remains fly.
CPU vs GPU: the same analytical query, raced
VAST pushes predicates and projections down at the storage layer, then hands the heavy aggregation to Sirius on the GPU. Run the query and watch the lanes.
Query time
up to 44% less
Query cost
up to 80% less
The 44% time / 80% cost figures are VAST's own early benchmarks of VAST DataBase + Sirius, run on NVIDIA-Certified GPU servers (CNode-X). Conditions unspecified - treat as vendor numbers. The race animation is illustrative.
Don't confuse Sirius with KV cache
Sirius accelerates analytics (SQL on GPUs). It is not the KV-cache / inference story - that is NVIDIA Context Memory Storage (CMX) on the STX architecture, a separate piece of the VAST + NVIDIA stack. Two different GPUs-meet-data problems: Sirius is for queries, CMX is for inference context. See NVIDIA STX & CMX →
Sirius is one piece of VAST's end-to-end accelerated stack with NVIDIA:
CNode-X
GPU servers running the VAST platform directly on NVIDIA silicon.
Sirius
GPU SQL execution (cuDF) for analytics on the DataBase.
cuVS
GPU vector search powering the VectorStore and RAG.
CMX
KV-cache context tier for inference - the STX story.
A VAST number of ways to work with VAST DB
Whatever tool a team already uses, it points at the same tables. SQL engines, the Python SDK, streaming events, and bulk imports all read and write one copy of the data over NVMe-over-Fabrics - so there is no copying into a separate warehouse and one governance model covers everything. Tap a method to see how it connects.
Tap any method to see how it works. Every one resolves to the same tables - pick the tool that fits the job.
One VAST DB
unified columnar tables
capacity-efficient flash
Every access method reads and writes the same columnar tables, in place - no copies, no separate warehouse, one governance model.
Beyond these, VAST DB connects through Apache NiFi, Flink, Beam, Ray / Daft, Dremio, and LangGraph checkpoint storage. Native SQL Engine is VAST-reported as work in progress; capabilities shown are illustrative.
Apache Arrow & Arrow Flight: zero-copy at wire speed
Apache Arrow is a standardized columnar in-memory format. Arrow Flight transports Arrow record batches over gRPC with parallel streaming and zero-copy, avoiding the ODBC / JDBC serialization overhead commonly cited at 60–90%. VAST's SDK is Arrow-native: queries return a streaming pyarrow.RecordBatchReader, so data flows from flash to your dataframe without a row-by-row reserialization tax.
Columnar in memory
Arrow is the lingua franca - the same layout on disk, on the wire, and in your dataframe.
Zero-copy over gRPC
Arrow Flight streams record batches in parallel without ODBC / JDBC serialization.
Arrow-native SDK
vastdb reads return a streaming RecordBatchReader - pushdown done before bytes move.
The Python SDK in practice
The vastdb package (“vast-py”) installs with pip install vastdb. You connect with an endpoint plus access / secret keys, then run operations inside a session.transaction() block. The hierarchy is bucket → schema → table (PyArrow schemas): table.insert(pyarrow_table) writes rows, and table.select(...) returns a streaming reader with predicate and projection pushdown expressed via Ibis (e.g. (_.c2 > 2) & _.c3.isnull()).
import pyarrow as pa
import vastdb
from ibis import _
# 1. Connect: endpoint + access / secret keys
session = vastdb.connect(
endpoint="http://vip-pool.vast.example.com",
access="ACCESS_KEY",
secret="SECRET_KEY",
)
# 2. Everything runs inside an ACID transaction
with session.transaction() as tx:
# bucket -> schema -> table
schema = tx.bucket("ml").schema("features")
table = schema.table("user_events")
# 3. Insert a PyArrow table (row ingest -> SCM buffer)
batch = pa.table({
"user_id": [101, 102, 103],
"c2": [5, 1, 9], # int column
"c3": ["a", None, "c"], # nullable string
})
table.insert(batch)
# 4. Streaming read with predicate + projection pushdown (Ibis)
reader = table.select(
columns=["user_id", "c2"],
predicate=(_.c2 > 2) & _.c3.isnull(),
)
# 5. reader is a pyarrow.RecordBatchReader -> pandas
df = reader.read_all().to_pandas()
print(df)Arrow-native end to end: reads stream as a pyarrow.RecordBatchReader, so predicate and projection filtering happen in storage before any bytes cross the wire.
Beyond the basics: semi-sorted projections for fast secondary lookups, S3 Parquet import without a client-side copy, the VAST Catalog (query the filesystem itself as a table), and snapshots for point-in-time reads.
Serving features & metadata to AI pipelines
Because the table format holds fresh, mutable data and large-scale analytics together, AI pipelines read current, consistent data with no ETL hops. Features and metadata are served in real time from the source of truth: an agent can update a record and immediately query it, training jobs read the same tables that production writes, and the Event Broker exposes streams as queryable tables - closing the loop between operational and analytical data.
Real-time feature serving
Low-latency point lookups against live tables - no separate feature store to keep in sync.
Fresh metadata for agents
Agents read and mutate the same tables, so context is never stale.
Streams as tables
The Event Broker surfaces event streams as queryable tables for online + offline use.
Train where you serve
Training reads the same namespace production writes - one copy, one governance model.