Overview
This vignette describes the Content-Addressable Storage (CAS) data model used by the storr.tiledb driver. The driver stores storr data inside a TileDB Group that contains two Sparse Arrays:
-
tbl_keysmaps key-namespace pairs to hashes and optional key metadata -
tbl_datamaps content hashes to serialized object values
The arrays are stored as members inside a TileDB Group at the driver’s URI. The Group also contains metadata about the storage format.
CAS: Group Structure
Array data models
tbl_keys array
A 2-dimensional sparse array that maps key-namespace pairs to hashes and key-metadata.
Dimensions
-
namespace(ASCII) -
key(ASCII)
Attributes
-
hash(ASCII) -
expires_at(DATETIME_MS) -
notes(UTF8)
tbl_data array
A 1-dimensional sparse array that maps content hashes to serialized values.
Dimensions
-
hash(ASCII)
Attributes
-
value(ASCII)
TileDB datatypes shown in parentheses.
Example
Below is a short example that shows creating a TileDB-backed driver and inspecting its layout.
# Create a temporary URI
uri <- tempfile()
# Create a driver (initializes the TileDB Group and member arrays)
dr <- driver_tiledb(uri, init = TRUE)Inspecting the driver directory tree:
dr$dir_tree()# C:/Users/cgiac/AppData/Local/Temp/RtmpCGgG9I/filea8c4634c2198
# ├── tbl_data
# │ ├── __commits
# │ ├── __fragments
# │ ├── __fragment_meta
# │ ├── __labels
# │ ├── __meta
# │ └── __schema
# │ ├── __1788419331967_1788419331967_74b1721886a26ec2193126881f9dbb8c
# │ └── __enumerations
# ├── tbl_keys
# │ ├── __commits
# │ ├── __fragments
# │ ├── __fragment_meta
# │ ├── __labels
# │ ├── __meta
# │ └── __schema
# │ ├── __1788419331966_1788419331966_0e09559a95f4ec77500deec0c06f103e
# │ └── __enumerations
# ├── __group
# │ └── __1788419332028_1788419332028_1f56eaee7d9f55ceb8eb3340202782d9_2
# ├── __meta
# │ └── __1788419331971_1788419331971_5c4223e71cb4e86ec491b1ad188091ae
# └── __tiledb_group.tdb
#
# ❯ directories (7) • total size (667 B)