A node/edge property, as persisted to redb (via postcard, see
encode.rs) and used directly as MarsDB’s runtime scalar type – there
is no separate “wire” representation. New variants append at the end
(postcard’s derive encodes an enum discriminant by declaration order),
never reorder/remove an existing one, or every already-stored property
silently decodes as the wrong variant.
Either kind of redb transaction — lets a function that only ever reads
(.get()/.iter(), never .insert()/.remove()) run against a real
WriteTransaction (the crash-safety boundary for a write statement) or
a ReadTransaction (so a read-only statement doesn’t have to contend
for redb’s single-writer lock at all). WriteTransaction/
ReadTransaction share no common trait in redb itself — open_table/
open_multimap_table are inherent methods on two unrelated structs,
returning different concrete types (Table/ReadOnlyTable,
MultimapTable/ReadOnlyMultimapTable) — so this (and TableHandle/
MultimapTableHandle below) is a small local abstraction over that,
not something redb provides.
A DateTime’s zone: a fixed UTC offset, or a named IANA timezone
(Europe/Stockholm) whose real offset varies by instant (DST) and is
resolved on demand, not stored – see PropertyValue::DateTime’s doc
comment.