Dead simple cache for unwieldily joined relations.
Project description
tablecache
Dead simple cache for unwieldily joined relations.
Copyright and license
Copyright 2023 Marc Lehmann
This file is part of tablecache.
tablecache is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
tablecache is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with tablecache. If not, see https://www.gnu.org/licenses/.
Purpose
tablecache is a small library that caches tables in a slow database (or, more likely, big joins of many tables) in a faster storage.
Suppose you have a relational database that's nice and normalized (many tables), but you also need fast access to data resulting from joining a lot of these tables to display somewhere.
tablecache can take your big query, and put the denormalized results in faster storage. When data is updated in the DB, the corresponding key in cache can be invalidated to be refreshed on the next request.
Usage
The main components when using the library are a DB table abstraction
(PostgresTable), a storage table abstraction (RedisTable), and a
CachedTable tying the 2 ends together.
The storage needs to encode and decode the data (to/from bytes). This is done
via codecs. Some basic ones are provided (tablecache.*Codec).
Check out examples/users_cities.py for a quick start, which should be pretty self-explanatory.
Limitations
Currently, only Postgres is supported as DB, and only Redis as the fast storage.
The library assumes that the query to be cached has a (single) column acting as primary key, i.e. one which uniquely identifies a row in the result set of the query.
At the moment, the Redis storage supports only one table, which takes up the entire keyspace of the connected Redis instance.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tablecache-2.1.0.tar.gz.
File metadata
- Download URL: tablecache-2.1.0.tar.gz
- Upload date:
- Size: 25.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49ee2041417d1328b321d71fcd7622eb7a06ca7f18279d5fe48997b1b9afdbe7
|
|
| MD5 |
36dfd507752e95d896b32f32b801e584
|
|
| BLAKE2b-256 |
540e1749b0ff85eca43b913b244534c1752a859b89169c9c8be9ecafdbd21f22
|
File details
Details for the file tablecache-2.1.0-py3-none-any.whl.
File metadata
- Download URL: tablecache-2.1.0-py3-none-any.whl
- Upload date:
- Size: 22.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79383fa93ba9c61dfb5144cde013c4218ab78ea71e59a4b05a082aa556e6cb19
|
|
| MD5 |
214885d4d0e77e5f5b8beab112027cb7
|
|
| BLAKE2b-256 |
78a9ef9817c5883b52f8950810955635933911e11a7764513f4f74611d4391cd
|