Skip to main content

Add your description here

Project description

SQLPile - SQL-Based Multi-Layered Caching (Arrow + SQLite + Postgres)

Full-featured multi-layered distributed cache using SQL databases. Why build a cache on top of a database? Largely because SQL has similar interfaces across many different databases, and it's easy to scale out. This project is a work in progress, and is not yet ready for production use.

Think about this project as if it's like Ibis, but for SQL caching. The goal is to have a simple interface that can be used to cache data in a SQL database. The project is designed to be used with a SQL database, and is not designed to be used with a NoSQL database. Just use redis at that point.

Installation

pip install sqlpile

Usage

from sqlpile import sqlpile
import sleep


@sqlpile
def expensive_function():
    sleep.sleep(10)
    return 1


def main():
    for _ in range(10):
        # Moves slow at first, but speeds up over time
        print(expensive_function)

Features

  • Multi-layered caching using local (SQLite) and remote (Postgres) databases
  • Serialization and compression of cached values using cloudpickle and lz4
  • Hashing of cache keys using xxhash for efficient lookup
  • Automatic caching of function results using a decorator
  • Asynchronous support with asyncio and aiosqlite
  • Dependency management using pyproject.toml and hatch
  • Code style enforcement with ruff

Configuration

from sqlpile.config import Config

config = ApplicationSettings(
    local_database_type="sqlite",
    local_database_name="cache.db",
    remote_database_type="postgresql",
    # ...
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlpile-0.3.2.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

sqlpile-0.3.2-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file sqlpile-0.3.2.tar.gz.

File metadata

  • Download URL: sqlpile-0.3.2.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for sqlpile-0.3.2.tar.gz
Algorithm Hash digest
SHA256 855a37ba30ed48ff9935e5c0d9d90620ac5cc9f58212da0c46b7ff0d56dcc594
MD5 7ac596fcf48f0dd7f50f4efad69c0b7a
BLAKE2b-256 349e3f80ffc8e43f4a3f6ba594ff4656c7b091fb24f7b9b94905f5a31e7befc3

See more details on using hashes here.

File details

Details for the file sqlpile-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: sqlpile-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for sqlpile-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 10f7c35eeba481a77e24d7e0f412d09a4fb9bbc9f830614483ac5ed63df6503f
MD5 9661f388a2e621c75e1e3c604163c38a
BLAKE2b-256 35ecf0b41361bec1fc155fffc9514088342eb58229290a5a8089fdab3dc98301

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page