Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

In accordance with embodiments, there are provided mechanisms and methods for synchronizing a server and an on-demand database service. These mechanisms and methods for synchronizing a server and an on-demand database service can enable embodiments to synchronize a larger amount of data. The ability of embodiments to provide such feature can enable more effective synchronization of a user-level sharing entity database with a multi-user on-demand database service.

InventorsGreg Salmon, Chris Hopkins, Anant Verma, Jesse Collins, Craig Weissman
Original Assigneesalesforce.com, inc.
Primary Examiner: Don Wong
Secondary Examiner: Thanh-Ha Dang
Attorney: Zilka-Kotab, PC
Current U.S. Classification707/610; 707/612; 707/617; 707/620; 707/623

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US5884325Oct 9, 1996Mar 16, 1999Oracle CorporationSystem for synchronizing shared data between computers
US6256634Jun 30, 1998Jul 3, 2001Microsoft CorporationMethod and system for purging tombstones for deleted data items in a replicated database
US6374262Sep 1, 1998Apr 16, 2002Fujitsu LimitedRelational database synchronization method and a recording medium storing a program therefore
US6782398Jun 14, 2000Aug 24, 2004Microsoft CorporationMethod for executing commands on multiple computers of a network
US6892210Dec 31, 2001May 10, 2005Worldsync, Inc.Database management and synchronization across a peer-to-peer network
US7184524Feb 14, 2003Feb 27, 2007Convoq, Inc.Rules based real-time communication system
US7421457Sep 9, 2004Sep 2, 2008Siebel Systems, Inc.Partially replicated distributed database with multiple levels of remote clients
US7437302Sep 24, 2002Oct 14, 2008Siemens Medical Solutions USA, Inc.System for managing healthcare related information supporting operation of a healthcare enterprise
US7448040Jan 4, 2007Nov 4, 2008Soverain Software LLCTransfers of information in a communications network
US7509350Jun 1, 2006Mar 24, 2009Research In Motion LimitedMethod and apparatus for synchronizing of databases
US7523130Jan 26, 2005Apr 21, 2009Storing and retrieving objects on a computer network in a distributed database
US7555287Nov 1, 2001Jun 30, 2009Nokia CorporationCustomized messaging between wireless access point and services
US7606881Apr 25, 2002Oct 20, 2009Oracle International CorporationSystem and method for synchronization of version annotated objects
US20020156862Apr 18, 2001Inter China Network Software Company LimitedGlobal network of web card systems and method thereof
US20030065827Sep 5, 2002System and method for dynamically securing dynamic-multi-sourced persisted EJBs
US20030233404Nov 4, 2002Offline simulation of online session between client and server
US20040054779Feb 10, 2003Network system
US20040117386Aug 12, 2003Sun Microsystems, Inc.Syncronization facility for information domains employing dissimilar protective transformations
US20040117667Aug 12, 2003Sun Microsystems, Inc.Synchronization facility for information domains employing replicas
US20040202132May 3, 2004Moving mobile wireless device having continuing service from the same internet server
US20040210909Apr 17, 2003SalesForce.com, Inc.Java object cache server for databases
US20050065925Sep 23, 2003SalesForce.Com, Inc.Query optimization in a multi-tenant database system
US20050177603Jan 5, 2005System and method for replicating files in a computer network
US20050223022Apr 2, 2004salesforce.com, inc.Custom entities and fields in a multi-tenant database system
US20050283478Jun 16, 2004salesforce.com, inc.Soap-based Web services in a multi-tenant database system
US20060206834Mar 8, 2005salesforce.com, inc.Systems and methods for implementing multi-application tabs and tab sets
US20070271315May 2, 2006MYPOINTS.COM INC.Robust silo based system architecture
US20070282919Jun 1, 2006Method and apparatus for synchronizing of databases
US20070288614Jun 12, 2006Method and apparatus for folder synchronization and management

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US8073590Dec 19, 2008Dec 6, 2011Boadin Technology, LLCSystem, method, and computer program product for utilizing a communication channel of a mobile device by a vehicular assembly
US8078397Dec 19, 2008Dec 13, 2011Boadin Technology, LLCSystem, method, and computer program product for social networking utilizing a vehicular assembly
US8117225Dec 19, 2008Feb 14, 2012Boadin Technology, LLCDrill-down system, method, and computer program product for focusing a search
US8117242Dec 19, 2008Feb 14, 2012Boadin Technology, LLCSystem, method, and computer program product for performing a search in conjunction with use of an online application
US8131458Dec 19, 2008Mar 6, 2012Boadin Technology, LLCSystem, method, and computer program product for instant messaging utilizing a vehicular assembly
US8131713Apr 14, 2010Mar 6, 2012salesforce.com, inc.Distributive storage techniques for multi-tenant databases
US8190692Dec 19, 2008May 29, 2012Boadin Technology, LLCLocation-based messaging system, method, and computer program product
US8219527Mar 3, 2011Jul 10, 2012Kabushiki Kaisha ToshibaFile processing apparatus, file processing method, and computer program product
US8229922Apr 8, 2009Jul 24, 2012salesforce.com, Inc.Query optimization in a multi-tenant database system
US8244759Mar 9, 2010Aug 14, 2012salesforce.com, Inc.Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment

