Skip to main content

5 posts tagged with "Iceberg"

Apache Iceberg table format features

View All Tags

One ALTER TABLE for Millisecond Writes

· 5 min read
Gnok Team

A single-row INSERT into an Iceberg table is a strange thing to benchmark. The row is a few dozen bytes; the commit that lands it rewrites metadata, swaps a pointer, and waits for the catalog to say yes. On our own cluster that costs about 712 ms, and no amount of tuning changes the shape of it — you are paying for a catalog transaction, once per statement, whatever the statement contains.

That is fine for the workload Iceberg was built for. It is not fine for an application that edits one order, appends one comment, or increments one counter and then wants to read it back.

Gnok now takes a different path for those writes, and turning it on is one line of DDL:

ALTER TABLE orders SET TBLPROPERTIES ('gnok.write.mode' = 'command');

That write now acknowledges in 5–7 ms.

Build an Incremental Inventory Change Feed with Gnok CDC Streams

· 6 min read
Gnok Team

An inventory table may contain millions of products, but a downstream stock monitor usually needs only the rows that changed. Repeatedly scanning the full table wastes compute and makes deletes especially difficult to detect.

Gnok CDC streams turn the Iceberg snapshots behind a table into a bounded change feed. In this tutorial, we will create an inventory stream, inspect inserts, updates, and deletes, and acknowledge a batch after processing it.

From JSON to Iceberg: Bulk-Loading a Document Dataset into Gnok

· 7 min read
Gnok Team

We recently needed to land a large pile of JSON documents — roughly 50 GB across ~70 datasets, including a couple of 15+ GB monsters — into Gnok so it could be queried with SQL alongside everything else. The documents were schemaless and deeply nested; Gnok tables are columnar Iceberg. This post walks through the pipeline we landed on, and the handful of gotchas that shaped it.

Real Iceberg Rollback in Pure SQL

· 4 min read
Gnok Team

Most engines say they support time travel. Watch what happens when you actually try to roll back. Plenty of catalogs have shipped a "snapshot rollback" that quietly only edits the table's current-snapshot-id property — subsequent reads still hit the latest data. Until recently, gnok was one of them.

This post walks through how that path is now wired end-to-end: ALTER TABLE … SET SNAPSHOT actually flips the read pointer, the new is_current / parent_snapshot_id / sequence_number columns surface state honestly, and the $snapshots system view makes Iceberg metadata first-class SQL.

Iceberg v3 in Gnok: Deletion Vectors, VARIANT, Spatial Types, and Row Lineage

· 8 min read
Gnok Team

Apache Iceberg format version 3 brings four major capabilities: deletion vectors for more efficient row-level mutations, the VARIANT type for semi-structured data, GEOMETRY/GEOGRAPHY types for spatial analytics, and row lineage for stable row identity across compaction. Gnok now supports all of them.

This post explains what each feature does, when to use it, and how to get started.