Skip to content

Understanding .snout Files

Joel Guerra edited this page Jun 11, 2026 · 1 revision

A .snout file is SnoutDB's native binary representation of a typed table. It stores column names, types, null values, metadata, and column data together.

Why Use .snout?

  • Avoid repeatedly parsing CSV, JSONL, or logs.
  • Preserve inferred types and nullable columns.
  • Store values in a column-oriented layout.
  • Compress repeated strings with dictionary encoding when beneficial.
  • Reuse data for queries, transformations, merges, compaction, and rollups.
  • Open the same data through the C ABI.

Typical Workflow

./snout csv-import calls.csv calls.snout
./snout info calls.snout
./snout stats calls.snout jitter_ms
./snout -f calls.snout group=region -- p95=jitter_ms count=rows

Internal Layout

Files are versioned and divided into chunks of up to 65,536 rows. Each column chunk records:

  • encoding type;
  • null count and null mask;
  • typed payload;
  • numeric minimum and maximum values.

Current encodings are Plain and Dictionary. The current writer produces format v2 and the reader retains v1 compatibility.

When Not to Use It

Use the original text format for one-off inspection or interchange with other tools. .snout is an application format, not a universal exchange standard.

Keep original source data when provenance, interoperability, or independent reprocessing matters.

Compatibility

SnoutDB is pre-v1.0.0; preserve important raw data and review release notes before upgrading persisted workflows.

Canonical format documentation: RFC-0002 and storage architecture.

Clone this wiki locally