You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A decided import design before the storage layer moves again. The direction: a recipe is a materialized view over a source; its result lands as parquet; versions belong to the record and the cube, not to the data.
What stands
Sources are one of three kinds: files (landed by recipe, the one path today), a lake (parquet in an object store, readable in place by the engine), a database (read through ADBC with the recipe's SQL run at the source; hard deletes cannot be seen from outside the source).
Shapes, each with what an update means for it: a file drop that grows; a file rewritten whole on every export; a partitioned lake where one partition moves; a database with an update key; a database with hard deletes, fenced by its owner into a view or a replica.
Modes to measure against them: full replace; append of new files; partition replace; increment by update key; merge on key. For each: cost at three sizes, what it requires of storage, what the record must remember to run it again.
The deliverable is that table. The storage decision reads off it: what remains of the data plane after landings, recipes and versions are record rows is a file list per recipe version and the engine's parquet scan.
Done when
The table exists with measured numbers; the recipe's update mode is one word on the declaration, proposed as a SPEC.md diff; the storage decision is a ruling with its grounds.
What it buys
A decided import design before the storage layer moves again. The direction: a recipe is a materialized view over a source; its result lands as parquet; versions belong to the record and the cube, not to the data.
What stands
IMPORT <table>appends files not yet landed and refuses changed or gone files; the file list rides a snapshot property (LANDING_FILES_PROP); the schema is inferred under a blocking wait (The file reader infers its schema under a blocking wait #58); a changed recipe's re-land drops the table before the new landing stands (A changed recipe's re-land drops the table before the new landing stands #59); the pin cannot overwrite (Strike and aspect re-declare on the record #5).The research
Shapes, each with what an update means for it: a file drop that grows; a file rewritten whole on every export; a partitioned lake where one partition moves; a database with an update key; a database with hard deletes, fenced by its owner into a view or a replica.
Modes to measure against them: full replace; append of new files; partition replace; increment by update key; merge on key. For each: cost at three sizes, what it requires of storage, what the record must remember to run it again.
The deliverable is that table. The storage decision reads off it: what remains of the data plane after landings, recipes and versions are record rows is a file list per recipe version and the engine's parquet scan.
Done when
The table exists with measured numbers; the recipe's update mode is one word on the declaration, proposed as a SPEC.md diff; the storage decision is a ruling with its grounds.