Open ray6080 opened 7 months ago
@ray6080: I had a different solution for trying to make all updates to datalog objects transactional. My solution was modeling every database object as a system-level table (e.g., _Sys_Catalog), which are not visible to the user. And we update them with the same logic of updating tables. This is briefly mentioned in "Further Considerations" part of issue 2529.
The problem
RelGroup
is also modelled as a Table, which is not the correct level of abstraction, as it should be the parent of a bunch of rel Tables. same for rdf graph.Solution
In memory data structures
MetaEntry
. An entry can be one of following types:On disk storage Add the abstraction of
MetaWriter
andMetaReader
. Internally, they make use ofSerialize
andDeSerializer
to read and write meta entries. Each entry starts with an offset in file, which is maintained inside a DiskArray,DiskArray<PageCursor> metaDA
.