Skip to main content

az-table-catalog

A resilient, event-sourced indexing library for Azure Table Storage.

az-table-catalog allows you to create high-performance, multi-indexed lookup tables without the high minimum monthly fees of Cosmos DB. It uses a Write-Ahead Log (WAL) and a checkpoint-driven recovery model to ensure data consistency even during process crashes.

Project Page

http://shaunwagner.com/projects/az-table-catalog

Why TableCatalog?

Azure Table Storage is extremely cost-effective but lacks native secondary indexes. This library stores one row per (index, record) pair, encoding the index dimension directly into the PartitionKey.

  • Multi-Index Queries: Search by any field with O(1) performance.
  • Write-Ahead Log: Prevents "split-brain" states during multi-partition writes.
  • Range Queries: Filter index partitions by ordered fields (like timestamps).
  • Self-Healing: Automatically replays orphaned WAL entries on the next write.

Quick Start

import az_table_catalog

# Configure schema
az_table_catalog.configure(
    index_keys=["phone", "email"],
    row_key="timestamp"
)

# Insert returns the committed record
user = az_table_catalog.insert({
    "phone": "555-634-5789",
    "email": "user@example.com",
    "timestamp": "2026-02-24T12:00:00Z"
})

# Query any index
results = az_table_catalog.query({"phone": "555-634-5789"})

Configuration

The library can be initialized via configure() or these environment variables:

Variable Required Description
AZURE_STORAGE_CONNECTION_STRING Yes Azure Storage connection string
TABLE_CATALOG_NAME Yes Primary catalog table name
TABLE_CATALOG_INDEX_KEYS Yes Comma-separated list of indexed fields
TABLE_CATALOG_ROW_KEY Yes Field used as the sort key (RowKey base)

Technical Implementation

  • PartitionKey: Formatted as {len(field)}_{field}{value} to prevent collisions.
  • RowKey: Derived from the row_key value and an 8-character MD5 fingerprint of all indexed fields for idempotency.

License

MIT

Metadata

Release files for az-table-catalog 1.0.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 az-table-catalog 1.0.1
File Size Uploaded
az_table_catalog-1.0.1.tar.gz 7.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for az-table-catalog 1.0.1
File Interpreter ABI Platform
az_table_catalog-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 14.5 kB

Release files / az_table_catalog-1.0.1.tar.gz

Download URL az_table_catalog-1.0.1.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
cf5fd91fc1ae09e5b174cdd275d3a46248061206d537fbaa794402a379b7c9a4
BLAKE2b-256 checksum
How to use checksums
f44fe217daa0722508e38f150f37f1d4643c1e460c422688167dd4979b20af5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / az_table_catalog-1.0.1-py3-none-any.whl

Download URL az_table_catalog-1.0.1-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8339a1701bb0353630fab246f2985bbf0f54f540117c119c5218b7e0e796e7dd
BLAKE2b-256 checksum
How to use checksums
40bdd771081b381ba92f808ef4e974650c7e5cd11459a6a77ec6373e9212ab4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

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