A computer-implemented method of determining a primary storage location for a data record in a distributed system which comprises a plurality of data stores (106, 108), wherein each data store (106a, 106b, 106c) is physically located in a corresponding geographic location (206, 208, 210), the method comprising steps of: initialising a machine learning mapping model using topology information of the distributed system, the machine learning mapping model to be used to determine a location among the plurality of data stores for reading or writing a data record;; determining a set of training feature vectors, the training feature vectors being derived from metadata values associated with a plurality of prior location requests; training the machine learning mapping model using the set of training feature vectors and a corresponding set of target primary storage locations; receiving (602, 702) a location request associated with a data record, the location request including a plurality of metadata values; processing the metadata values to determine a prediction feature vector comprising a plurality of prediction feature values; executing the machine learning mapping model using the prediction feature vector as input to identify (604, 704) one data store (106a, 106b, 106c) of the plurality of data stores (106, 108) as the primary storage location (106a, 106b, 106c) for the data record associated with the location request; characterized in that, the location request is associated with a read request, and the method further comprises attempting to read the data record from the primary storage location (106a, 106b, 106c) identified by execution of the machine learning mapping model; and wherein: the primary storage location (106a, 106b, 106c) identified by execution of the machine learning mapping model is a data store (106, 108) of the distributed system that is relatively remote from an origin of the read request; the plurality of data stores (106, 108) includes a preferred data store (106a, 106b, 106c) that is relatively local to the origin of the read request; and the method further comprises recording details of the location request along with details of the preferred data store (106a, 106b, 106c) as a target primary storage location, for use in updating the machine learning mapping model. initialising a machine learning mapping model using topology information of the distributed system, the machine learning mapping model to be used to determine a location among the plurality of data stores for reading or writing a data record;; determining a set of training feature vectors, the training feature vectors being derived from metadata values associated with a plurality of prior location requests; training the machine learning mapping model using the set of training feature vectors and a corresponding set of target primary storage locations; receiving (602, 702) a location request associated with a data record, the location request including a plurality of metadata values; processing the metadata values to determine a prediction feature vector comprising a plurality of prediction feature values; executing the machine learning mapping model using the prediction feature vector as input to identify (604, 704) one data store (106a, 106b, 106c) of the plurality of data stores (106, 108) as the primary storage location (106a, 106b, 106c) for the data record associated with the location request; characterized in that, the location request is associated with a read request, and the method further comprises attempting to read the data record from the primary storage location (106a, 106b, 106c) identified by execution of the machine learning mapping model; and wherein: the primary storage location (106a, 106b, 106c) identified by execution of the machine learning mapping model is a data store (106, 108) of the distributed system that is relatively remote from an origin of the read request; the plurality of data stores (106, 108) includes a preferred data store (106a, 106b, 106c) that is relatively local to the origin of the read request; and the method further comprises recording details of the location request along with details of the preferred data store (106a, 106b, 106c) as a target primary storage location, for use in updating the machine learning mapping model. the primary storage location (106a, 106b, 106c) identified by execution of the machine learning mapping model is a data store (106, 108) of the distributed system that is relatively remote from an origin of the read request; the plurality of data stores (106, 108) includes a preferred data store (106a, 106b, 106c) that is relatively local to the origin of the read request; and the method further comprises recording details of the location request along with details of the preferred data store (106a, 106b, 106c) as a target primary storage location, for use in updating the machine learning mapping model.