If at the time of creation of a Kinesis data stream I specify the number of shards to be let's say 10, and every time I put record I assign it a random Partition key like this:
var putRecord = new PutRecord
{
Data = data ?? new byte[0],
StreamName = stream,
PartitionKey = GetRandomPartitionKey()
};
How will kinesis decide to put a record in a certain shard, and what happens if the number of unique Partition keys is more than the number of shards?