Data Placement in Distributed Systems