A fictitious example which is close to reality:
In parallel, you write a million objects each to:
tomato/red/...
tomato/green/...
tomatoes/colors/...
The shortest prefixes that evenly divides writes are thus tomato/r
tomato/g
tomatoes
If you had an existing access pattern of evenly writing to tomatoes/colors/...
bananas/...
The shortest prefixes would be t
b
So suddenly writing 3 million objects that begin with a t would cause an uneven load or hotspot on the backing shards. The system realizes your new access pattern and determines new prefixes and moves data around to accommodate what it thinks your needs are.--
The delimiter is just a wildcard option. The system is just a key value store, essentially. Specifying a delimiter tells the system to transform delimiters at the end of a list query like
my/path/
into a pattern match like my/path/[^/]+/?