Patent ID: 8005982

Claim:
A method of storing a data file from a user computer system in a peer-to-peer network of computer systems, each computer system offering storage services at a respective offered service level of a set of service levels, the method comprising: assigning to each of the computer systems respective peer identifiers from a metric space in such a way that the distance between peer identifiers of computer systems offering storage at the same service level is smaller than between peer identifiers of computer systems offering storage at different service levels, selecting a desired service level of the set of service levels for storing the data file, producing one or more data objects from the data file, assigning to one of the data objects a data identifier from the metric space in such a way that the distance between the data identifier of the one of the data objects and any peer identifier of a computer system offering storage at the desired service level is smaller than the distance between the data identifier of the one of the data objects and any peer identifier of a computer system offering storage at a service level different from the desired service level, routing the one of the data objects through the peer-to-peer network to a replication computer system having a peer identifier that is closer to the data identifier of the one of the data objects than any peer identifier of another computer system connected to the replication computer system through peer-to-peer interactions, and storing the one of the data objects on the replication computer system.