Towards the design of optimal data redundancy schemes for heterogeneous cloud storage infrastructures