Document DB sync prototype scope
This commit is contained in:
parent
b01da7be4b
commit
59c86aba6a
4 changed files with 40 additions and 14 deletions
|
|
@ -6,11 +6,25 @@ Accepted.
|
|||
|
||||
## Decision
|
||||
|
||||
Database sync will use local SQLite databases with cr-sqlite. Changes from
|
||||
`crsql_changes` will be exchanged over Iroh and applied through cr-sqlite, with
|
||||
schema hash gating and resource authorization.
|
||||
Database sync uses local SQLite databases with cr-sqlite-compatible
|
||||
`crsql_changes` tables or views. Geth extracts typed change batches, exchanges
|
||||
them over the protected Iroh control path, checks schema metadata before
|
||||
application, and applies compatible batches through the local `crsql_changes`
|
||||
interface.
|
||||
|
||||
The prototype does not add a second snapshot transport for DBs. CAS-backed DB
|
||||
snapshots or change-batch blobs are deferred until the change path proves too
|
||||
large for the control path or until initial peer catch-up needs snapshots.
|
||||
|
||||
## Consequences
|
||||
|
||||
The MVP stores DB resource metadata and leaves synchronization as explicit future
|
||||
work.
|
||||
The prototype has deterministic fixture coverage for extraction, application,
|
||||
two-node Iroh exchange, authorization, schema mismatch detection, and live-sync
|
||||
watermarks.
|
||||
|
||||
A real cr-sqlite extension integration test is intentionally not marked done in
|
||||
this environment because there is no `sqlite3` CLI or cr-sqlite extension
|
||||
artifact available to load. The blocker is environmental, not a protocol
|
||||
decision. When the extension is available, add a two-node test that creates a
|
||||
real cr-sqlite-enabled table, mutates one node, runs `geth db sync`, and proves
|
||||
the second node applies the change through cr-sqlite.
|
||||
|
|
|
|||
Loading…
Reference in a new issue