It is pretty straightforward to do ... the only suggestion I can offer is use a random hash instead of doing it by something silly like a key prefix. The random hash gives you better balancing between the shards. Also check out the recent issue of the communications of the acm. A dude from Joyent wrote about the issues in scaling an image transcoding system.