Partial Cloud Data Storage
Technologies are generally described for partial cloud data storage. In one example, a method includes dividing, by a system comprising a processor, a file into a set of source packets in response to an indication that the file is to be stored in a data store of a network device. The method also includes transforming the set of source packets into a set of encoded packets by encoding the set of packets into codeword symbols of an error correcting code. Further, the method includes facilitating storage of a first portion of the set of encoded packets to the data store of the network device and a second portion of the set of encoded packets to one or more user devices. A first number of packets in the first portion is more than a second number of packets in the second portion and the second portion is at least used to decode the file.
1 . A system, comprising:
a memory configured to store computer-executable components;
a processor operably coupled to the memory and configured to execute one or more of the computer-executable components, the computer-executable components comprising:
a selection manager configured to select one or more user devices from a set of user devices, wherein the set of user devices stores a first set of encoded packets;
an obtainment manager configured to obtain the first set of encoded packets from the one or more selected user devices, and a second set of encoded packets from one or more network devices;
a decoder manager configured to decode the first set of encoded packets and the second set of encoded packets to generate a set of decoded packets; and
a reconstruction manager configured to reconstruct a file based on the set of decoded packets, wherein:
a number of encoded packets in the first set of encoded packets is less than a number of encoded packets in the second set of encoded packets, and
the one or more selected user devices and the one or more network devices are communicatively coupled to the system.
2 . The system of claim 1 , wherein the selection manager is configured to select the one or more user devices based on proximity of the one or more user devices to the one or more network devices.
3 . The system of claim 1 , wherein the selection manager is configured to select the one or more user devices based on data transfer capability of the one or more user devices.
4 . The system of claim 1 , wherein the one or more network devices include at least two network devices, and wherein each network device of the at least two network devices is associated with a different network service provider.
5 . The system of claim 1 , wherein to decode the first set of encoded packets and the second set of encoded packets, the decoder manager is configured to determine an error correction code used to encode the first set of encoded packets and the second set of encoded packets.
6 . The system of claim 1 , wherein to decode the first set of encoded packets and the second set of encoded packets, the decoder manager is configured to determine an erasure code used to encode the first set of encoded packets and the second set of encoded packets.
7 . A method, comprising:
selecting, by a system comprising a processor, one or more user devices from a set of user devices, wherein the set of user devices stores a first set of encoded packets;
obtaining the first set of encoded packets from the selected one or more user devices;
obtaining a second set of encoded packets from one or more network devices;
decoding the first set of encoded packets and the second set of encoded packets to generate a set of decoded packets; and
reconstructing a file based on the generated set of decoded packets, wherein:
a number of encoded packets in the first set of encoded packets is less than a number of encoded packets in the second set of encoded packets, and
the one or more selected user devices and the one or more network devices are in communication with the system.
8 . The method of claim 7 , wherein each encoded packet of the first set of encoded packets and the second set of encoded packets is of same length, and wherein each encoded packet is appended with a sequence of symbols designated as a filler symbol.
9 . The method of claim 7 , wherein obtaining the second set of encoded packets from the one or more network devices comprises:
obtaining a first subset of the second set of encoded packets from a first network device of the one or more network devices; and
obtaining a second subset of the second set of encoded packets from a second network device of the one or more network devices,
wherein the first network device and the second network device are associated with different network service providers.
10 . The method of claim 7 , wherein obtaining the first set of encoded packets from the selected one or more user devices comprises:
obtaining a first subset of the first set of encoded packets from a first user device of the selected one or more user devices; and
obtaining a second subset of the first set of encoded packets from a second user device of the selected one or more user devices, wherein the second user device is different from the first user device,
wherein at least the first subset of the first set of encoded packets and the second subset of the first set of encoded packets are used to reconstruct the file.
11 . The method of claim 10 , wherein the first user device and the second user device are at a same geographic location.
12 . The method of claim 10 , wherein the first user device and the second user device are at different geographic locations.
13 . The method of claim 7 , wherein selecting the one or more user devices from the set of user devices comprises:
selecting the one or more user devices based on proximity of the one or more user devices to the one or more network devices; or
selecting the one or more user devices based on data transfer capability of the one or more user devices.
14 . The method of claim 7 , wherein decoding the first set of encoded packets and the second set of encoded packets to generate the set of decoded packets comprises:
determining an error correcting code of the first set of encoded packets and the second set of encoded packets, wherein input symbols of the file are absent in output symbols associated with the first set of encoded packets and the second set of encoded packets.
15 . The method of claim 7 , wherein decoding the first set of encoded packets and the second set of encoded packets to generate the set of decoded packets comprises:
determining an erasure code of the first set of encoded packets and the second set of encoded packets, wherein input symbols of the file are absent in output symbols associated with the first set of encoded packets and the second set of encoded packets.
16 . The method of claim 7 , wherein reconstructing the file comprises:
reconstructing the file based on headers of the encoded packets included in the first set of encoded packets and the second set of encoded packets, wherein the headers include information to reconstruct the file.
17 . A computer-readable storage device that comprises executable instructions which, in response to execution, cause a system, which comprises a processor, to perform or control performance of operations to:
divide a file into a set of source packets in response to an indication that the file is to be stored in a network device;
transform the set of source packets into a set of encoded packets; and
facilitate storage of a first portion of the set of encoded packets in the network device;
transmit a first subset of a second portion of the set of encoded packets to a first user device; and
transmit a second subset of the second portion of the set of encoded packets to a second user device, which is different from the first user device, wherein:
the first user device and the second user device are in communication with the system, and
the file is to be decoded with use of at least the first subset and the second subset of the second portion of the set of encoded packets stored at the first user device and the second user device respectively.
18 . The computer readable storage device of claim 17 , wherein the operation to divide the file comprises:
divide the file into source packets of a same length; and
append each source packet of the set of source packets with a sequence of symbols designated as a filler symbol.
19 . The computer readable storage device of claim 17 , wherein the first user device and the second user device are associated with a same user, and wherein the first user device and the second user device are located in a defined geographic area.
20 . The computer readable storage device of claim 17 , wherein the first user device and the second user device are associated with different users, and wherein the first user device and the second user device are located at different geographic locations.
21 . The computer readable storage device of claim 17 , wherein the network device includes a cloud storage device.
22 . The computer readable storage device of claim 17 , wherein a first number of packets included in the first portion of the set of encoded packets is more than a second number of packets included in the second portion of the set of encoded packets.
23 . A system, comprising:
a memory configured to store computer-executable components;
a processor operably coupled to the memory and configured to execute one or more of the computer-executable components to perform or control performance of operations to:
select one or more user devices from a set of user devices, wherein the set of user devices stores a first set of encoded packets;
obtain the first set of encoded packets from the one or more selected user devices and a portion of a second set of encoded packets from one or more network devices;
decode the first set of encoded packets and the portion of the second set of encoded packets to generate a set of decoded packets; and
reconstruct a file based on the set of decoded packets, wherein the file includes a first set of packets that correspond to the first set of encoded packets, and a second set of packets that correspond to the second set of encoded packets.