Distributing and accessing data in a data processing system
DC CAFCFirst Claim
Patent Images
1. A computer-implemented method of distributing a data item in a network of computers, the method comprising the steps of:
- (A) dividing the data item into a plurality of segments;
(B) hardware in combination with software determining a plurality of segment identifiers, said plurality of segment identifiers comprising a segment identifier for each particular segment of said plurality of segments, the segment identifier for each particular segment being based, at least in part, on a first given function of the data comprising said particular segment and only the data in said particular segment, where any two identical segments will have identical segment identifiers as determined by said first given function;
(C) hardware in combination with software determining a data item identifier for said data item, said data item identifier being based, at least in part, on a second given function of a second data item comprising said plurality of segment identifiers, the second given function comprising a message digest function or a hash function;
(D) maintaining an association between said data item identifier and said second data item; and
(E) causing each segment of said plurality of segments to be stored on at least some computers in said network;
(F) maintaining information about the locations in said network at which said segments have been stored; and
(G) making the information available to other locations in said network.
3 Assignments
Litigations
1 Petition
Accused Products
Abstract
A method of distributing a data item to a plurality of computers in a network of computers. A data item is divided into a plurality of segments. Each segment is stored on at least one computer in said network. A list of computers onto which each of said segments has been stored is maintained. When a data item is requested, its component segments are obtained from at least two computers in the network. Some of the computers may form a peer-to-peer network.
-
Citations
34 Claims
-
1. A computer-implemented method of distributing a data item in a network of computers, the method comprising the steps of:
-
(A) dividing the data item into a plurality of segments; (B) hardware in combination with software determining a plurality of segment identifiers, said plurality of segment identifiers comprising a segment identifier for each particular segment of said plurality of segments, the segment identifier for each particular segment being based, at least in part, on a first given function of the data comprising said particular segment and only the data in said particular segment, where any two identical segments will have identical segment identifiers as determined by said first given function; (C) hardware in combination with software determining a data item identifier for said data item, said data item identifier being based, at least in part, on a second given function of a second data item comprising said plurality of segment identifiers, the second given function comprising a message digest function or a hash function; (D) maintaining an association between said data item identifier and said second data item; and (E) causing each segment of said plurality of segments to be stored on at least some computers in said network; (F) maintaining information about the locations in said network at which said segments have been stored; and (G) making the information available to other locations in said network. - View Dependent Claims (2, 3, 4, 5, 6, 7, 16, 17, 18, 19, 27)
-
-
8. A computer-implemented method operable in a network of computers comprising the steps of:
-
(A) hardware in combination with software dividing a particular sequence of bits into multiple distinct parts, each part of said multiple parts comprising a plurality of bits; (B) hardware in combination with software determining multiple content-based part identifiers, one content-based part identifier for each of said multiple parts, each said content-based part identifier being based at least in part on a first function of at least some of the bits in the corresponding part; (C) hardware in combination with software determining a data identifier for said particular sequence of bits, said data identifier being based at least in part on a second function of said multiple content-based part identifiers; (D) maintaining an association between said data identifier for said particular sequence of bits and said multiple content-based segment identifiers; and (E) maintaining information about locations in said network at which said parts have been stored; and (F) making available to other locations in said network the information about the locations at which said parts have been stored. - View Dependent Claims (9)
-
-
10. A computer-implemented method of obtaining access to a data item at a first computer in a network of computers, said data item comprising a plurality of segments, the method comprising the steps of:
-
(A) in response to a request, said request comprising a first identifier, obtaining a plurality of segment identifiers, each of said segment identifiers corresponding to one of said plurality of segments, the segment identifier for each particular segment being based, at least in part, on a first given function of the data comprising said particular segment and only the data in said particular segment, where any two identical segments will have identical segment identifiers as determined using said first given function, wherein said first identifier is based, at least in part, on a second given function of the plurality of segment identifiers; (B) by hardware in combination with software, using at least one of said segment identifiers obtained in step (A), requesting at least one particular segment of said plurality of segments that comprise said data item from at least one of said computers in said network; and (C) obtaining said particular segment from said at least one of a plurality of computers in said network of computers. - View Dependent Claims (11, 12, 13, 14, 15, 20)
-
-
21. A computer-implemented method of obtaining access to a data item at a first computer in a network of computers, said data item comprising a plurality of segments, each of said plurality of segments being stored on at least one of a plurality of computers in said network, said plurality of computers being distinct from said first computer, the method comprising the steps of:
-
(A) by hardware in combination with software, using a first data identifier to obtain a plurality of segment identifiers, each of said segment identifiers corresponding to one of said plurality of segments, the segment identifier for each particular segment being based at least in part on a first given function of the data comprising said particular segment and only the data in said particular segment, where any two identical segments will have identical segment identifier as determined using said first given function, and wherein said first data identifier is based, at least in part, on a second given function of data comprising the plurality of segment identifiers; (B) using the plurality of segment identifiers obtained in step (A) to obtain at least one of said plurality of segments by, for at least one particular segment identifier of said plurality of segment identifiers; (b0) using said particular segment identifier to ascertain one or more locations in said network of computers that should have the corresponding particular segment; (b1) using said particular segment identifier to request said corresponding particular segment from at least one of said one or more locations ascertained in step (b0); and (b2) obtaining said corresponding particular segment from at least one location in said network. - View Dependent Claims (22, 23)
-
-
24. A computer-implemented method of storing a data item in a network of computers, the method comprising:
-
(A) dividing the data item into a plurality of distinct parts; and (B) determining a plurality of part identifiers by, (b1) for each particular part of said plurality of parts, by hardware in combination with software, determining a corresponding substantially unique part identifier, said part identifier for each said particular part being based, at least in part, on the data comprising each said particular part, wherein two identical parts will have the same part identifier; (C) hardware in combination with software, determining a substantially unique data identifier, said data identifier being based, at least in part, on the data comprising said plurality of part identifiers of said plurality of parts; (D) maintaining an association between said substantially unique data identifier and said plurality of part identifiers of said plurality of parts; and (E) in response to a request, said request including said substantially unique data identifier, providing at least the plurality of part identifiers.
-
-
25. A computer-implemented method of obtaining access to a particular data item at a first computer in a network of computers, said particular data item comprising a plurality of segments, each of said plurality of segments having been stored on one or more computers in said network, the method comprising the steps of:
-
(A) using a first identifier to obtain a first data item, said first data item comprising a plurality of segment identifiers, said first identifier being based, at least in part, on a first given function of said plurality of segment identifiers, said plurality of segment identifiers comprising a segment identifier for each of said plurality of segments comprising said particular data item, each segment identifier having been determined as a second given function of the data comprising a corresponding segment, where any two identical segments will have identical segment identifiers as determined using said second given function; (B) for a particular segment identifier of said plurality of segment identifiers; (b1) using said particular segment identifier to ascertain information about one or more locations in said network that may have a copy of the particular segment corresponding to said particular segment identifier; (b2) based at least in part on said information, ascertained in step (b1), using said particular segment identifier to request access to said particular segment from one or more locations in said network; and (b3) in response to said request, obtaining access to said particular segment from at least one of said locations in said network. - View Dependent Claims (26, 28, 29)
-
-
30. A computer-implemented method comprising the steps of:
-
(A) using a first identifier to obtain a first data item, said first data item comprising a sequence of part identifiers, said first identifier being based, at least in part, on a first given function of said part identifiers, wherein two identical sequences of part identifiers will have the same identifier as determined by said first given function, and wherein said sequence of part identifiers comprises a part identifier for each part of a plurality of parts comprising said particular data item, each part identifier in said sequence of part identifiers being based, at least in part, on the data comprising a corresponding part, where any two identical parts will have identical identifiers; (B) using at least one particular part identifier of said sequence of part identifiers obtained in step (A) to attempt to access a corresponding particular part of said particular data item; (C) in response to said attempt in step (B), accessing said particular part of said particular data item. - View Dependent Claims (31, 32, 33)
-
-
34. A method comprising the steps of:
-
(A) dividing a particular data item into a plurality of segments; (B) determining a plurality of segment identifiers by; (b1) determining a corresponding segment identifier for each particular segment of said plurality of segments, the segment identifier for each particular segment being a True Name of the data comprising said particular segment; (C) forming a second data item comprising said plurality of segment identifiers; (D) determining a data item identifier for said data item, said data item identifier for said data item being a True Name of said second data item; and (E) maintaining an association between said data item identifier and said second data item; (F) in response to a request to access said data item, said request comprising said data item identifier, providing at least said second data item.
-
Specification