Dimensions define the hyperspace of the array, in which cells are stored and efficiently retrieved. You can think of dimensions as the fields of a dataset that receive the majority of the query conditions, since TileDB is designed to perform range search on these dimensions very fast. Dimensions differ from attributes, which define the values that TileDB stores inside the multi-dimensional cells. Visit the Performance: Dimensions vs. Attributes section for information about how to choose the dimensions and attributes when creating an array for your dataset.

The dimensions also define the cell coordinates in sparse arrays. Contrary to dense arrays, sparse arrays in TileDB do not materialize empty cells on storage. Therefore, there has to be a way to know the cells to which the non-empty cells correspond. To achieve this, TileDB materializes the cell coordinates of the non-empty cells, which depend on the number and data types of the dimensions. Visit the Array Data Model, Key Concepts: Data Layout and Storage Format Spec sections for more information on how TileDB stores the cell coordinates in sparse arrays.
The following table summarizes the supported dimension data types for dense and sparse arrays.
TILEDB_STRING_ASCII |
Variable length string |
Sparse |
TILEDB_INT8 |
8-bit integer |
Dense & Sparse |
TILEDB_UINT8 |
8-bit unsigned integer |
Dense & Sparse |
TILEDB_INT16 |
16-bit integer |
Dense & Sparse |
TILEDB_UINT16 |
16-bit unsigned integer |
Dense & Sparse |
TILEDB_INT32 |
32-bit integer |
Dense & Sparse |
TILEDB_UINT32 |
32-bit unsigned integer |
Dense & Sparse |
TILEDB_INT64 |
64-bit integer |
Dense & Sparse |
TILEDB_UINT64 |
64-bit unsigned integer |
Dense & Sparse |
TILEDB_FLOAT32 |
32-bit floating point |
Sparse |
TILEDB_FLOAT64 |
64-bit floating point |
Sparse |
TILEDB_DATETIME_YEAR |
Years |
Dense & Sparse |
TILEDB_DATETIME_MONTH |
Months |
Dense & Sparse |
TILEDB_DATETIME_WEEK |
Weeks |
Dense & Sparse |
TILEDB_DATETIME_DAY |
Days |
Dense & Sparse |
TILEDB_DATETIME_HR |
Hours |
Dense & Sparse |
TILEDB_DATETIME_MIN |
Minutes |
Dense & Sparse |
TILEDB_DATETIME_SEC |
Seconds |
Dense & Sparse |
TILEDB_DATETIME_MS |
Milliseconds |
Dense & Sparse |
TILEDB_DATETIME_US |
Microseconds |
Dense & Sparse |
TILEDB_DATETIME_NS |
Nanoseconds |
Dense & Sparse |
TILEDB_DATETIME_PS |
Picoseconds |
Dense & Sparse |
TILEDB_DATETIME_FS |
Femtoseconds |
Dense & Sparse |
TILEDB_DATETIME_AS |
Attoseconds |
Dense & Sparse |
Datatype.StringAscii |
Variable length string |
Sparse |
Datatype.Int8 |
8-bit integer |
Dense & Sparse |
Datatype.UInt8 |
8-bit unsigned integer |
Dense & Sparse |
Datatype.Int16 |
16-bit integer |
Dense & Sparse |
Datatype.UInt16 |
16-bit unsigned integer |
Dense & Sparse |
Datatype.Int32 |
32-bit integer |
Dense & Sparse |
Datatype.UInt32 |
32-bit unsigned integer |
Dense & Sparse |
Datatype.Int64 |
64-bit integer |
Dense & Sparse |
Datatype.UInt64 |
64-bit unsigned integer |
Dense & Sparse |
Datatype.Float32 |
32-bit floating point |
Sparse |
Datatype.Float64 |
64-bit floating point |
Sparse |
DataType.DateTimeYear |
Years |
Dense & Sparse |
DataType.DateTimeMonth |
Months |
Dense & Sparse |
DataType.DateTimeWeek |
Weeks |
Dense & Sparse |
DataType.DateTimeDay |
Days |
Dense & Sparse |
DataType.DateTimeHour |
Hours |
Dense & Sparse |
DataType.DateTimeMinute |
Minutes |
Dense & Sparse |
DataType.DateTimeMillisecond |
Milliseconds |
Dense & Sparse |
DataType.DateTimeMicrosecond |
Microseconds |
Dense & Sparse |
DataType.DateTimeNanosecond |
Nanoseconds |
Dense & Sparse |
DataType.DateTimePicosecond |
Picoseconds |
Dense & Sparse |
DataType.DateTimeFemtosecond |
Femtoseconds |
Dense & Sparse |
DataType.DateTimeAttosecond |
Attoseconds |
Dense & Sparse |
"ascii" |
Variable length string |
Sparse |
np.int8 |
8-bit integer |
Dense & Sparse |
np.uint8 |
8-bit unsigned integer |
Dense & Sparse |
np.int16 |
16-bit integer |
Dense & Sparse |
np.uint16 |
16-bit unsigned integer |
Dense & Sparse |
np.int32 |
32-bit integer |
Dense & Sparse |
np.uint32 |
32-bit unsigned integer |
Dense & Sparse |
np.int64 |
64-bit integer |
Dense & Sparse |
np.uint64 |
64-bit unsigned integer |
Dense & Sparse |
np.float32 |
32-bit floating point |
Sparse |
np.float64 |
64-bit floating point |
Sparse |
"datetime64[Y]" |
Years |
Dense & Sparse |
"datetime64[M]" |
Months |
Dense & Sparse |
"datetime64[W]" |
Weeks |
Dense & Sparse |
"datetime64[D]" |
Days |
Dense & Sparse |
"datetime64[h]" |
Hours |
Dense & Sparse |
"datetime64[m]" |
Minutes |
Dense & Sparse |
"datetime64[s]" |
Seconds |
Dense & Sparse |
"datetime64[ms]" |
Milliseconds |
Dense & Sparse |
"datetime64[us]" |
Microseconds |
Dense & Sparse |
"datetime64[ns]" |
Nanoseconds |
Dense & Sparse |
"datetime64[ps]" |
Picoseconds |
Dense & Sparse |
"datetime64[fs]" |
Femtoseconds |
Dense & Sparse |
"datetime64[as]" |
Attoseconds |
Dense & Sparse |
"ASCII" |
Variable length string |
Sparse |
"INT8" |
8-bit integer |
Dense & Sparse |
"UINT8" |
8-bit unsigned integer |
Dense & Sparse |
"INT16" |
16-bit integer |
Dense & Sparse |
"UINT16" |
16-bit unsigned integer |
Dense & Sparse |
"INT32" |
32-bit integer |
Dense & Sparse |
"UINT32" |
32-bit unsigned integer |
Dense & Sparse |
"INT64" |
64-bit integer |
Dense & Sparse |
"UINT64" |
64-bit unsigned integer |
Dense & Sparse |
"FLOAT32" |
32-bit floating point |
Sparse |
"FLOAT64" |
64-bit floating point |
Sparse |
"DATETIME_YEAR" |
Years |
Dense & Sparse |
"DATETIME_MONTH" |
Months |
Dense & Sparse |
"DATETIME_WEEK" |
Weeks |
Dense & Sparse |
"DATETIME_DAY" |
Days |
Dense & Sparse |
"DATETIME_HR" |
Hours |
Dense & Sparse |
"DATETIME_MIN" |
Minutes |
Dense & Sparse |
"DATETIME_SEC" |
Seconds |
Dense & Sparse |
"DATETIME_MS" |
Milliseconds |
Dense & Sparse |
"DATETIME_US" |
Microseconds |
Dense & Sparse |
"DATETIME_NS" |
Nanoseconds |
Dense & Sparse |
"DATETIME_PS" |
Picoseconds |
Dense & Sparse |
"DATETIME_FS" |
Femtoseconds |
Dense & Sparse |
"DATETIME_AS" |
Attoseconds |
Dense & Sparse |