Skip to main content

SuperTable

Python License Version

SuperTable — versioned data lake library for SQL analytics.

SuperTable stores structured data as immutable Parquet snapshots on object storage (S3, MinIO, Azure Blob, GCP Cloud Storage, or local disk), keeps metadata, locks, and audit state in Redis, and queries everything through DuckDB (embedded) or Spark SQL. It is a Python library — there is no separate server process.

Installation

pip install supertable                # core + local storage
pip install "supertable[s3]"          # AWS S3
pip install "supertable[minio]"       # MinIO
pip install "supertable[azure]"       # Azure Blob
pip install "supertable[gcp]"         # Google Cloud Storage
pip install "supertable[all]"         # everything

Requirements: Python 3.10+, a reachable Redis 6+, and a configured storage backend (or local disk for development). See docs/02_configuration.md for environment variables.


Architecture

┌──────────────────────────────────────────────────┐
│                Python application                 │
│   (notebooks, ETL jobs, FastAPI handlers, etc.)   │
└──────────┬─────────────────────────┬──────────────┘
           │ DataWriter / DataReader │
           ▼                         ▼
   ┌───────────────┐        ┌────────────────────┐
   │  RedisCatalog │        │  StorageInterface  │
   │  metadata     │        │  Parquet files     │
   │  locks        │        │  S3 / MinIO /      │
   │  audit chain  │        │  Azure / GCP /     │
   └───────────────┘        │  Local             │
                            └────────────────────┘

Data is organised as Organization → SuperTable → SimpleTable. Each SimpleTable is a versioned, append-only collection of Parquet files backed by a snapshot linked list — every write produces a new immutable snapshot whose previous_snapshot points at the predecessor.

Layer Technology
Language Python 3.10+
Metadata store Redis 6+ (standalone or Sentinel HA)
Query engine (primary) DuckDB
Query engine (large) Spark SQL via Thrift
Data format Apache Parquet
Object storage MinIO / S3 / Azure / GCP / local
Mirror formats Delta Lake, Apache Iceberg, Parquet
Audit storage Redis Streams + Parquet

Quick example

from supertable import SuperTable, DataWriter, DataReader, engine

# Bootstrap catalogue + storage
SuperTable(super_name="example", organization="my-org")

# Write
dw = DataWriter(super_name="example", organization="my-org")
columns, rows, inserted, deleted = dw.write(
    role_name="superadmin",
    simple_name="facts",
    data=arrow_table,
    overwrite_columns=["day", "client"],
    lineage={"source_type": "manual", "source_id": "my-job"},
)

# Read
dr = DataReader(
    super_name="example",
    organization="my-org",
    query="SELECT day, sum(value) FROM facts GROUP BY day LIMIT 10",
)
df, status, message = dr.execute(role_name="superadmin", engine=engine.AUTO)

Demos

The package ships two runnable demos under supertable.demo:

# Numbered tutorial — runs the full lifecycle end-to-end.
supertable-demo-quickstart
# or
python -m supertable.demo.quickstart

# Synthetic webshop dataset.
supertable-demo-webshop-generate    # build ~1.2M rows on disk
supertable-demo-webshop-load        # load them into SuperTable
supertable-demo-webshop-topup       # continuous incremental refresh

Both demos are also runnable as module steps. Examples:

python -m supertable.demo.quickstart.s01_01_01_create_super_table
python -m supertable.demo.quickstart.s03_08_read_snapshot_history
python -m supertable.demo.webshop.generate

See supertable/demo/README.md for the full script index.


What's included

  • Versioned tables with snapshot isolation, upsert (overwrite_columns), soft deletes (delete_only=True), schema evolution, and staleness filtering
  • DuckDB query engine — embedded, zero-copy reads from object storage
  • Spark SQL via Thrift — for queries exceeding DuckDB memory limits
  • RBAC — role types (superadmin, admin, writer, reader, meta) with row-level and column-level security enforced through view chains
  • Audit logging — tamper-evident SHA-256 hash chain in Redis Streams with Parquet export
  • Monitoring — MonitoringWriter pushes read/write/metric payloads to Redis lists; structured JSON logging with correlation IDs
  • Ingestion — staging areas (Staging) and automated ingestion pipes (SuperPipe)
  • Mirroring — optional Delta Lake / Iceberg / Parquet export after every write
  • Snapshot history — every write chains to previous_snapshot, enabling point-in-time inspection without separate historical tables

Documentation

See docs/00_index.md for the full table of contents.

# Document Description
01 Platform Overview Architecture, package layout, deployment, data flow
02 Configuration Environment variables and runtime settings
03 Data Model Organization → SuperTable → SimpleTable hierarchy
04 Storage Backends StorageInterface, S3, MinIO, Azure, GCP, local
05 Redis Catalog Metadata store, key naming, operations, CAS
06 Data Writer Write pipeline, locking, dedup, tombstones
07 Ingestion & Pipes Staging areas, automated ingestion pipes
08 Distributed Locking Redis locks, file locks, deadlock prevention
09 Query Engine DuckDB Lite/Pro, Spark SQL, auto selection
10 Data Reader Read facade, snapshot history, view chain
11 RBAC & Access Control Roles, users, row/column security
12 Audit Logging SHA-256 hash chain, DORA/SOC 2, SIEM
13 Table Mirroring Delta Lake, Iceberg, Parquet export
14 Monitoring Metrics writer, structured logging
15 Python SDK Core classes, demos, example index

License

SuperTable is licensed under the Functional Source License, Version 1.1, ALv2 Future License (FSL-1.1-ALv2).

You may use, copy, modify, create derivative works, publicly perform, publicly display, and redistribute the software for any permitted purpose other than a Competing Use.

A Competing Use means making the software available to others in a commercial product or service that:

  1. substitutes for SuperTable;
  2. substitutes for another product or service offered by Kladna Soft Kft. using SuperTable; or
  3. offers the same or substantially similar functionality as SuperTable.

Permitted purposes include internal use, non-commercial education, non-commercial research, and professional services provided to a licensee using the software in accordance with the license.

Each version of the software becomes available under the Apache License 2.0 on the second anniversary of the date that version is made available.

See LICENSE for the full license terms.

Copyright © 2024-2026 Kladna Soft Kft.

Metadata

Release files for supertable 3.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for supertable 3.4.1
File Size Uploaded Provenance Actions
supertable-3.4.1.tar.gz 841.6 kB Without provenance Details for supertable-3.4.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for supertable 3.4.1
File Interpreter ABI Platform Actions
supertable-3.4.1-py3-none-any.whl Python 3 none any Details for supertable-3.4.1-py3-none-any.whl

Total release size: 1.8 MB

Release files / supertable-3.4.1.tar.gz

Download URL supertable-3.4.1.tar.gz
Size 841.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0611767cdb59116f543cffdae3d2e6ad485e772225afe00ba0e58cf0283b393f
BLAKE2b-256 checksum
How to use checksums
bf4dd81029655512c6e9b5ee6cd1cd0732f66398d245f3b75e7992e834ea3533
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / supertable-3.4.1-py3-none-any.whl

Download URL supertable-3.4.1-py3-none-any.whl
Size 952.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00f7a3ff77d79796c8ff1623a386a27d2b60e223376edc0fe0137dbc885123c4
BLAKE2b-256 checksum
How to use checksums
cfbe45237a7d2e0400e214a76ee60d2cad9b13dc69a90856e9c5422168d5ed7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Security for supertable 3.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

3.4.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page