I'm sure there was a hackernews discussion on that
let's use an example everyone here is familiar with
A traditional dictionary has tabs on it, A, B, C, and so on
sometimes you have like for instance C-Ch, Ch-Cl, etc
however, in all cases, there's an initial "bucket" to start looking in, that you can derive from the key (the word being looked up)
So if my word were "geranium" the initial shard would be "all words beginning with the letter G"
If we were talking in terms of social security numbers, the first shard would probably be (altho it's not a large enough dataset to require sharding) the first three numbers.
So if your account on dropbox and my account on dropbox were numbers 123456 and 123457, they might shard based on all "12" accounts, so we would be in the same "base shard" or something
it gets incredibly complex depending on the requirements
So let's flip back and look at files
Maybe instead of uploading everything on the target computer, you want to upload what is new?
So before you upload anything, you first take a fingerprint of the file, then ask the server if it already has that fingerprint.
So now you need to look up millions of fingerprints at a time, so why not shard the fingerprint tables, so you can do lots of fast lookups on them
So if the fingerprint already exists, then the file already exists, so associate the file with the user
Do you see the security flaw yet?