This disclosure relates generally to synchronization of data with external networks.
In the field of social networking a plurality of different social networks have arisen. Some of these networks are activity specific, focusing on having users provide one type of information. Other social networks attempt to be more holistic, allowing users to provide multiple information types. Because the utility of a social network platform relies upon its user base in addition to the functionality it allows, it is common for users to have accounts with a plurality of different social media platforms so that they can connect with different groups of contacts.
There has been a proliferation of social media platforms, each of which allow a user to perform similar functions. Each of these networks provide a user with access to a fragment of their overall social network. Accessing each of these networks in series is a time consuming and odious task for many users. Users accessing social media platforms through a mobile device are faced with additional problems including form-factor limited input devices and limited bandwidth. Social media platforms do not readily communicate with each other, and often artificially prevent a user from updating content from other networks.
While updating a status message on a number of different services is time consuming, even on a mobile device there is sufficient bandwidth to make this possible. However, richer content, such as photos and videos, become more problematic to update on numerous platforms from a mobile device, as the time required is increased due to the limited bandwidth available to the device and due to the costs associated with per-data-unit pricing.
Social media portals, or aggregators, seek to address these issues. A user can create a profile at the portal and provide credentials to at least one social media platform. Instead of connecting to the platform, the user can connect to the portal, provide status updates, update content such as photo and videos, and perform other social media activities. The portal then synchronizes with the social media platforms for which credentials have been provided, typically through the use of Application Program Interfaces (APIs) specific to the social media platform. The portal can upload data to each of the social media platforms, and can optionally download content from each of them to serve as a synchronization service as well.
One skilled in the art will appreciate that although this provides the user with the ability to have a single point of contact from which updates can be posted to a number of different social media platforms, there are implementation issues that arise. One of the issues that arises is that a portal typically has a limited amount of bandwidth available with which to connect to each of the social media platforms. As the number of users and supported social media platforms grows, the volume of data increases dramatically. This greatly increases the cost of providing a synchronization service. As the number of users making use of social media portals increases, and as the number of social media platforms supported by portals increases, problems of efficiently utilizing available bandwidth become more crucial to providing a usable service to the users.
Further aggravating this problem is users who do not update information frequently, still consume bandwidth, as the social media portal is required to check to see if the social media platform has been updated. Even when no data is to be synchronized, bandwidth is consumed. In many implementations determining that each of a large number of users once again has no data to synchronize for a plurality of different media types at a number of social media platforms results in a large amount of wasted bandwidth.
Therefore, it would be desirable to provide a mechanism for more efficiently utilizing the bandwidth available to a social media portal to synchronize content with social media platforms.
It is an object of the present invention to obviate or mitigate at least one disadvantage of the prior art.
In a first aspect of the present invention, there is provided a method of synchronizing content with a social media platform from a social media portal. The method comprises the steps of: selecting a synchronization activity from a ranked list; connecting to a social media platform associated with the selected activity; synchronizing data associated with the selected synchronization activity and the connected social media platform if the social media portal and social media platform have different data; and placing the synchronization activity back into the ranked list at a location determined in accordance with whether synchronization was necessary.
In an embodiment of the first aspect of the present invention, the step of selecting includes selecting a plurality of synchronization activities from the ranked list. In such an embodiment, the steps of connecting, synchronizing and placing can be performed for each for each of the plurality of activities and the number of activities in the plurality is determined by an available bandwidth value. In another embodiment of the present invention, synchronization is determined to be necessary if the social media platform and social media portal have different data. In a further embodiment of the present invention, the step of placing the synchronization activity back into the ranked list includes computing a rank associated with the user synchronization activity and placing the synchronization activity into the ranked list in accordance with the computed rank. In a further embodiment, the method includes the step of computing a next synchronization time in accordance with the rank and a weighting associated with the synchronization activity and wherein the step of placing the synchronization activity into the ranked list is done in accordance with the computed next synchronization time. In another embodiment, the step of selecting is performed at a synchronization engine in a social media portal, and the step of connecting is performed using an interface specific to the social media platform.
In some embodiments of the present invention, the step of selecting a synchronization activity is performed by a synchronization engine, the steps of connecting and synchronizing are performed by the synchronization engine in conjunction with an external update interface and the step of placing the synchronization activity back into the ranked list is performed by a ranking engine.
In a second aspect of the present invention, there is provided a social media portal for synchronizing user content with a social media platform. The portal comprises a social content database, a user database, a synchronization list, a synchronization engine and a ranking engine. The social content database stores data associated with a user. The user database stores profile information associated with the user. The synchronization list stores ranked synchronization activities. The synchronization engine synchronizes data stored in the social content database with the social media platform through a social media platform interface, in accordance with the profile information on a schedule determined in accordance with the synchronization list. The ranking engine determines determining a rank associated with synchronization activities, and orders the synchronization list in accordance with the determined rank.
In an embodiment of the second aspect of the present invention, the profile information includes identification of an account at the social media platform and credentials associated with the user and the identified account, and optionally profile information further includes an indication of types of content supported by the social media platform. In another embodiment, the value of the rank determined by the ranking engine is decremented upon the social media platform interface indicating to the ranking engine that a successful synchronization occurred. In a further embodiment, a lower value of the rank results in a more frequent synchronization. In another embodiment, the ranking engine orders the synchronization list by assigning a synchronization time to each synchronization activity, the synchronization time determined in accordance with the determined rank.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
Embodiments of the present invention will now be described, by way of example only, with reference to the attached Figures, wherein:
The present invention is directed to a system and method for effectively using bandwidth during the synchronization of data across a plurality of social media platforms with a social media portal.
Reference may be made below to specific elements, numbered in accordance with the attached figures. The discussion below should be taken to be exemplary in nature, and not as limiting of the scope of the present invention. The scope of the present invention is defined in the claims, and should not be considered as limited by the implementation details described below, which as one skilled in the art will appreciate, can be modified by replacing elements with equivalent functional elements.
In the present invention, issues related to the scalability of social media portal, or aggregator, are addressed. Whereas, in the prior art, synchronization of the user's content generates large quantities of overhead related traffic the present invention makes use of a prioritized synchronization system to reduce both overhead traffic and overall network traffic.
In understanding the motivation of the present invention, it is important to understand that as with many systems, a small percentage of the users of a social media portal or aggregator generate a disproportionately large amount of the overall traffic. These heavy users not only provide more content, they provide content more frequently and are thus more likely to notice a degradation in the service provided by the portal. A large portion of the remaining users generate very little traffic. These users are the least likely to need high levels of service, and are unlikely to be aware of slower service from the portal. The present invention seeks to maximize the effectiveness of the available bandwidth by prioritizing user synchronization activities so that user expectations are met.
Mechanisms are employed to prioritize user synchronization activities, and additionally mechanisms can be employed to determine whether or not a synchronization is required. By combining the prioritization of user synchronization activities and the ability to determine if content needs to be synchronized, bandwidth usage can be directed to users who make use of the system the most frequently. By having the prioritization mechanism make use of current usage patterns, a user who exhibits bursty activity, e.g. high levels of activity on a particular social media platform during certain hours, will be provided prioritized service as the higher activity continues, but will have prioritization levels decreased during less frequent usage times.
A system of the present invention employs a prioritized and a ranked list of user synchronization activities. Each social media platform allows the user to perform at least one type of activity that can be synchronized by the portal. A first social media platform may allow status updates, while a second permits status updates, music recommendations, and photo album creation and sharing, while a third permits the creation of both photo and video albums. In one embodiment of the present invention, each activity on a social media platform can become a separate user synchronization activity. This allows priority to be given to different types of user activities on a global basis, and furthermore allows a user that generates a large quantity of one type of content to have that type of content prioritized over content types that are not frequently generated. As infrequent users are deprioritized, the amount of traffic generated determining if synchronization is needed is reduced. This portion of the bandwidth can then be used to synchronize activity of other users. Thus, the limited bandwidth between a social media portal or aggregator and a plurality of different social media platforms can be used more efficiently, without impacting the user experience
One skilled in the art will appreciate that the above example, and those that follow, discuss a synchronization list that contains different user synchronization activities. This is intended to be exemplary in nature, and should not be considered to be restrictive. The systems and method of the present invention can be implemented using a plurality of different synchronization lists without departing from the scope of the present invention.
As noted above, the manner in which user synchronization activities are selected from the prioritized ranked list can vary. If the ranked list contains solely one type of synchronization activity, and each of the synchronization activities consumes a known amount of bandwidth the available bandwidth can be divided by that number to determine how many synchronization activities are selected. Alternatively, as illustrated in
In an alternate embodiment, the user synchronization list ranks activities on the basis of when they are to be performed. The user rank is used in accordance with other design parameters to determine when synchronization will be performed. The synchronization list is then constructed and ordered on the basis of what activity is to be performed next. This time can then either be considered an objective that can be put aside if there are too many other activities or that can be performed earlier than planned if the traffic flow is light, or it can be considered a requirement so that at the appointed time all activities are selected for synchronization. One skilled in the art will appreciate that other variations can also be implemented.
As noted above, it is often important to determine if content has been modified prior to a synchronization activity. Those skilled in the art will appreciate that this can be done by comparison of a hash of the content stored at the social media platform and portal. When the content hashes are equal, it can be decided that no synchronization is required. If no synchronization is performed, it is an indication that the user has not updated any content, and thus may be entering a period in which content updates are infrequent. Conversely, if synchronization was performed, it is likely indicative that the user will be adding more social content, and that the user rank should be increased.
One skilled in the art will appreciate that use of social media platform by a given user is typically confined to certain time windows during a day. For example, some users frequently make use of one social networking platform during business hours and very infrequently make use of that platform outside of business hours. The same users may make frequent use of a different social networking platform in the evenings but in no other points during the day. In both these cases, after a first synchronization is performed further synchronizations are preferably performed at increasingly shorter durations reflecting the fact that the user is more active. As user activity on a particular platform declines the time between synchronizations can be increased. This dynamic adjustment process, which is preferably controlled by manipulation of the user rank associated with a particular synchronization activity allows the aggregator's bandwidth to be more efficiently employed.
One skilled in the art will appreciate that a number of different mechanisms can be employed to determine how long the window between user synchronization activities should be. In a presently preferred embodiment, this window is calculated as a function of both the user rank and a weighting assigned to the particular type of user synchronization activity. Thus, the aggregator is able to perform a status update synchronization more often than a photo album synchronization as a design decision (design decisions that prioritize one type of activity over another are matters of implementation specific details). In a presently preferred embodiment, the user rank assigned to a particular user synchronization activity determines how frequently a particular user's status update or photo album will be synchronized. In a presently preferred embodiment, the time to the next synchronization is determined as a function of both the weighting assigned to the activity and the user ranking associated with the activity. As noted in the above described embodiment, as an activity becomes more prioritized it has a lower rank value. In one embodiment, the time of the next synchronization is set as the current time+(user rank)2*(activity weight). One skilled in the art will appreciate that other factors can be added included constant multipliers or constant adders without departing from the scope of the present invention.
As a user begins to increase the frequency of a particular activity, the subsequent synchronization window is shortened. This continues as long as the user continues to have activities to be synchronized or until the lower bound is reached. When the user ceases frequent updates the synchronization window is lengthened. One skilled in the art will appreciate that if separate synchronization activities are defined for each type of content supported by a social media platform a user who frequently updates a status message will not necessarily have frequent updates of other media types such as photo or video updates.
User profile information is stored by portal 150 in user database 152. Social content associated with accounts stored in the user database is stored in social content database 154. One skilled in the art will appreciate that the content stored in social content database 154 can be received from a user using any of a number of conventional mechanisms, or can be received from the social media platforms with which synchronization is performed. The prioritized synchronization list referred to in earlier figures is illustrated as element 156. A ranking engine 158 is used to determine user synchronization activity placement on the list 156. A synchronization engine 160 interfaces with the external update interface 162 to drive synchronization within the external social media platforms. External update interface 162 interfaces with each of the external social media platforms 166a-166c through a series of application programming interfaces (API) referred to as API1164a, API1164b and API1164c respectively.
In operation, external update interface 162 provides information indicative of whether or not a particular user synchronization activity was performed to ranking engine 158. In conjunction with information provided by user database 152, ranking engine 158 updates the rank of the user synchronization activity, and places the subsequent user synchronization activity in the list 156 (as noted above, this list can be ordered by the time of the next synchronization which would be determined in accordance with the rank generated by ranking engine 158). This updating has a direct effect on the prioritization of the synchronization activity. The synchronization list 156 serves as a control input to synchronization engine 160. In conjunction with the user database 152, the synchronization list 156 is used by synchronization engine 160 to drive external update interface 162. Based upon user credentials stored in user database 152 and the priority rankings stored in synchronization list 156, synchronization engine 160 connects to the relevant social media platform (though the interface 162 and the relevant API) and determines whether or not the content stored in social content database 154 require synchronization with the relevant external social media platform. If the synchronization is to occur the data is sent from synchronization engine 160 through the external update interface 162 and the relevant API 164a, 164b or 164c to the social media platform 166. External update interface 162 provides an indication to ranking engine 158 as to whether or not a synchronization activity occurred. This information is used to update the user rank as discussed above.
Embodiments of the invention may be represented as a software product stored in a machine-readable medium (also referred to as a computer-readable medium, a processor-readable medium, or a computer usable medium having a computer readable program code embodied therein). The machine-readable medium may be any suitable tangible medium including a magnetic, optical, or electrical storage medium including a diskette, compact disk read only memory (CD-ROM), digital versatile disc read only memory (DVD-ROM) memory device (volatile or non-volatile), or similar storage mechanism. The machine-readable medium may contain various sets of instructions, code sequences, configuration information, or other data, which, when executed, cause a processor to perform steps in a method according to an embodiment of the invention. Those of ordinary skill in the art will appreciate that other instructions and operations necessary to implement the described invention may also be stored on the machine-readable medium. Software running from the machine-readable medium may interface with circuitry to perform the described tasks.
The above-described embodiments of the present invention are intended to be examples only. Alterations, modifications and variations may be effected to the particular embodiments by those of skill in the art without departing from the scope of the invention, which is defined solely by the claims appended hereto.