1. A method performed by one or more computing devices, comprising: storing one or more backend data sources in at least one persistent storage devices; providing access to the one or more backend data sources via a backend server executing at a first set of the one or more computing devices; storing a plurality of mid-tier databases at a second set of the one or more computing devices; maintaining, in the plurality of mid-tier databases, a caching grid, said caching grid comprising at least a plurality of shared cache instances of data from the one or more backend data sources, wherein the plurality of shared cache instances are stored in the plurality of mid-tier databases; ensuring that for any given data element of the one or more backend data sources for which the caching grid maintains a shared cache instance, the plurality of mid-tier databases store, at any given time, no more than one version of the shared cache instance.