Annotation Type NosqlKey
Identifies the annotated field as a component of the composite
primary key.
Order of the fields affects index selection on queries, and data distribution. Query performance is improved when field 1 through field N appears as query predicates where N is less than or equal to the total fields in the composite key.
It is recommended to provide both shardKey
and order
options
with this annotation.
Example creating the composite key (country, city, street): class CompositeKey { @NosqlKey(shardKey = true, order = 1) private String country; @NosqlKey(shardKey = false, order = 2) private String city; @NosqlKey(shardKey = false, order = 3) private String street; }Queries using country, or country and city, or country and city and street as filtering predicates are faster than queries specifying only street.
- Since:
- 1.6.0
-
Optional Element Summary
Optional Elements
-
Element Details
-
shardKey
boolean shardKeySpecifies whether the field is part of the shard key or not. Default value isConstants.NOTSET_SHARD_KEY
. Shard keys affect distribution of rows across shards and atomicity of operations on a single shard.- Since:
- 1.6.0
- Default:
- true
-
order
int orderSpecifies the order of the field related to other fields listed in the composite key class.This ordering is used in table creation DDL to specify PRIMARY KEY and SHARD KEY ordering.
Ordering is done based on below rules:
- Shard keys are placed at the beginning.
-
When using the
order
option:- It must be specified on all the fields otherwise it is an error.
- It must be unique otherwise it is an error.
- Order of the shard keys must be less than the order of non shard keys otherwise it is an error.
-
If
order
is not specified then fields are sorted alphabetically using lower case field names for fields grouped by the same shardKey value.
Default value is
Constants.NOTSET_PRIMARY_KEY_ORDER
- Since:
- 1.6.0
- Default:
- -1
-