DATABASE REPLICATION USING COLLABORATIVE DATA TRANSFERS
First Claim
1. A method comprising:
- causing a seed that continuously generates data to send the data to a plurality of peers;
wherein the data is divided into windows, and each window is divided into pieces;
wherein the seed sends the data on a piece-by-piece basis;
wherein the seed sends each piece to fewer than all of the plurality of peers;
a) causing each peer of the plurality of peers to maintain metadata that indicates;
pieces, belonging to an active window, that have been received by the peer from the seed;
pieces, belonging to the active window, that are available from each other peer;
b) based on the metadata, each peer requesting pieces that the peer does not yet have, belonging to the active window, from other peers until each peer has all pieces that belong to the active window;
c) each peer informing the other peers about which pieces, belonging to the active window, the peer receives from other peers; and
d) after a peer has received all pieces of the active window, the peer establishing a next window as a new active window, informing other peers of the pieces of the new active window the peer has received from the seed, and repeating steps (a) to (c) for the new active window;
wherein the method is performed by one or more computing devices.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are described herein for propagating continuously generated data from a seed to a plurality of peers without requiring the seed to send the new data to all peers, and without establishing static sender/receiver relationships between the peers. The data generated by the seed is divided into a number of “windows”, where each window is divided into a number of “pieces”. The seed sends the data piece-by-piece to different peers. The peer to which the seed sends any given piece may be selected at random. The peers exchange pieces until all pieces of a window are obtained by each peer. When a peer receives all pieces of a window, the pieces are applied at the peer, and the process repeats for the next window.
-
Citations
20 Claims
-
1. A method comprising:
-
causing a seed that continuously generates data to send the data to a plurality of peers; wherein the data is divided into windows, and each window is divided into pieces; wherein the seed sends the data on a piece-by-piece basis; wherein the seed sends each piece to fewer than all of the plurality of peers; a) causing each peer of the plurality of peers to maintain metadata that indicates; pieces, belonging to an active window, that have been received by the peer from the seed; pieces, belonging to the active window, that are available from each other peer; b) based on the metadata, each peer requesting pieces that the peer does not yet have, belonging to the active window, from other peers until each peer has all pieces that belong to the active window; c) each peer informing the other peers about which pieces, belonging to the active window, the peer receives from other peers; and d) after a peer has received all pieces of the active window, the peer establishing a next window as a new active window, informing other peers of the pieces of the new active window the peer has received from the seed, and repeating steps (a) to (c) for the new active window; wherein the method is performed by one or more computing devices. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. One or more non-transitory storage media storing instructions which, when executed by one or more computing devices, cause performance of a method comprising:
-
causing a seed that continuously generates data to send the data to a plurality of peers; wherein the data is divided into windows, and each window is divided into pieces; wherein the seed sends the data on a piece-by-piece basis; wherein the seed sends each piece to fewer than all of the plurality of peers; a) causing each peer of the plurality of peers to maintain metadata that indicates; pieces, belonging to an active window, that have been received by the peer from the seed; pieces, belonging to the active window, that are available from each other peer; b) based on the metadata, each peer requesting pieces that the peer does not yet have, belonging to the active window, from other peers until each peer has all pieces that belong to the active window; c) each peer informing the other peers about which pieces, belonging to the active window, the peer receives from other peers; and d) after a peer has received all pieces of the active window, the peer establishing a next window as a new active window, informing other peers of the pieces of the new active window the peer has received from the seed, and repeating steps (a) to (c) for the new active window. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification