Fault-Tolerant Data Sharing for High-level Grid Programming: A Hierarchical Storage Architecture