A computer system, comprising: at least one processor; and memory storing instructions executable by the at least one processor, wherein the instructions, when executed, cause the computer system to: receive a string identifier, identifying an item to be assigned to one of a plurality of physical resources; obtain a numeric hash value based on applying a hashing function to the string identifier, the hashing function configured to generate numeric hash values that are distributed over a hash value space comprising a defined range of values; downscale the numeric hash value into a reduced value space of bucket identifiers to obtain a downscaled value corresponding to a selected bucket identifier, the reduced value space of bucket identifiers having fewer values than the hash value space; deterministically map the selected bucket identifier to one of the physical resources; detect a change in the plurality of physical resources from a first number of physical resources to a second number of physical resources; re-assign a bucket identifier from a physical resource in the first number of physical resources to a different physical resource in the second number of physical resources; identify a start of a range of numeric hash values corresponding to the re-assigned bucket identifier based on a group index value and a bucket size; identify an end of the range of numeric hash values based on the start of the range of numeric hash values and the bucket size; retrieve items having numeric hash values in the range of numeric hash values; and move the retrieved items to the different physical resource. at least one processor; and memory storing instructions executable by the at least one processor, wherein the instructions, when executed, cause the computer system to: receive a string identifier, identifying an item to be assigned to one of a plurality of physical resources; obtain a numeric hash value based on applying a hashing function to the string identifier, the hashing function configured to generate numeric hash values that are distributed over a hash value space comprising a defined range of values; downscale the numeric hash value into a reduced value space of bucket identifiers to obtain a downscaled value corresponding to a selected bucket identifier, the reduced value space of bucket identifiers having fewer values than the hash value space; deterministically map the selected bucket identifier to one of the physical resources; detect a change in the plurality of physical resources from a first number of physical resources to a second number of physical resources; re-assign a bucket identifier from a physical resource in the first number of physical resources to a different physical resource in the second number of physical resources; identify a start of a range of numeric hash values corresponding to the re-assigned bucket identifier based on a group index value and a bucket size; identify an end of the range of numeric hash values based on the start of the range of numeric hash values and the bucket size; retrieve items having numeric hash values in the range of numeric hash values; and move the retrieved items to the different physical resource. receive a string identifier, identifying an item to be assigned to one of a plurality of physical resources; obtain a numeric hash value based on applying a hashing function to the string identifier, the hashing function configured to generate numeric hash values that are distributed over a hash value space comprising a defined range of values; downscale the numeric hash value into a reduced value space of bucket identifiers to obtain a downscaled value corresponding to a selected bucket identifier, the reduced value space of bucket identifiers having fewer values than the hash value space; deterministically map the selected bucket identifier to one of the physical resources; detect a change in the plurality of physical resources from a first number of physical resources to a second number of physical resources; re-assign a bucket identifier from a physical resource in the first number of physical resources to a different physical resource in the second number of physical resources; identify a start of a range of numeric hash values corresponding to the re-assigned bucket identifier based on a group index value and a bucket size; identify an end of the range of numeric hash values based on the start of the range of numeric hash values and the bucket size; retrieve items having numeric hash values in the range of numeric hash values; and move the retrieved items to the different physical resource.