Add disk-backed SQLite cache mode as an alternative to in-memory
This commit is contained in:
@@ -6,6 +6,21 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
---
|
||||
|
||||
## [1.7.0] - 2026-06-08
|
||||
|
||||
### Added
|
||||
- **Disk-backed cache mode** — `CachingEngine(engine, in_memory=False)` (or env `SQLMEM_IN_MEMORY=false`) queries the on-disk `cache.db` directly instead of loading it into an in-memory SQLite. Every write persists immediately (no hourly backup thread, no load-on-startup copy, no `atexit`/`SIGTERM` flush needed), and the cache may exceed available RAM. The disk connection uses WAL + `synchronous=NORMAL` for write throughput. In-memory mode (backed up to disk periodically) remains the default. `in_memory` defaults to the `SQLMEM_IN_MEMORY` config when omitted.
|
||||
- On open, a disk cache with a mismatched `schema_version` is wiped in place and rebuilt.
|
||||
- `engine.reset()` in disk mode drops the cached tables and `VACUUM`s the file (it does not unlink the open file).
|
||||
- `SQLMEM_IN_MEMORY` env var (default `true`).
|
||||
|
||||
### Changed
|
||||
- `pyproject.toml` — bumped version to `1.7.0`
|
||||
- `cache.py` — `CacheManager` gained an `in_memory` flag; the cache connection (`_mem_conn` → `_conn`) is opened either on `:memory:` or directly on the on-disk file. Disk mode skips the load-on-startup copy, backup thread, and shutdown flush, and `reset()` VACUUMs in place instead of unlinking the open file.
|
||||
- `.gitignore` — ignore `cache.db` and its WAL sidecars (`cache.db-wal`, `cache.db-shm`).
|
||||
|
||||
---
|
||||
|
||||
## [1.6.0] - 2026-06-05
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user