Incremental View Maintenance for Python backends
Project description
stepping
Based on the paper: DBSP: Automatic Incremental View Maintenance for Rich Query Languages.
Installation
pip install stepping
Development installation
git clone git@github.com:leontrolski/stepping.git
python -m venv .env
source .env/bin/activate
pip install -e '.[dev]'
pytest
mypy src tests
Internals
Todos
Ergonomics
-
Rename to
stepping
and namespace tostepping/db
or something. -
Think of a nice way to implement nested collections with efficient operations.
-
Wrap
run.iteration
with further nice interface. -
Is there anything funky we can do like the
immerframe
lib. -
Add a commit timestamp for the tables for a future API.
-
Write everything up, email the dbsp people from the original paper.
Operator level
- Allow for (and test) arbitrary depth grouped nesting and joining in a grouped setting - is this necessary, or can it always just be achieved outside the group?
- Look at 11.8 "Window aggregates"
- Change
name: str
everywhere to beprovenance: Provenance
- Change
transform.finalize
to be likewith freshly_numbered_vertices():
and namespace tables. (There isreset_vertex_counter(...)
now if that helps). - Simplify
haitch
.
Types level
s/T/TSerializable/
- Add a
maybe
function that allows forpick_index(Left, maybe(left.a).foo)
. s/[T, K]/[K, T]/
everywhere.
Performance
- Running a pretty basic test (1 million reads, two joins, group by date), stepping's insert time is a lot slower, but querying the integrated data set takes
0.0003s
as opposed to0.5s
. (Details intest_profile_cute.py
).
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
stepping-0.0.1.tar.gz
(38.2 kB
view hashes)
Built Distribution
stepping-0.0.1-py3-none-any.whl
(32.9 kB
view hashes)