dataarchitect.studio

Field Notes

Apache Polaris vs Nessie: The Merger That Never Happened

Start with the thing most comparisons of these two get wrong. In 2024 it was announced that Polaris and Nessie would merge, with Nessie’s capabilities folded into Polaris and Nessie eventually retired. It did not happen. As of mid-2026 both projects are alive and separate: Polaris graduated from incubation and ships on a regular release train, while Nessie continues to serve the git-for-data niche it invented.

That matters practically, because a fair amount of the guidance you’ll find is still written against the 2024 plan — advising people to pick Polaris on the grounds that Nessie is going away. Nessie isn’t going away. Choose on what each actually does.

The short version: default to Polaris. Choose Nessie only if you want Git-like branching of the catalog itself, which is a real capability that most estates don’t need.

Polaris vs Nessie, side by side

  Apache Polaris Nessie
Origin Donated by Snowflake, now ASF Dremio-backed, open source
Status, mid-2026 Graduated, monthly release train Independent, active
Core idea Spec-faithful REST catalog + RBAC Git semantics over the catalog
Access control Granular table and namespace privileges Branch- and commit-oriented
Credential vending Yes Limited
Multi-table transactions No Yes — that is the point
Branch / tag / rollback No Yes
Engine ecosystem Broad: Spark, Flink, Trino, Doris, DuckDB, Presto, Starburst Narrower, Dremio-centred
Managed option Snowflake Open Catalog Dremio
Choose it when You want a neutral default You want data as branchable state
Fails by Being unremarkable, which is the goal Solving a problem you don’t have

What Nessie actually gives you

Nessie’s distinctive claim is not access control or interop. It’s that the catalog behaves like Git: you can branch it, commit to the branch, test against it, and merge or discard. Because the branch covers the whole catalog rather than one table, you get something genuinely hard to obtain otherwise — atomic changes across several tables at once.

The workflow that justifies it looks like this:

-- Branch the entire catalog, not one table
CREATE BRANCH etl_run_2026_08_08 IN nessie FROM main;
USE REFERENCE etl_run_2026_08_08 IN nessie;

-- Rewrite several related tables; nothing is visible on main yet
MERGE INTO sales.orders   ...;
MERGE INTO sales.line_item ...;
MERGE INTO sales.customer  ...;

-- Validate the branch, then publish all three tables atomically
MERGE BRANCH etl_run_2026_08_08 INTO main IN nessie;

Anyone who has shipped a pipeline that half-updated three tables and left the warehouse internally inconsistent for forty minutes can see the appeal. It is the same instinct as idempotent pipelines, pushed up to the catalog: make the unsafe window not exist rather than making it short.

What Polaris actually gives you

Polaris is deliberately less interesting, and that is its argument. It implements the Iceberg REST catalog specification faithfully, vends credentials so the catalog can act as the real security boundary, and applies conventional role-based privileges at table and namespace level. Every spec-faithful engine talks to it without special handling.

Its second argument is governance of the project rather than of the data. It sits with the Apache Software Foundation with contributions from multiple vendors, it has graduated, and it has a predictable release cadence. If your reason for avoiding Unity Catalog and Glue is that you don’t want a single vendor holding the component you cannot casually swap, Polaris is the answer that reasoning points to. Snowflake’s managed Open Catalog is the same codebase operated for you.

Polaris and Nessie optimize for different things Two panels. Polaris is shown as a single main line of commits with role-based privileges applied per table and namespace, serving many engines through the Iceberg REST specification. Nessie is shown as a main line with a branch drawn off it, where three tables are rewritten in isolation and then merged back atomically, illustrating catalog-level branching and multi-table transactions. A note beneath records that the 2024 announcement to merge the two projects has not happened as of 2026 and both remain active. Polaris — one governed line Nessie — branchable catalog main — commits land directly RBAC per table + namespace credential vending · REST spec Spark · Flink · Trino · DuckDB · Presto branch: 3 tables rewritten together merged atomically → multi-table transactions · rollback · zero-copy test envs announced 2024: Nessie merges into Polaris, Nessie retired mid-2026: it has not happened. Both projects are active and separate.
One line versus branchable state. And a merger announcement that guidance still repeats two years on.

Why the merger stalled, and why you shouldn’t plan around it resuming

The two projects were never as complementary as the announcement implied. Polaris is organised around a single authoritative pointer per table with privileges layered on top — the model the Iceberg REST spec assumes. Nessie is organised around versioned references, where “current” is a property of the branch you’re reading. Merging them is not a matter of porting features; it means choosing which of two models of catalog state is the real one.

Practical implication: do not choose either catalog on the assumption they will converge. If branching is what you need, run Nessie and accept a narrower engine ecosystem. If it isn’t, run Polaris and don’t pay for a capability you won’t use.

The decision rule

Do you need atomic changes across MULTIPLE tables,
or branch-and-test against a copy of production catalog state?
   → Nessie. Nothing else does this cleanly.

Do you want a neutral, spec-faithful catalog with broad engine support
and conventional RBAC?
   → Polaris. Managed: Snowflake Open Catalog.

Not sure, and no multi-table transaction has ever hurt you?
   → Polaris. The branching model has real operational cost,
     and inventing a use for it after the fact is how estates
     accumulate machinery nobody maintains.

And the honest framing that applies to every catalog decision: the data files never move, so this feels like a reversible choice. It isn’t. Every engine config, every access policy, and all accumulated audit history live in the catalog, which is exactly why it deserves the evaluation weeks the format choice no longer needs.

Common questions

What is the difference between Apache Polaris and Nessie?

Both are open-source Iceberg catalogs, but they optimize for different things. Polaris is built around the Iceberg REST specification, centralized role-based access control, and credential vending, aimed at broad multi-engine interoperability. Nessie adds a Git-like model over the catalog: branches, tags, commits, and multi-table transactions, so you can isolate and roll back changes across many tables at once.

Did Apache Polaris and Nessie merge?

No. The merge was announced in 2024, with the stated intention that Nessie's capabilities would be contributed to Polaris and Nessie eventually retired. As of mid-2026 it has not happened. Polaris graduated from incubation and ships on a regular release train; Nessie continues independently serving the git-for-data niche. A lot of comparison content still repeats the 2024 plan as though it were current.

Which Iceberg catalog should I choose, Polaris or Nessie?

Default to Polaris. It is the neutral, spec-faithful REST catalog with the broader engine ecosystem and the more conventional governance model, and it now has ASF graduation behind it. Choose Nessie when you specifically want catalog-level branching — testing a pipeline against a branch of production data, or committing changes across several tables atomically. That capability is genuinely distinctive and most teams do not need it.

Is Apache Polaris the same as Snowflake Open Catalog?

Snowflake Open Catalog is Snowflake's managed service built on Polaris; Apache Polaris is the open-source project it came from and which Snowflake donated to the ASF. Running Open Catalog means running Polaris without operating it yourself. Snowflake Horizon, often listed alongside these, is the governance suite rather than the catalog.