20.8. Partition Schemes¶
Partition schemes define how data is stored on the filesystem. The scheme is important because it determines how the data is queried. When evaluating a query filter, the partition scheme is leveraged to prune data files that do not match the filter. There are three main types of partition schemes provided: spatial, temporal and attribute.
The partition scheme must be provided when creating a schema. The scheme is defined by a well-known name and a map of configuration options. See Configuring the Partition Scheme for details on how to specify a partition scheme.
20.8.1. Composite Schemes¶
Composite schemes are hierarchical combinations of other schemes. A composite scheme is named by concatenating
the names of the constituent schemes, separated with commas, e.g. hourly,z2-2bits
. The configuration
options for each child scheme should be merged into a single configuration for the composite scheme.
20.8.2. Temporal Schemes¶
Temporal schemes lay out data based on a Java DateTime format string, separated by forward slashes, which is used to build a directory structure. All temporal schemes support the following common configuration option:
dtg-attribute
- The name of aDate
-type attribute from the SimpleFeatureType to use for partitioning data. If not specified, the default date attribute is used.
20.8.2.1. Date-Time Scheme¶
Name: datetime
Configuration:
datetime-format
- A Java DateTime format string, separated by forward slashes, which will be used to build a directory structure. For example,yyyy/MM/dd
.step-unit
- Ajava.time.temporal.ChronoUnit
defining how to increment the leaf of the partition schemestep
- The amount to increment the leaf of the partition scheme. If not specified, defaults to1
The date-time scheme provides a fully customizable temporal scheme.
20.8.2.2. Hourly Scheme¶
Name: hourly
The hourly scheme partitions data by the hour, using the layout yyyy/MM/dd/HH
.
20.8.2.3. Minute Scheme¶
Name: minute
The minute scheme partitions data by the minute, using the layout yyyy/MM/dd/HH/mm
.
20.8.2.4. Daily Scheme¶
Name: daily
The daily scheme partitions data by the day, using the layout yyyy/MM/dd
.
20.8.2.5. Weekly Scheme¶
Name: weekly
The weekly scheme partitions data by the week, using the layout yyyy/ww
.
20.8.2.6. Monthly Scheme¶
Name: monthly
The monthly scheme partitions data by the month, using the layout yyyy/MM
.
20.8.2.7. Julian Schemes¶
Names: julian-minute
, julian-hourly
, julian-daily
Julian schemes partition data by Julian day, instead of month/day. They use the patterns yyyy/DDD/HH/mm
,
yyyy/DDD/HH
, and yyyy/DDD
respectively
20.8.3. Spatial Schemes¶
Spatial schemes lay out data based on a space-filling curve. All spatial schemes support the following common configuration option:
geom-attribute
- The name of aGeometry
-type attribute from the SimpleFeatureType to use for partitioning data. If not specified, the default geometry is used.
20.8.3.1. Z2 Scheme¶
Name: z2
Configuration:
z2-resolution
- The number of bits of precision to use for z indexing. Must be a multiple of 2.
The Z2 scheme uses a Z2 space-filling curve, and can only be used with Point-type geometries. Instead of specifying
the resolution as a configuration option, it may be specified in the name, as z2-<n>bits
, where <n>
is
replaced with the Z2 resolution, e.g. z2-2bits
.
20.8.3.2. XZ2 Scheme¶
Name: xz2
Configuration:
xz2-resolution
- The number of bits of precision to use for z indexing. Must be a multiple of 2.
The XZ2 scheme uses an XZ2 space-filling curve, and can be used with any geometry type. Instead of specifying
the resolution as a configuration option, it may be specified in the name, as xz2-<n>bits
, where <n>
is
replaced with the XZ2 resolution, e.g. xz2-2bits
.
20.8.4. Attribute Schemes¶
Attribute schemes lay out data based on a lexicoded attribute value.
Name: attribute
Configuration:
partitioned-attribute
- The name of an attribute from the SimpleFeatureType to use for partitioning data.