With the increasing popularity of portable, wireless devices (e.g., laptop computers, mobile phones, personal digital assistants (PDAs), handheld global positioning system (GPS) devices, and so on), users have an increased need to synchronize data. For instance, a user may store data—such as personal and/or business contact information—on a personal computer (PC) or on a server of a web-based service. It is often desirable to synchronize this data with data stored on a portable device, such that a copy of the data is available on the wireless device for access by the user when on the move. Similarly, a user may want to synchronize data so that data entered on a portable device is backed-up or archived at a centrally located device. As any one of several devices may be used to input data, it is often the case that data conflicts arise. For example, a user may utilize a portable device to input a new telephone number for one of his or her contacts, thereby creating a data conflict between the new telephone number (as entered at the portable device) and the previous telephone number (as stored on the centralized PC or web-based service).
In order to synchronize two data records of two data sets, it is first necessary to identify two data records that match or partially match, such that the data associated with each record can be analyzed to determine whether any conflicts exist with respect to its matching or partially matching counterpart. This process is generally referred to as “matching.”
One method of matching records is to assign each data record a unique identifier, which is maintained with the data record at each device. Accordingly, two records are considered to match when they have the same identifier. However, it is not always the case that each user device supports the use of unique record identifiers. Many devices simply do not support unique record identifiers. Furthermore, many devices modify the record identifier when data items are added or deleted to a particular record, or field. When unique record identifiers are not implemented and assigned to each data record, a different method of identifying matching records and resolving conflicts is required.