Create and append
One
append == one atomic commit, durable on return. Append in batches rather than
row-by-row for throughput.Open an existing table
A table persists, so you create it once and open it on later runs withopen_table.
Update and delete
In Python and Node.js,update and delete match rows by a SQL predicate
string. In Rust, they take a DataFusion Expr (col(...).eq(lit(...))), where col
and lit come from the datafusion-expr crate (see the Quickstart for the
companion crates Rust needs). update replaces matched rows 1:1 with the new rows you
supply.
Compact, list, and drop
optimize accepts options (omit for engine defaults):
Reclaim storage (gc)
Compaction and interrupted writes can leave behind storage objects that the table no longer references.gc deletes them and reports what it reclaimed. It
only removes objects older than a grace window (in seconds), so it never races a
concurrent reader or writer; requires durable storage.
optimize already runs a best-effort gc after compacting, so calling gc
directly is mainly for reclaiming on a schedule or after bulk deletes.
Limitations
- One writer per table at a time. Appends/updates/deletes are serialized through a single atomic commit (concurrent writers from other processes retry).
updateis 1:1. The matched row count must equal the replacement-row count.update/deleteneed durable storage, notmemory://.- Schema is fixed at creation. Adding or changing columns means a new table.
