Overview
Project Nessie provides a Git-like experience for your data lake, bringing version control concepts to Apache Iceberg tables. With Nessie, you get:- Git-like operations: Create branches, tags, and commits
- Multi-table transactions: Atomic changes across multiple tables
- Time travel: Access historical states across the entire catalog
- Isolated experimentation: Test changes in branches before merging
Nessie requires a separate server. See Project Nessie - Getting Started to set up a Nessie server.
Key Features
Branches
Create isolated environments for development, testing, and experimentation
Tags
Mark specific points in history for reproducibility and compliance
Multi-table Transactions
Atomically commit changes across multiple tables in a single operation
Merge & Cherry-Pick
Integrate changes between branches selectively
Configuration
Required Properties
Spark Configuration
Start Spark with Nessie catalog:Flink Configuration
Java API
Working with Branches
Create a Branch
List Branches
Make Changes in a Branch
Merge Branches
Delete a Branch
Working with Tags
Create a Tag
Access Tagged State
Multi-table Transactions
Nessie enables loosely coupled multi-table transactions using branches:While this provides atomic visibility of changes, each operation is still a separate Iceberg transaction. This is different from true ACID multi-table transactions.
Experimentation Workflow
Test schema changes or partition evolution safely:Time Travel Across Catalog
View the entire catalog at a specific commit:Nessie SQL Extensions
Nessie provides additional SQL commands for repository management:Advanced Features
Cherry-Pick Commits
Selectively apply commits from one branch to another:Namespace Enforcement
Nessie requires explicit namespace creation:Table Maintenance
Before running maintenance:- Identify all active branches that reference the table
- Ensure snapshots used by any branch are not expired
- Consider using Nessie Management Services
Use Cases
CI/CD for Data Pipelines
CI/CD for Data Pipelines
Create a branch for each pipeline run, validate results, and merge only if tests pass:
Multi-table ETL
Multi-table ETL
Update fact and dimension tables atomically:
Environment Isolation
Environment Isolation
Maintain separate dev, staging, and prod branches:
Compliance & Auditing
Compliance & Auditing
Tag snapshots for regulatory requirements:
Client Tools
Nessie provides additional tools beyond SQL:- Nessie CLI: Command-line interface for repository operations
- Python Client: Python library for programmatic access
- REST API: Direct HTTP API access
Comparison with Other Catalogs
Resources
Next Steps
Custom Catalog
Build your own catalog implementation
Table Maintenance
Learn about snapshot expiration and cleanup