> You want to distribute load across the keyspace so you avoid hot shards.
This is just another case of keys containing information and is not smart.
The obvious solution is to have a field that drives distribution, allowing rebalancing or whatever.
100%. You can use rendezvous hashing to determine the shard(s). The hash of a sequence should be randomly distributed as changing the LSB should propagate to 50% change in the output bits.
This is something you should discuss with the developers at Cockroach Labs, Google Cloud, et al.
As a consumer of these databases we're stuck with them as designed, which means we have to worry about key distribution.