Claims

1. A method, comprising:

determining a difference between data stored on a first server and by an on-demand database service utilizing a data structure stored on a computer readable medium, the data structure including a plurality of user identifiers each identifying one of a plurality of users of the on-demand database service and a plurality of data identifiers each correlated with at least one of the user identifiers, the data identifiers for identifying data accessible to the user associated with the correlated user identifier; and

synchronizing the first server and the on-demand database service, based on the difference;

wherein the on-demand database service includes an application platform that enables creation, management and execution of one or more applications that are developed by at least one of: a provider of the on-demand database service, users accessing the on-demand database service via user systems, and third party application developers accessing the on-demand database service via the user systems;

wherein the first server communicates data to at least one second server;
wherein the on-demand database service communicates data to a third server;
wherein the at least one second server includes at least one slave server, and the third server includes a master server;
wherein in response to receipt of a request to update data of at least one of the plurality of users, configuration data is sent from the on-demand database service to the master server, the configuration data including rules utilized for configuring the synchronizing of the first server and the on-demand database service;
wherein the configuration data indicates at least one of the plurality of users that is subjected to the synchronizing of the first server and the on-demand database service, user-specific synchronization profiles for each of the at least one of the plurality of users, and field maps indicating specific fields on the on-demand database service that are mapped to specific fields on another server.

2. A method of claim 1, wherein a plurality of the second servers are in communication with the at least one first server.

3. A method of claim 2, wherein each of the second servers is allocated to a different subset of the users.

4. A method of claim 1, wherein the at least one second server and the third server each communicate with a database server.

5. A method of claim 4, wherein the database server is coupled between the at least one second server and the third server.

6. A method of claim 4, wherein the computer readable medium is a component of the database server.

7. A method of claim 1, wherein the first server and the second server communicate utilizing a collaborative authoring protocol.

8. A method of claim 1, wherein the third server and the on-demand database service communicate utilizing a web service.

9. A method of claim 1, wherein the difference is determined in response to receiving a request to update the data of at least one of the users.

10. A method of claim 9, wherein the difference is determined by identifying a subset of the data that is accessible to the at least one user, utilizing the data structure.

11. A method of claim 10, wherein the difference is further determined by comparing a current state of the data subset with a previous state of the data subset.

12. A method of claim 1, wherein the data structure includes a first table.

13. A method of claim 12, wherein a second table includes the data identifiers each correlated with corresponding data.

14. A method of claim 13, wherein the second table is used in conjunction with the first table for accessing the data using the user identifiers.

15. A method of claim 1, wherein the first server includes a user-level sharing entity.

16. A method of claim 1, wherein the on-demand database service includes a multi-tenant database system.

17. The method of claim 1, wherein the master server conditionally disables the at least one slave server.

18. A computer program product embodied on a machine-readable medium, carrying one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to carry out the steps of:

determining a difference between data stored on a first server and by an on-demand database service utilizing a data structure stored on a computer readable medium, the data structure including a plurality of user identifiers each identifying one of a plurality of users of the on-demand database service and a plurality of data identifiers each correlated with at least one of the user identifiers, the data identifiers for identifying data accessible to the user associated with the correlated user identifier; and

synchronizing the first server and the on-demand database service, based on the difference;

wherein the on-demand database service includes an application platform that enables creation, management and execution of one or more applications that are developed by at least one of: a provider of the on-demand database service, users accessing the on-demand database service via user systems, and third party application developers accessing the on-demand database service via the user systems;

