The present disclosure relates to methods and systems for synchronization of data from a device to multiple locations in a distributed data network environment such as, for example, a cloud computing environment.
In a distributed computing environment such as, for example, a cloud computing environment, data is stored at distributed, multiple locations. Presently, there is no easy way to synchronize data from a local device to multiple locations in the “cloud” or to other devices globally.
The present disclosure includes an exemplary method for data synchronization across multiple target destinations in a computer network. Embodiments of the method include acquiring information about the target destinations, wherein: the target destinations comprises at least one of a network account in the computer network, or a target device coupled to the computer network or associated with the network account; and the acquired information includes identification information associated with the target destinations. Embodiments of the method may also include receiving, at a user device, data from a data source; filtering the received data based on information included in the received data and in the identification information; identifying, based on the filtering, a selected target destination for receiving the filtered data; and transmitting the filtered data to the identified selected target destination.
An exemplary system in accordance with the present disclosure comprises a user device to receive data and an auto-synchronization engine coupled to the user device. The auto-synchronization engine acquires information about target destinations, wherein: the target destinations comprises at least one of: a network account in the computer network, or a target device coupled to the computer network or associated with the network account; and the acquired information includes identification information associated with the target destinations. In some embodiments, the auto-synchronization engine also filters the received data based on information included in the received data and the identification information; identifies, based on the filtering, a selected target destination for receiving the filtered data; and transmits the filtered data to the identified selected target destination.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
Reference will now be made in detail to the exemplary embodiments illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
Methods and systems disclosed herein address the above described needs. For example, exemplary embodiments may be used to automatically identify destinations and synchronize data from a local device to the multiple, identified destinations in one or more computer networks.
Data source 102 can be any type of storage medium capable of storing data such as, e.g., media data including audio and/or visual content, text content, combinations thereof, or any other types of data. For example, data source 102 can be provided as a video CD, DVD, Blu-ray disc, hard disk, magnetic tape, flash memory card/drive, volatile or non-volatile memory, holographic data storage, and any other type of storage medium. Data source 102 can also be a data capturing device or computer capable of providing data to user device 104. For example, data source 102 can be a camera capturing imaging data and providing the captured imaging data to user device 104.
As another example, data source 102 can be a web server, an enterprise server, or any other type of computer server. Data source 102 can be a computer programmed to accept requests (e.g., HTTP, or other protocols that can initiate data transmission) from user device 104 and to serve user device 104 with requested data. In addition, data source 102 can be a broadcasting facility, such as free-to-air, cable, satellite, and other broadcasting facility, for distributing data.
User device 104 can be, for example, a computer, a personal digital assistant (PDA), a cell phone or smartphone, a laptop, a desktop, a media content player, a set-top box, a television set including a broadcast tuner, a video game controller, or any electronic device capable of accessing a data network and/or providing data. User device 104 may include software applications that allow user device 104 to communicate with and receive data from a network or local storage medium. As mentioned above, user device 104 can receive data from data source 102, examples of which are provided above.
Auto-sync engine 106 can be implemented as a software program executing in a processor and/or as hardware that performs data synchronization. Auto-sync engine 106 can synchronize data from user device 104 to one or more destinations. The destinations can include, for example, one or more network accounts (e.g., network accounts 110, 112) in one or more computer networks, one or more target devices (e.g., target devices 114, 116), or other locations or devices accessible to the user device. The data synchronization will be further described below.
Network 108 may be one or more computer networks, and can include or connect to one or more network accounts 110, 112 and/or one or more target devices 114, 116. While
Target devices 114, 116 can be, for example, computers, personal digital assistants (PDAs), cell phones or smartphones, laptops, desktops, media content players, set-top boxes, television sets including a broadcast tuner, video game controllers, or any electronic device capable of accessing a data network and/or receiving data. In some embodiments, target devices 114, 116 can be display devices such as, for example, televisions, monitors, projectors, digital photo frames, display panels, and any other display devices. In some embodiments, some of network accounts 110, 112 may be associated with or attached to some of target devices 114, 116. For example, target devices 114 is associated with or attached to network account 112. In some embodiments, network accounts 110, 112 and target devices 114, 116 can request synchronization of data and/or receive the data from user device 104 and/or auto-sync engine 106.
In some embodiments, network 108 may include one or more Internet social networks such as, for example, FLICKR®, FACEBOOK, MYSPACE, TWITTER, LINKEDIN®, etc., and network accounts 110, 112 may be accounts in the one or more Internet social networks. A user of user device 104 may be associated with network accounts 110, 112 through the one or more Internet social networks. For example, one or more of network accounts 110, 112 may be contacts of the user in the one or more Internet social networks.
While shown in
Based on the aggregated information, a distribution list can be created (step 308). The distribution list may include, for example, network accounts (e.g., Internet social network contacts), target devices, or other locations accessible to the user device. In some embodiments, the distribution list may include one or more sub-lists such as, e.g., a friend list consisting of contacts and/or target devices marked as friends, or a family list consisting of contacts and/or target devices marked as family. In some embodiments, the downloaded synchronization destination information may be used to update an existing distribution list.
In some embodiments, destinations on the distribution list may have identification information associated with, referring to, or identifying the destinations. The identification information may include one or more of the following such as, for example, a name (e.g., Bob, Bob's cell phone, etc.), classification information (e.g., a friend, a classmate, or a family member), geographical information, an image of a person's face, a voice of a person, or other information identifying the destination. In some embodiments, the auto-sync engine can configure the identification information using data controlled by the user or by members of the distribution list. For example, the auto-sync engine can download and analyze content items posted to the user or his/her contacts' Internet social network locations, and extract information that may be used to associate the content items with any of the destinations. Based on the extracted information, the identification information of the associated destinations can be updated, thereby improving the chance or probability that data from the user device will be synchronized with the right destinations.
Referring back to
If matching information is found, the auto-sync engine filters the received data based on the matching information and/or the identification information (step 208). In some embodiments, step 206 may be part of the filtering process or an additional step may be included to identify one or more destinations. In some embodiments, the filtering process may also include, for example, associating the received data with one or more destinations in the distribution list, and/or classify the received data as one to be sent to one or more destinations in the distribution list.
In some embodiments, based on the association or classification, the filtered data may be configured to include access permission metadata granting certain permissions to certain people or a group of people. For example, if the data to be synchronized is associated with family contacts of Internet social networks, the filtered data can be configured to include permission metadata consistent with conventions of the destination network. The filtered data can then be posted to a public network location but can only be assessed in accordance with the permissions.
In some embodiments, during the filtering process the information included in the received data may be updated, and the filtering process can be performed on the received data based on the updated information. For example, additional metadata or tagging information may be added to the received data if the received data contains information linked to a particular destination, e.g., a data tag “for Bob Smith” may be added if a face image linked to an Internet social network contact “Bob Smith.”
Also, geographical metadata or tagging information may be added to the received data or may be updated when synchronizing from a user device that has Global Positioning System (“GPS”) capability. For example, when receiving a media content (e.g., images or videos) from an image capturing device having the GPS capability, if the image capturing device had captured information of a place where the media content was captured, a GPS or geographical data tag, e.g., a data tag with the string of “San Diego Zoo, San Diego, Calif.,” may be attached to or included in the received media content.
Further, the auto-sync engine may provide a user interface that allows a user to update data-tagging, change content item names, or include additional information in the received data's metadata or tags. For example, a graphical user interface may be provided for a user to update the data tag of the above example to include additional information, e.g., “Zebra, San Diego Zoo, San Diego, Calif., Sep. 15-2010, by Bob Smith.” Accordingly, based on the updated information included in the received data, the auto-sync engine may automatically filter the received data by associating the received data with an Internet social network contact who is called “Bob Smith,” who is located in San Diego, Calif., who visited the San Diego Zoo with the user, who likes zebra or other similar animals, or etc. The auto-sync engine may also associate the received data with the contact's one or more associated target devices.
In some embodiments, during the filtering process the received data may be converted into a new content item or merged with other content items before being transmitted to a target destination. For example, the auto-sync engine may provide an interface prompting the user to choose or decide whether to merge the data or content items into a movie or a photo collage. Depending on the user's selection, a movie or a photo collage can be automatically created. The auto-sync engine can then prepare for transmitting the merged content items to the target destination.
Referring back to
In some embodiments, the data synchronization process can cause the transmitted data to be populated and displayed on a target device automatically. For example, the user does not need to upload media content (e.g., photos or videos) to a storage site and then have friends or family members download it manually. Instead, the media content can be sent directly from device to device, for example, sending a photo from a user device directly to a target device (e.g., a digital photo frame) on the other side of the country, so the media content can be automatically populated and shown on the target device. This can be done, for example, by enabling an auto-start live sync function which can download data from a data source, automatically filter the data, and upload the filtered data to the cloud or to the target device across country.
The user can use the GUI to manage and share the data. For example, the user can use a pane-style viewer, e.g., GUI 500 shown in
In some embodiments, the auto-sync engine can download content posted to or stored at the user and/or his/her contacts' Internet social networks, attached devices, or any network locations. The downloaded content can be aggregated, classified, and listed, as shown on GUI 500. In some embodiments, the auto-sync engine may manage and share the content by providing links to the content items but without downloading them. The user can edit the content. For example, the user can copy or move a content item from one location/device to another location/device, delete a content item, rename a content item, edit metadata or tags of a content item, etc. In some embodiments, for example, the user can click an action button 514 as shown in
Referring back to
In some embodiments, a user can select one or more listed content items by, for example, using an GUI, such as GUI 500 shown in
In some embodiments, for example, a user may chat with one of his/her contacts using an instant message interface. The instant message interface (not shown in
In some embodiments, for example, by using an GUI, such as GUI 500 shown in
After detecting the user's drag-and-drop action or click-send-button action, the auto-sync engine can perform the above-described data filtering process, and transmit the filtered data to the intended destination(s) such as, e.g., intended social network contact(s) and/or target device(s).
In some embodiments, the auto-sync engine can manage a storage space of a destination, provide a notification or an alert to a user, and prompt the user to choose or confirm an action. For example, using an GUI, such as GUI 500 shown in
In addition, in some embodiments, if detecting that the available storage space of a target destination is below a threshold (e.g., 15% space remaining), the auto-sync engine can alert the user (or a contact who manages the destination) to free some storage space. Further, in some embodiments, when transmitting the content, the auto-sync engine can prompt the user to choose to store the content in a particular location (e.g., a particular folder or a particular category such as, e.g., favorite TV shows or upcoming movies) on the target destination.
It is understood that functions and graphical components shown in
As illustrated in
If a fast connection (e.g., a wired connection) or a connection without a bandwidth usage or cost limit is established, the auto-sync engine can determine whether the user device has enough resources available (e.g., battery life) to complete the data synchronization (step 614). If not, the auto-sync engine can pause or stop the data synchronization process until enough resources (e.g., power supply becoming plugged-in) are available (step 616). If there are enough resources available, the auto-sync engine can complete the above-described data synchronization (step 618). Of course other types of resources, in addition to battery life, may be analyzed in this manner.
In some embodiments, the auto-sync engine may be able to acquire the pipe status of the destination side. Based on the pipe status on the destination side, the auto-sync engine can perform the above-described pipe-aware data synchronization.
For example, as shown in
After obtaining the characteristic information, the auto-sync engine can compare the characteristic information with information about the filter data. Based on the comparison, the auto-sync engine can determine whether to modify the filtered data. For example, the auto-sync engine can check whether the target device's resolution is lower than the resolution of the filtered data (step 706). If so, the auto-sync engine can update modification configuration that downscaling of the filtered data is needed (step 708). If the target device's resolution is not lower than the filtered data, the auto-sync engine can check whether the target device has a bandwidth or data streaming limit (step 710). If so, the auto-sync engine can update the modification configuration that bitrate adjustment is needed (step 712).
If the target device does not have a bandwidth or data streaming limit, the auto-sync engine can check whether the target device has a file size limit and a size of the filtered data reaches that limit (step 714). If either of the checks is positive, the auto-sync engine can update the modification configuration that compression of the filtered data is needed (step 716). In some embodiments, a target device may have a file type limitation. For example, the target device may not accept streaming data due to its big file size.
If the target device does not have a file size limit or the size of the filtered data does not reach that limit, the process can proceed to step 718 for data modification. Based on the updated modification configuration, the auto-sync engine can perform the above-described data modification on the filtered data (step 718), and transmit the modified data to the target device (step 720). The method then ends.
In some embodiments, if the data modification cannot resolve any of the above-described limitations imposed by the characteristics of the target device, the auto-sync engine may alert the user. The auto-sync engine may also prompt the user to confirm data transmission or to choose an alternative action.
It is understood that the above-described exemplary process flows in
It is understood that components of auto-sync engine 106 shown in
With reference to
Synchronization manager 802 can manage data to be synchronized, configure and provide information facilitating data modification, and coordinate the data modification. For example, synchronization manager 802 can create and configure a distribution list containing target destinations for receiving synchronization data, acquire and configure status information of a user device and/or target destinations, and acquire and configure characteristic information, data modification configuration, and identification information for target destinations, as described above. Also, in some embodiments, synchronization manager 802 can manage data to be synchronized by, for example, gathering and aggregating the data from various locations or devices, updating metadata/tagging information of the data, editing the data, configuring access permission information, and etc., as described above. In some embodiments, synchronization manager 802 can provide a GUI to perform one or more of the above-described functions. In some embodiments, synchronization manager 802 may utilize synchronization database 804 for storing the above-described data and information.
In some embodiments, synchronization manager 802 can be employed to acquire status information of a user device used for sending the filtered data to the target destination. The status information can be acquired from the user device or from synchronization database 804 (816). Based on the acquired status information, synchronization manager 802 can coordinate performing the above-described pipe-aware data synchronization. In some embodiments, synchronization manager 802 can coordinate performing the above-described pipe-aware data synchronization based on status information of the target destination.
Synchronization database 804 can be used for storing a collection of information related to data synchronization. The storage can be organized as a set of queues, a structured file, a relational database, an object-oriented database, or any other appropriate database. Computer software, such as a database management system, may be utilized to manage and provide access to the data stored in synchronization database 804. Synchronization database 804 may store data to be synchronized and any information that can facilitate data modification, as described above.
In some embodiments, data analyzer 806 can be employed to analyze the received data, and determine whether the received data contains any information matching identification information associated with a target destination, as described above. In some embodiments, data analyzer 806 can identify the target destination based on the determination. The identification information can be acquired from, e.g., synchronization database 804 directly or through synchronization manager 802 (816 and 818). In some embodiments, data analyzer 806 may extract the matching information, and pass it along with the analyzed data to data filter 808 for further processing (828).
Based on the matching information and the identification information received from data analyzer 806 or synchronization database 804 (816 and 822), data filter 808 can perform the above-described data filtering process to the analyzed data. The filtered data is passed to data transmitter 810 for transmission (824 and 826).
In some embodiments, data optimizer 812 can also be employed to acquire characteristic information of the target destination. The characteristic information can be acquired from the target destination or from synchronization database 804 directly or through synchronization manager 802 (816 and 830). Based on the acquired characteristic information, data optimizer 812 can perform the above-described device-aware data modification to the filtered data. Data optimizer 812 can then pass the modified data to data transmitter 810 for transmission (832 and 826).
During the above-described data synchronization process, each component of auto-sync engine 106 may store its computation/determination results in synchronization database 804 for later retrieval or training purpose. Based on the historic data, auto-sync engine 106 may train itself for improved performance on filtering the data and sending the data to right destinations.
The methods disclosed herein may be implemented as a computer program product, i.e., a computer program tangibly embodied in a non-transitory information carrier, e.g., in a machine-readable storage device, or a tangible non-transitory computer-readable medium, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
A portion or all of the methods disclosed herein may also be implemented by an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), a printed circuit board (PCB), a digital signal processor (DSP), a combination of programmable logic components and programmable interconnects, a single central processing unit (CPU) chip, a CPU chip combined on a motherboard, a general purpose computer, or any other combination of devices or modules capable of performing data synchronization disclosed herein.
In the preceding specification, the invention has been described with reference to specific exemplary embodiments. It will, however, be evident that various modifications and changes may be made without departing from the broader spirit and scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded as illustrative rather than restrictive. Other embodiments of the invention may be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein.