Objects
Splitgraph objects, or fragments, are building blocks of Splitgraph tables. Each object is immutable and content-addressable (objects with same contents have the same object ID). Multiple tables can link to a single object.
sgr stores object metadata in the splitgraph_meta.objects table on the
engine. The metadata contains the
LTHash of rows
added/deleted by the object and the object index
that is a very short (a few KB) summary of the contents of the object.
With these features, sgr can satisfy queries to large datasets by only
downloading a few objects instead of the whole image.
sgr stores object data as tables in the splitgraph_meta schema on the
engine. Physically, objects are stored in
cstore_fdw files, a columnar store
for PostgreSQL that allows for
superior read performance and low IO load.
This allows sgr to rapidly swap CStore fragments as flat files without the
extra overhead of loading them into PostgreSQL.
Each object has an extra Boolean column, sg_ud_flag, that determines whether
the corresponding row in this object overwrites (upserts) or deletes a row in
case of a primary key conflict. This allows Splitgraph objects to support delta
compression.
More information on Splitgraph object internals is available.