VAST Data

VAST DataBase

Intermediate

A 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

rows reshaped into columns

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.

Rows = transactionsColumns = analytics- one fully ACID table format serving both, with atomic, unified permissions across tables, files and objects.

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

Column chunk~32 KB on QLC flash

Footer metadata - in SCM

ProjectionsSort keysMin/max()Count

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.

chunks scanned: 12 / 12

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

A Parquet row group is coarse - a selective query reads the whole group. VAST's 32 KB chunk is ~1/4000th that size, so selective queries touch a fraction of the data. Pick a lookup above to see min/max pruning skip the rest.

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.

Capability
VAST DB
Iceberg / Delta
Separate metastore
None - native table format, metadata lives with the data
External metastore (Hive/Glue/catalog) is a coordination bottleneck
Small-file problem
~32 KB columnar chunking on flash - no compaction debt
Streaming / CDC spawns countless tiny Parquet files needing compaction
In-place updates & deletes
Mutable rows - real UPDATE / DELETE at the storage layer
Append-only + snapshot rewrites; merge-on-read amplification
Real-time ingest
Row-by-row into SCM buffer, immediately queryable
Micro-batch commits; freshness gated by file/snapshot cadence
Atomic multi-table transactions
ACID across tables, files and objects in one namespace
Single-table snapshot isolation; cross-table atomicity not native
Query in place (no warehouse copy)
Columnar tables queried where they live - no warehouse copy
Often copy/ELT into a separate warehouse for fast analytics

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 serverless

How 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.

Native serverlessFederated pushdownProgrammaticAll paths push predicates & projections down to storage.

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.

CPU SQL engine
Sirius (GPU, cuDF)

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.

converge to

One VAST DB

unified columnar tables

NVMe-over-Fabrics

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()).

pip install vastdb  ·  quickstart.py
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.