wherein the first server communicates data to at least one second server;
wherein the on-demand database service communicates data to a third server;
wherein the at least one second server includes at least one slave server, and the third server includes a master server;
wherein in response to receipt of a request to update data of at least one of the plurality of users, the computer program product operates to send configuration data from the on-demand database service to the master server, the configuration data including rules utilized for configuring the synchronizing of the first server and the on-demand database service;
wherein the configuration data indicates at least one of the plurality of users that is subjected to the synchronizing of the first server and the on-demand database service, user-specific synchronization profiles for each of the at least one of the plurality of users, and field maps indicating specific fields on the on-demand database service that are mapped to specific fields on another server.

19. An apparatus, comprising:

a processor; and

one or more stored sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of:
determining a difference between data stored on a first server and by an on-demand database service utilizing a data structure stored on a computer readable medium, the data structure including a plurality of user identifiers each identifying one of a plurality of users of the on-demand database service and a plurality of data identifiers each correlated with at least one of the user identifiers, the data identifiers for identifying data accessible to the user associated with the correlated user identifier; and
synchronizing the first server and the on-demand database service, based on the difference;
wherein the on-demand database service includes an application platform that enables creation, management and execution of one or more applications that are developed by at least one of: a provider of the on-demand database service, users accessing the on-demand database service via user systems, and third party application developers accessing the on-demand database service via the user systems;
wherein the first server communicates data to at least one second server;
wherein the on-demand database service communicates data to a third server;
wherein the at least one second server includes at least one slave server, and the third server includes a master server;
wherein in response to receipt of a request to update data of at least one of the plurality of users, the apparatus operates to send configuration data from the on-demand database service to the master server, the configuration data including rules utilized for configuring the synchronizing of the first server and the on-demand database service;
wherein the configuration data indicates at least one of the plurality of users that is subjected to the synchronizing of the first server and the on-demand database service, user-specific synchronization profiles for each of the at least one of the plurality of users, and field maps indicating specific fields on the on-demand database service that are mapped to specific fields on another server.

20. A data structure embodied on a computer readable medium, comprising:

a plurality of user identifier objects, each of the user identifier objects identifying one of a plurality of users of an on-demand database service;

a plurality of data identifier objects, each of the data identifier objects correlated with at least one of the user identifier objects, and each of the data identifier objects for identifying data accessible to the user associated with the correlated user identifier object; and

logic, carrying one or more sequences of instructions, which when executed by one or more processors, cause the one or more processors to synchronize a server and the on-demand database service utilizing the user identifier objects and the data identifier objects;

wherein the on-demand database service includes an application platform that enables creation, management and execution of one or more applications that are developed by at least one of: a provider of the on-demand database service, users accessing the on-demand database service via user systems, and third party application developers accessing the on-demand database service via the user systems;
wherein the data structure is utilized whereby the first server communicates data to at least one second server;
wherein the data structure is utilized whereby the on-demand database service communicates data to a third server;
wherein the data structure is utilized whereby the at least one second server includes at least one slave server, and the third server includes a master server;
wherein in response to receipt of a request to update data of at least one of the plurality of users, the data structure is utilized whereby configuration data is sent from the on-demand database service to the master server, the configuration data including rules utilized for configuring the synchronizing of the first server and the on-demand database service;
wherein the configuration data indicates at least one of the plurality of users that is subjected to the synchronizing of the first server and the on-demand database service, user-specific synchronization profiles for each of the at least one of the plurality of users, and field maps indicating specific fields on the on-demand database service that are mapped to specific fields on another server.

21. A system, comprising:

a first server;

a second server coupled to the first server;

a third server coupled to an on-demand database service; and

a database server coupled to the second server and the third server, the database server for determining a difference between data stored on the first server and by the on-demand database service, and synchronizing the first server and the on-demand database service based on the difference;
wherein the on-demand database service includes an application platform that enables creation, management and execution of one or more applications that are developed by at least one of: a provider of the on-demand database service, users accessing the on-demand database service via user systems, and third party application developers accessing the on-demand database service via the user systems;
wherein the first server communicates data to the second server;
wherein the on-demand database service communicates data to the third server;
wherein the second server includes at least one slave server, and the third server includes a master server;
wherein in response to receipt of a request to update data of at least one of the plurality of users, the system operates to send configuration data from the on-demand database service to the master server, the configuration data including rules utilized for configuring the synchronizing of the first server and the on-demand database service;
wherein the configuration data indicates at least one of the plurality of users that is subjected to the synchronizing of the first server and the on-demand database service, user-specific synchronization profiles for each of the at least one of the plurality of users, and field maps indicating specific fields on the on-demand database service that are mapped to specific fields on another server.