WO2006108012A2 - Distributed management framework for personal attributes - Google Patents
Distributed management framework for personal attributes Download PDFInfo
- Publication number
- WO2006108012A2 WO2006108012A2 PCT/US2006/012582 US2006012582W WO2006108012A2 WO 2006108012 A2 WO2006108012 A2 WO 2006108012A2 US 2006012582 W US2006012582 W US 2006012582W WO 2006108012 A2 WO2006108012 A2 WO 2006108012A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- permissions
- client
- server
- attributes
- database
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2145—Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99939—Privileged access
Definitions
- Databases are collections of data entries which are organized, stored, and manipulated in a manner specified by applications known as database managers.
- the manner in which database entries are organized in a database is known as the data structure of the database.
- Database managers organize information in a database into records, with each record made up of fields. Fields and records may have different characteristics depending upon the purpose and functionality of the database manager.
- database describes data entries and associated database managers.
- database is intended to include both data entries and associated database managers.
- synchronize refers to database operations, associated with two or more devices, that change the contents of one database so that it matches, or "mirrors", the contents of the other database. Synchronization may be total (e.g., mirroring all of the contents of a database) or partial (e.g., mirroring a subset of all of the content of a database) .
- a prior art technique for accomplishing this synchronization sometimes referred to as "slow synchronization" involved comparing each record in each database. It may be noted that slow synchronization many not be capable of partial synchronization. Moreover, slow synchronization is complicated and time-consuming.
- Another prior art technique to synchronize databases involves implementing a change log.
- the change log contains information regarding records which have been operated upon in either database subsequent to synchronization therebetween.
- the change log also records the time at which a synchronization operation was last performed between two databases, so that changes made prior to a previous update can be ignored.
- synchronization procedures use the change log to determine what records should be synchronized. This alleviates the burden of synchronizing the entire databases. This technique is sometimes referred to as "fast synchronization. "
- mirrored information resides on a first device and on a second device.
- a change is made on the first device to new valid information.
- a change is subsequently made on the second device, changing old, invalid data to updated, but invalid data.
- a timestamp would be associated with both changes in a change log. When resolving the two changes, the most recent timestamp would be favored. Accordingly, in this example, the change on the first device to new, valid data would not be implemented on the second device because a change was made in the interim (i.e., before synchronization to mirror the valid data).
- clocks in the devices may need to be accurate, aligned with one another, and unchanged. This is not always the case in, for example, mobile devices. Indeed, it is quite common for the user of a mobile device to travel to another time zone and therefore, change the time on the device's clock. This can cause problems with synchronization. In some cases, problems with timestamps can cause devices to ignore changes in the synchronization effort, effectively losing the change.
- users may find it tedious, or forget to update databases with new data. For example, a user may update an address book locally, but fail to send updates to acquaintances to inform them of the changed information. Moreover, users who receive updated information may forget to update the contact information or may find it tedious to update information continuously for a large number of contacts. For enterprises that maintain a contact database, this can be particularly time-consuming.
- a technique for distributed management of attributes includes propagating attributes based upon attribute-granularity permissions.
- An example of a method according to the technique may include maintaining first attributes associated with a first entity of a plurality of entities and second attributes associated with a second entity of the plurality of entities.
- the method may further include linking the first entity with a second entity.
- the method may further include providing first destinations, associated with the first entity, for the second attributes.
- the method may further include granting first permissions for the first attributes to the second entity.
- the method may further include providing second destinations, associated with the second entity, for the first attributes.
- the method may further include granting second permissions for the second attributes to the first entity.
- the method may further include facilitating the propagation of shared attributes to the destinations through the permissions.
- the method may further include managing subsequent changes of attributes to create a syndicated distributed secure data exchange.
- An example of a system according to the technique may include a server, coupled to a first client and a second client, that includes a module that receives attribute data from the first client; a permissions database where first permissions associated with the first client are set at the individual attribute level for the second client; an engine for updating the permissions database and for validating the first permissions for the second client; and an engine for distributing first client updates based on validated permissions to destinations associated with the one or more second destination stores.
- FIG. 1 depicts a conceptual view of a contact database synchronization system.
- FIG. 2 depicts a client computer for use in the system of FIG. 1.
- FIG. 3 depicts a server computer for use in the system of FIG. 1.
- FIG. 4 depicts a flowchart associated with the system of FIG. 1.
- FIGS. 5A and 5B depict an example of a system and transactions associated with the system of FIG. 1.
- FIG. 6 depicts several examples of tables that may be included in a database of the system of
- FIGS. 7 A and 7B depict examples of systems on which a distributed management framework for personal attributes may be implemented.
- FIGS. 8A to 8F depict examples of components of a system capable of distributed management of personal attributes.
- FIG. 9 depicts a system for distributed management of personal attributes.
- FIG. 10 depicts a conceptual view of engines and transactions associated with the system of FIG. 9.
- FIG. 11 depicts several examples of tables that may be included in a database of the system of FIG. 9.
- FIG. 12 depicts a flowchart of an example of a method for startup in a distributed management of personal attributes framework.
- FIG. 13 depicts a flowchart of an example of a method for adding a user or device in a distributed management of personal attributes framework.
- FIG. 14 depicts a flowchart of an example of a method for setting permissions in a distributed management of personal attributes framework.
- FIGS. 15A and 15B depict a flowchart of an example of a method for changing attributes in a distributed management of personal attributes framework.
- FIG. 16 depicts a flowchart of an example of a method for making connections in a distributed management of personal attributes framework.
- FIG. 17 depicts an example of a system for distribution of personal data.
- FIG. 18 depicts a flowchart of an example of a method for obtaining personal data from a plurality o f grantees .
- FIG. 1 depicts a conceptual view of a secure contact database synchronization system 100 according to an embodiment.
- the system 100 includes a server 102, a network 104, clients 106-1 to 106-N (referred to collectively hereinafter as clients 106), mobile devices 108-1 to 108-N (referred to collectively hereinafter as mobile devices 108), and a client 110.
- clients 106 clients 106-1 to 106-N
- mobile devices 108-1 to 108-N referred to collectively hereinafter as mobile devices 108
- client 110 is distinguished from the clients 106 for the purposes of example only. Aspects described with reference to any one of the clients 106, 110 may be applicable to all or a subset of the clients 106, 110.
- the server 102 may include various hardware and/or software components, as described later with reference to FIGS. 7 and 8.
- the network 104 may be the Internet, or any other network, as described later with reference to FIGS. 7 and 8.
- the clients 106 may include various hardware and/or software components, as described later with reference to FIGS. 7 and 8.
- the clients 102 include a YouClient 112 and an Address Book 114. Functionality of the YouClient 112 is described later with reference to FIGS. 4 and 5.
- the Address Book 114 may have any of a variety of address book configurations including by way of example but not limitation, Palm Address Book (AB), Outlook AB, Mozilla AB, Entourage AB, Max OS X AB, or any known or eventual AB type.
- the mobile devices 108 may include various hardware and/or software components, as described later with reference to FIGS. 7 and 8. Indeed, the clients 106 could be mobile devices. However, for illustrative purposes, the mobile devices 108 synch with the client 110 in a manner that is known in the computer arts.
- the mobile device 108-1 may be by way of example but not limitation a mobile phone
- the mobile device 108-2 may be by way of example but not limitation a PDA, both of which can synch with, by way of example but not limitation, a Mac OS X Address Book on a user's computer (e.g., the client 110) through an iSync mechanism, which is known in the computer arts.
- the client 110 would then update local databases based upon the results of the iSync. Comparable technologies exist for various AB types and various operating systems.
- the client 110 may include various hardware and/or software components, as described later with reference to FIGS. 7 and 8.
- the client 110 includes a YouClient module 112, an Address Book 114, an AB Type database (dB) 116, and a Sync module 118.
- the various components are connected to a bus 119. It may be noted that alternative embodiments that do not connect some or all of the components to the bus 119 are possible, particularly in a distributed architecture, as would be apparent to one of ordinary skill in the art of computer architecture.
- the Address Book 114 may have any of a variety of address book configurations.
- the AB Type dB 116 includes data related to various AB types with which the YouClient module is configured to synch. In an embodiment, adding a new AB type to the AB Type dB 116 does not result in the need for recompilation or other reconfiguration of the YouClient module 112. In another embodiment, no recompilation or other reconfiguration of the YouClient module 112 is necessary when the Address Book 114 (or an Address Book of one of the mobile devices 108 or clients 106) is changed from one AB type to another or when the Address Book 114 is upgraded to a new version.
- the sync module 118 facilitates synching of the mobile devices 108 with the client 110 in a manner that is known.
- the YouClient module 112 detects updates accomplished by the sync module 118 and performs appropriate actions, as described in more detail with reference to FIGS. 4 and 5.
- a subscriber is associated with the client 110.
- the subscriber owns the mobile devices 108 (or, at least, an owner of a mobile device has access to the sync module 118).
- the subscriber can update address books on the mobile devices 108 and/or the subscriber can update the address book 114 using an input device (examples of which are provided with reference to FIGS. 7 and 8).
- the AB types dB 116 may or may not be able to recognize the address books of the mobile devices 108. Recognition is not necessary if the sync module 118 can render the data in a format that is recognizable to the YouClient module 112.
- the YouClient module 112 detects the change. Then the YouClient module 112 performs certain tasks, such as checking permissions, as described in more detail with reference to FIGS. 4 and 5, and forwards data associated with the update, with appropriate instructions if necessary, through the network 104 to the server 102.
- certain tasks such as checking permissions, as described in more detail with reference to FIGS. 4 and 5, and forwards data associated with the update, with appropriate instructions if necessary, through the network 104 to the server 102.
- transactions between the client 110 and the server 102 are encrypted.
- the server 102 performs tasks, described in more detail with reference to FIGS. 4 and 5, that include forwarding the updates onto the YouClient modules of the respective clients 108.
- the respective YouClient modules of the clients 108 periodically signal the server 102 that they are awake and/or ready to receive updates.
- the server 102 sends updates through the network 104 to the clients 108 that are ready and/or allowed to receive updates.
- their respective YouClient modules update their respective address books.
- FIG. 2 depicts a client computer 210 according to an embodiment.
- the client computer 210 may be similar to the client 110 (FIG. 1).
- the client computer 210 includes a YouClient 212, an address book 214, a YouInstallWizard 222, a YouNIQ module 224, and a library directory 240.
- the YouInstallWizard 222 is used to set up local files on the computer 210. Functionality of the YouInstallWizard 222 is described later with reference to FIGS. 4 and 5.
- the YouNIQ module 224 is used to, by way of example but not limitation, set permissions to control what information to share with others, such as the clients 106 (FIG. 1).
- the YouNIQ module 224 Functionality of the YouNIQ module 224 is described in more detail with reference to FIGS. 4 and 5.
- the YouClient 212 is a Java application.
- the YouInstallWizard 222 and the YouNIQ module 224 have associated Java GUIs.
- the library directory 240 includes a YouClient.xml file 242, a
- the YouNIQ.xml file 244 may include data associated with local configuration information.
- the YouNIQ.xml file 244 may include data associated with permissions and profiles.
- the MeCardCache.xml file 246 may include data associated with a 'me' record that was previously sent to a server, such as the server 102 (FIG. 1).
- These files are illustrated for the purposes of example and are intended to represent broad categories of files that may be used to facilitate functionality described with reference to FIGS. 4 and 5. As such, the files could have any file type, including by way of example but not limitation, .xml. Moreover, there may be an arbitrary number of such files, perhaps only loosely associated with the information just described as associated with the various files.
- the AB types dB 216 includes an Entourage type 252, a MacOSX AB type 254, a Palm type 256, and others (not shown). These types are listed by way of non-limiting embodiment.
- a given AB types dB 216 may or may not include the indicated types, and might even contain no types, pending addition of AB types.
- adding new AB types may include loading a new ABType class, which will often be a well- defined interface, in the AB types dB 216.
- the indicated types 252, 254, 256 may be representative of an ABType class. It may be noted that data representations other than classes may be used in alternative embodiments.
- a subscriber executes the YouInstallWizard 222 to connect to a server, such as the server 102 (FIG. 1) to obtain, by way of example but not limitation, a UID.
- a server such as the server 102 (FIG. 1) to obtain, by way of example but not limitation, a UID.
- the YouInstallWizard 222 may be executed automatically when the address book 214 is updated, or in response to some other stimulus.
- the subscriber may also use the YouInstaUWizard 222 to set up local files on the computer 210, assuming the platform allows for local files.
- the YouInstallWizard 222 may perform some or all of the requisite or desired configurations automatically or in response to some other stimulus.
- the subscriber may also use the YouInstallWizard 222 to get user data associated with those who have allowed for us to update our records in their databases.
- the YouInstallWizard 222 may obtain the data automatically or in response to some other stimulus.
- the subscriber may or may not use a GUI associated with the YouInstallWizard 222 to enter some or all of the requisite information.
- the YouInstallWizard 222 gets a new UTD and sets up local files on a client device (if the platform allows for local files).
- the YouInstallWizard 222 also gets users (if any) that have allowed for the subscriber to update the subscriber's records in the users' address books.
- the subscriber may or may not use a GUI associated with the YouNIQ module 224 to set permissions.
- the permissions control what information you may or may not share with others, such as the clients 106 (FIG. 1).
- the YouNIQ module 224 may initiate forwarding updates to appropriate parties. In an embodiment, the forwarded updates actually update a record associated with the subscriber on the relevant clients 106.
- the YouClient module 212 checks permissions to determine who to forward the update to, then forwards data associated with the update to a server, such as the server 102 (FIG. 1).
- the server may request additional information if there is a problem and/or provide notification to the YouClient module 212 regarding the status of updates.
- the computer 210 may be updated by others.
- the computer 210 is similar to one of the clients 106 (FIG. 1).
- the YouClient module 212 may or may not periodically signal a server, such as the server 102 (FIG. 1) that the computer 210 is awake and/or ready to receive updates. If the server has updates to send, then the server may send the update, along with other information if applicable.
- the YouClient module 212 receives the update and updates a local address book accordingly.
- FIG. 3 depicts a server 302 according to an embodiment.
- the server 302 includes a YouServer database 332, a YouServer module 334, and a YouServer transaction log 336.
- the YouServer database 332 may include a variety of records including by way of example but not limitation users (including, e.g., a UID and connection information, such as ip/port); fields defined by, for example, a vCard specification (including, e.g., FID and field name); permission tables (including, e.g., grantor UID, FID, grantee UID); and pending transaction logs (e.g., grantor UID, grantee UID, push/pull Boolean, FID, value).
- users including, e.g., a UID and connection information, such as ip/port
- fields defined by, for example, a vCard specification including, e.g., FID and field name
- permission tables including, e.g., grantor UID, FID, grantee UID
- pending transaction logs e.g., grantor UID, grantee UID, push/pull Boolean, FID
- a function of the YouServer module 334 is to respond to requests from clients, such as the client 210 (FIG. 2).
- the YouServer module 334 may make use of, by way of example but not limitation, an SQL database to keep track of subscribers, permissions, and pending transactions.
- the YouServer database 332 may or may not include the SQL database.
- Requests from clients may include by way of example but not limitation requests to set/change permissions of who gets copies of changes in a subscriber's 'me' record, get auser- id (UID) for a new subscriber, get the UIDs of users who have given permission to a subscriber to update records associated with the subscriber in the users' address books, receive and process data transaction requests (e.g., a Me engine detects a change in a 'me' record and sends it to the server if permissions are appropriately set and the server checks the permissions and puts ⁇ pushData> transactions in a transaction log), receive and process ⁇ awake> transactions from clients (e.g., a client may send periodic ⁇ awake> transactions to see if there is any new
- the YouServer module 334 may receive information from a subscriber, typically from over a network, an administrator, from over a network or through a local input device, or a software and/or hardware application.
- the YouServer module 334 reads the YouServer database 332 if a read request is triggered by the input and writes the YouServer database 332 if a write request is triggered by the input.
- the YouServer module 334 updates the YouServer transaction log 336, which may be by way of example but not limitation an SQL transaction log.
- the YouServer module 324 may receive subscriber information from an administrator, a subscriber, a third party vendor, and/or from automated modules.
- the subscriber may send requests to the YouServer module 324 to read or write to the YouServer database 322 and to perforin other functions.
- the subscriber may send permission change notifications, which may prompt the YouServer module 324 to update permission tables in the YouServer database 322.
- the subscriber may send subscriber information updates, which may prompt the YouServer module 324 to update permission tables and/or to log a transaction in pending transaction log in the YouServer database 322.
- the subscriber may or may not be capable of sending an add user request, which would update user tables in the YouServer database 322.
- the subscriber may or may not be capable of updating account information, which could cause a read or write of an internal schema database.
- Other transactions may include user sync requests (pull) and user sync requests (push), which may access a pending transaction in the YouServer transaction log 326.
- the YouServer module 324 receives subscriber information and updates the YouServer database 322 accordingly. Then the YouServer module 324 receives updates and associated instructions, if any, from the subscriber, who may be associated with a client computer, such as the client 110 (FIG. 1). The YouServer database 322 is modified according to the associated instructions, if necessary, and data associated with the updates is entered into the
- YouServer transaction log 326 Entries in the YouServer transaction log 326 include information sufficient to facilitate user sync requests for clients, such as the clients 106 (FIG. 1) that have permission to receive the updates.
- the YouServer transaction log 326 includes one entry for each client who is permitted to receive the update.
- the YouServer transaction log 326 includes one entry for each update, including data sufficient to identify each client with permission to receive the update associated with the transaction log entry.
- the YouServer module 324 sends the update to the client and removes the entry from the YouServer transaction log 326 (assuming an embodiment wherein each transaction log entry is associated with a single client).
- FIG. 4 depicts a flowchart 400 associated with the system of FIG. 1 in an aspect of the embodiment.
- the flowchart 400 starts at block 402 wherein a subscriber updates personal information in an address book.
- the address book may be, by way of example but not limitation, a Macintosh OS X address book.
- the flowchart 400 continues at block 404 wherein a YouClient module checks a permission table to confirm contacts are allowed to see an update.
- the permission table may or may not be locally available.
- the subscriber may or may not be able to adjust permissions "on the fly.” Of course, the subscriber should be able to adjust permissions at some point, whether on the fly, prior to updating an address book, or at some other point.
- the flowchart 400 continues at block 406 wherein a YouClient forwards an update with appropriate instructions, if appropriate, to a YouServer. Instructions may or may not be appropriate when sending updates. For example, if the YouServer knows how to handle an update without additional instructions, then the additional instructions may not be needed. Alternatively, a YouServer may need additional instructions to, by way of example but not limitation, identify the subscriber (if such information is not determinable from the update) or to change permissions at the YouServer prior to updating. In various embodiments, the update may be sent as a single update for multiple clients or as a single update for each of multiple clients.
- the flowchart 400 continues at block 408 wherein a YouServer checks a permission table.
- This permission table may or may not be similar to the permission table that is local to a client associated with a subscriber.
- the permission table may be, by way of example but not limitation, an SQL table.
- the flowchart 400 continues at block 410 wherein a YouServer places updates in a transaction log.
- each entry of the transaction log may be associated with a single client who is allowed to receive the update.
- the transaction log can be purged of the entry.
- a single update may have multiple associated clients who are permitted to receive the update.
- the flowchart 400 continues at block 412 wherein a YouClient periodically signals a YouServer that it is awake and ready to receive updates. If the YouClient does not signal the YouServer for a period of time, then the YouServer may or may not purge a transaction log of an entry associated with an update for the YouClient. For example, if a YouClient is not available for a year, then the transaction log can be updated to remove the old update information. In this way, the transaction log can be maintained without allowing the log to grow unmanageably large. In addition, according to another embodiment, the transaction log could be purged of entries if the transaction log grows to an arbitrarily large size.
- the purge may be based upon the timestamp of an entry and/or upon other factors. In addition, two updates could be consolidated if a first update and a second update are associated with the same client.
- the flowchart 400 continues at block 414 wherein a YouServer sends updates to a YouClient.
- the YouClient informs the YouServer that the YouClient is ready to receive updates and, in response, the YouServer sends any updates that are associated with the YouClient.
- the YouServer may attempt to push information to the YouClient, which may or may not succeed depending upon whether the
- YouClient is able to receive the update.
- the flowchart 400 continues at block 416 wherein a YouClient updates a local address book.
- the YouClient receives the update from a YouServer
- the YouClient is presumed to have permission to update local contact information. Accordingly, the YouClient updates the local address book using the update.
- a subscriber associated with the YouClient indicates beforehand that the YouClient is allowed to update a local address book when receiving updates from the YouServer.
- the subscriber associated with the YouClient may be queried each time an update becomes available as to whether to allow the YouClient to update the local address book.
- FIGS. 5A and 5B depict an example of a system 500 according to an embodiment and transactions associated with the system.
- FIGS. 5A and 5B is intended to illustrate generation and consumption of transactions in a database synchronization system. It should be noted that this is but one of many ways of implementing a data synchronization system according to an embodiment and is intended only as a non-limiting example. Other embodiments may have more or fewer, and different, transactions.
- the system 500 includes a YouClient module 512 and a YouNIQ engine 524.
- the YouClient module 512 includes a Me engine 526, a YouClient engine 528, and an address book 514.
- the YouNIQ engine 524 includes a GUI that facilitates a subscriber setting permissions.
- the permissions settings control what information the subscriber will share with other users. For example, if a user has permission to see the subscriber's home email information, the user will get the current value of the subscriber's home email when the permissions are appropriately set.
- the YouNIQ engine 524 may forward to users with permission any changes the subscriber makes to the home email over time.
- the YouNIQ engine 524 facilitates updating the subscriber's information in the users' local address books.
- templates and/or defaults facilitate the setting of permissions by the subscriber without requiring the subscriber set individual fields.
- a database may include information related to fields and use templates to provide updates of relevant fields.
- the me engine 526 detects updates to a subscriber's contact information on the subscriber's local machine.
- the me engine 526 sends the updates on to a server, which in turn may send the updates as ⁇ pushData> transactions on to users with permission to receive the updates.
- the YouClient engine 528 handles the local permission cache and acts as a conduit between the YouServer and the YouNIQ (and address book). In another embodiment, there is only one communication point between the YouServer and the client device. In another embodiment, the one-communication-point model is broken only when a subscriber installs the software associated with the YouService components and when a wizard, such as the YouInstallWizard 222 (FIG. 2) communicates with the server to configure the system 500 for a subscriber.
- a wizard such as the YouInstallWizard 222 (FIG. 2) communicates with the server to configure the system 500 for a subscriber.
- the YouClient engine 528 also handles ⁇ pushData> transactions from the server and updates a user's address book 514. For example, if a user has given a subscriber access to the subscriber's record in the user's address book, the YouClient engine 528 on the user's client device can update the subscriber's record in the user's address book when the subscriber updates local information.
- the subscriber can reach into the user's address book to change data associated with the subscriber.
- the system 500 includes a YouService dB 532, a YouServer module 534, and a transaction log 536.
- the YouService dB 532 may include multiple databases, tables, and/or records. An example of a YouService dB 532 according to a non-limiting embodiment is described with reference to FIG. 6 below.
- the YouServer module 534 may include a YouServer dB engine 552 and a YouServer log engine 554.
- the YouServer dB engine 552 handles transactions that read/write to the YouService dB 532.
- the YouServer log engine 554 handles all of the transaction log-type transactions, which may include ⁇ pushData>, examples of which are described below.
- the transaction log 536 may be designed to keep pending transactions even through a server crash.
- an engine as used herein, could refer to a process, thread, class, function, method, module, program, file, and/or some combination of these things, depending upon the platform, architectural decisions, and preferences.
- Other components may be used in various embodiments.
- a broker component (not shown) could take incoming transactions and hand them off to the YouServer dB engine 552 or the YouServer log engine 554.
- transaction reference numerals are represented as XXX-I and XXX-2, where XXX-I refers to the place where the transaction is generated and
- XXX-2 refers to the place where the transaction is consumed.
- the transaction without regard to the location of generation and consumption, may be referred to as transaction XXX.
- the YouNIQ engine 524 is responsible for providing a GUI to a subscriber.
- the subscriber can set permissions that enable other users to see information that is associated with the subscriber, such as contact information.
- YouNIQ engine 524 GUI clicks on an appropriate button (or performs some other action), the YouNIQ engine 524 generates a ⁇ setPermissions> transaction 570-1 and forwards the transaction 570 through the YouClient engine 528 to the YouServer dB engine 552 of the YouServer 534.
- the YouService dB engine 552 consumes the ⁇ setPermissions> transaction 570-2 and stores new or updated permissions in a permissions table of the YouServer dB 532.
- the YouService dB engine 552 If the YouService dB engine 552 successfully stores the permissions in the YouServer dB 532, the YouService dB engine 552 generates a ⁇ pFileRefresh> transaction 571-1 and forwards the transaction 571 through the YouClient engine 528 to the YouNIQ engine 524.
- the YouNIQ engine 524 consumes the ⁇ pFileRefresh> transaction 571-2 and updates a local permission cache.
- the local permission cache is a file, but need not be. Moreover, for some clients there may not even be a local permission cache —the client may have to ask a server for its own permission table in this case.
- the Me engine 526 is responsible for watching the fields of a subscriber's 'me' record. Examples of fields of the 'me' record are described in more detail below with reference to FIG. 6. If the Me engine 526 detects a change to a field in the 'me' record, then the Me engine 526 generates the ⁇ setData> transaction 572-1. In an embodiment, the Me engine 526 only generates the ⁇ setData> transaction 572-1 if the subscriber has given permission for another user (or users) to see the updated field. In the example of FIG. 5A, after generating the ⁇ setData> transaction 572-1 (or at roughly the same time), the Me engine 526 generates a ⁇ setDataChk> transaction 573-1.
- the ⁇ setDataChk> transaction 573 is associated with a time interval of arbitrary length. If the Me engine 526 receives an indication that the ⁇ setData> transaction 571 was successful, then the ⁇ setDataChk> transaction 573 "times out.” If, on the other hand, no indication is received that the ⁇ setData> transaction 571 was successful, the Me Engine may, in an embodiment, generate a new ⁇ setData> transaction 571 or the YouClient 512 could perform some other action to determine whether a new ⁇ setData> transaction 571 should be generated or the like.
- the transaction 572 is forwarded through the YouClient engine 528 to the YouServer 534, along with data associated with the update.
- the Server dB engine 552 is responsible for consuming the ⁇ setData> transaction 572-2 and updating the YouService dB 532 using data associated with the ⁇ setData> transaction 572. If the update is successful, the Server dB engine
- the YouClient 512 is done sending updated data and determining that the updated data has been received and recorded at the server. It should be noted that in an embodiment, the server may send additional information to the YouClient 512 following a successful or unsuccessful push to a client.
- the YouServer dB engine 552 in an embodiment, consults a permission table in the YouServer dB 532 to determine who is permitted to receive an update associated with the transaction 572. Then, using the permission data, the YouServer dB engine 552 generates one or more ⁇ pushData> transactions 575-1 and sends the transactions 575 to the YouServer log engine 554. In an embodiment, the YouServer dB engine 552 generates one ⁇ pushData> transaction 575-1 for each client who has permission to receive the update. For example, if a subscriber allows 10 people to receive updates, then the YouServer dB engine 552 may generate 10
- the YouServer log engine 554 records data associated with the ⁇ pushData> transactions 575 as an entry in the transaction log 536.
- each such entry in the transaction log 536 is associated with a different client who has permission to receive the associated update.
- the YouServer log engine 554 At approximately the same time as the YouServer log engine 554 records the update data associated with the ⁇ pushData> transaction 575, the YouServer log engine 554 generates a ⁇ pushDataChk> transaction 574-1 and sends the transaction 574 to itself.
- the ⁇ pushDataChk> transaction 576 is similar to the ⁇ setDataChk> transaction 573 discussed previously except that the ⁇ pushDataChk> transaction 576 terminates or times out when the YouServer log engine 554 receives information that the data was successfully pushed to a client.
- the YouServer log engine 554 tells itself that it just did a ⁇ pushData> transaction to a client so it should wait a while and make sure that the client replied that it received the ⁇ pushData> transaction. If the client does not reply, then the YouServer log engine 554 may or may not make a note of it. In an embodiment wherein the YouServer log engine 554 is behind a firewall, the above-described implementation works in various embodiments. However, it should be noted that the ⁇ pushDataChk> transaction 576 may not be particularly useful unless the YouServer 534 is actively pushing data, as opposed to simply responding to a client.
- the server may only be able to respond to client requests if the server is separated from the client by a firewall. Accordingly, in an embodiment, the ⁇ pushDataChk> transaction 576 would typically be used if the server and client were both deployed behind an organization's firewall. It may be noted that the Me engine 526 may also generate a ⁇ pushDataChk> transaction 576-1, which may be consumed by the YouServer log engine 554 as described previously.
- the YouClient engine 530 generates an ⁇ awake> transaction 577-1 to ask the YouServer 534 if there are any pending ⁇ pushData> transactions 575 for the client.
- the YouServer log engine 554 if there are no pending ⁇ pushData> transactions 575 for the client, then the YouServer log engine 554 generates an ⁇ awakeOK> transaction 578-1.
- the ⁇ awakeOK> transaction 578 indicates that the server recognizes that the client is ready to receive updates, but has none to provide.
- the YouClient engine 528 consumes the ⁇ awakeOK> transaction 578-2 and, after a period of time, generates another ⁇ awake> transaction 577-1. This continues until a pending ⁇ pushData> transaction 575 becomes available. It may be useful to note that the YouClient engine 528 would probably be associated with a user other than the subscriber. Thus, the ⁇ setData> transaction 572-1 described previously (and associated with a first update) would probably be generated at a different client than the client consuming the
- ⁇ pushData> transaction 575-2 associated with the first update. Simply put, it would not be particularly advantageous for a client to consume its own updates.
- the YouServer log engine 554 forwards the ⁇ pushData> transaction 575 to the client in response to the ⁇ awake> transaction 577. In an embodiment that does not include an ⁇ awake> transaction, the YouServer log engine 554 may simply forward the ⁇ pushData> transaction 575 when it becomes available.
- the YouClient engine 528 pushes data associated with the ⁇ pushData> transaction 575 into the address book 514. Assuming the update is successful, the YouClient engine 528 generates a ⁇ pushDataOK> transaction 579-1, which is sent to the YouServer 534. In the example of FIG. 5B, the YouServer log engine 554 successfully terminates the
- ⁇ pushDataChk> transaction 576-2 which means the server is aware that the data was successfully pushed to a client.
- the YouServer log engine 554 may purge the associated ⁇ pushData> transaction 575 from the transaction log 536.
- the YouServer 534 will inform the YouClient engine 530 that the data associated with the ⁇ setData> transaction 572 has been successfully pushed to a client, as well.
- FIG. 6 depicts several examples of tables that may be included in a database, such as the YouServer dB 532 (FIG. 5), according to an embodiment.
- the tables include a user table 602, a field table 604, a permission table 606, and a pending transaction log 608.
- the user table 602 includes the fields UID and connect info.
- the UID may identify a subscriber and the connect info may identify, by way of example but not limitation, an ip/port number.
- the connect info may identify, by way of example but not limitation, an ip/port number.
- entries may be added to the user table 602.
- internal schema may have access to the user table 602 for, by way of example but not limitation, billing purposes.
- the field table 604 includes the fields FID and field name.
- FID field identifies a field by number or some other identification scheme.
- the fieldname identifies a field associated with a specification, such as by way of example but not limitation the vCard specification.
- the permission table 606 includes the fields grantor UID, FID, and grantee UID.
- the grantor UID identifies a subscriber who is granting permission to access the field identified in the FID field to the user identified in the grantee UID field.
- the permission table 606 may be modified according to permission change notifications and user data changes.
- the pending transaction log 608 includes the fields grantor UID, grantee UID, push/pull, FIG, and value.
- the grantor UID identifies a subscriber who changed a field identified by the FID field to a value indicated in the value field.
- the update is available to the user identified in the grantee UID field on a push or pull basis, as indicated in the push/pull field.
- User data changes result in added records in the pending transaction log 608.
- User sync request associated with a pull transaction check cause the pending transaction log 608 to be checked for the grantee UID associated with the requesting pull transaction, and the data is provided if there is a match.
- Push transactions on the other hand, push data from the pending transaction log 608 to the appropriate grantee.
- the You service is based on peer to peer technology taking advantage of grid computing technologies to utilize free processor cycles to manage the traffic and updates.
- a service plugin has been developed for Microsoft Outlook 2002, 2002/XP and Microsoft Outlook Express as well as Mac OS X Mailer, Lotus Domino client, and Netscape
- You service client will also have a Java client on Microsoft Windows 98, ME, 2000, NT, or XP and Max OS 9, X, and Linux.
- a personal profile that may be updated as described herein could include a wide variety of data fields including, by way of example but not limitation, name, important anniversaries, home address, business address, home phone, home fax, cell phone, business phone, business fax, personal email, business email, favorite charities, wish lists, clothing sizes, favorite colors, favorite wines, favorite foods, etc.
- Each field can be set as public, open to a number of users, or private. For example, you might make your cell phone available to all of your professional contacts, but only allow your spouse access to your wish lists.
- fields can be lumped into categories, such as personal or business, and users can be granted access based upon whether they are designated as personal or business contacts, for example.
- FIGS. 7A and 7B are intended to provide an overview of computer hardware and other operating components suitable for performing the methods of the invention described herein, but is not intended to limit the applicable environments. Similarly, the computer hardware and other operating components may be suitable as part of the apparatuses of the invention described herein.
- the invention can be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, wireless devices, and the like.
- the invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- FIG. 7A depicts a system on which a distributed management framework for personal attributes may be implemented.
- FIG. 7A depicts a system on which a distributed management framework for personal attributes may be implemented.
- FIG. 7A depicts a networked system 700 that includes several computer systems coupled together through a network 702, such as the Internet.
- the term "Internet” as used herein refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web).
- HTTP hypertext transfer protocol
- HTML hypertext markup language
- the web server 704 is typically at least one computer system which operates as a server computer system and is configured to operate with the protocols of the world wide web and is coupled to the Internet.
- the web server system 704 can be a conventional server computer system.
- the web server 704 can be part of an ISP which provides access to the Internet for client systems.
- the web server 704 is shown coupled to the server computer system 706 which itself is coupled to web content 708, which can be considered a form of a media database. While two computer systems 704 and 706 are shown in FIG. 7A, the web server system 704 and the server computer system 706 can be one computer system having different software components providing the web server functionality and the server functionality provided by the server computer system 706, which will be described further below.
- Access to the network 702 is typically provided by Internet service providers (ISPs), such as the ISPs 710 and 716.
- ISPs Internet service providers
- Users on client systems, such as client computer systems 712, 718, 722, and 726 obtain access to the Internet through the ISPs 710 and 716.
- Access to the Internet allows users of the client computer systems to exchange information, receive and send e-mails, and view documents, such as documents which have been prepared in the HTML format.
- These documents are often provided by web servers, such as web server 704, which are referred to as being "on" the Internet.
- web servers are provided by the ISPs, such as ISP 710, although a computer system can be set up and connected to the Internet without that system also being an ISP.
- Client computer systems 712, 718, 722, and 726 can each, with the appropriate web browsing software, view HTML pages provided by the web server 704.
- the ISP 710 provides Internet connectivity to the client computer system 712 through the modem interface 714, which can be considered part of the client computer system 712,
- the client computer system can be a personal computer system, a network computer, a web TV system, or other computer system.
- FIG. 7A shows the modem interface 714 generically as a "modem,” the interface can be an analog modem, isdn modem, cable modem, satellite transmission interface (e.g. "direct PC"), or other interface for coupling a computer system to other computer systems.
- modem can be an analog modem, isdn modem, cable modem, satellite transmission interface (e.g. "direct PC"), or other interface for coupling a computer system to other computer systems.
- the ISP 716 provides Internet connectivity for client systems 718, 722, and 726, although as shown in FIG. 7A, the connections are not the same for these three computer systems.
- Client computer system 718 is coupled througB a modem interface 720 while client computer systems 722 and 726 are part of a LAN 730.
- Client computer systems 722 and 726 are coupled to the LAN 730 through network interfaces 724 and 728, which can be ethernet network or other network interfaces.
- the LAN 730 is also coupled to a gateway computer system 732 which can provide firewall and other
- This gateway computer system 732 is coupled to the ISP 716 to provide Internet connectivity to the client computer systems 722 and 726.
- the gateway computer system 732 can be a conventional server computer system.
- a server computer system 734 can be directly coupled to the LAN 730 through a network interface 736 to provide files 738 and other services to the clients 722 and
- FIG. 7B depicts a computer system 740 for use in the system 700 (FIG. 7A).
- the computer system 740 may be a conventional computer system that can be used as a client computer system or a server computer system or as a web server system.
- Such a computer system can be used to perform many of the functions of an Internet service provider, such as ISP
- the computer system 740 includes a computer 742, I/O devices 744, and a display device 746.
- the computer 742 includes a processor 748, a communications interface 750, memory 752, display controller 754, non-volatile storage 756, and I/O controller 758.
- the computer system 740 may be couple to or include the FO devices
- the computer 742 interfaces to external systems through the communications interface 750, which may include a modem or network interface. It will be appreciated that the communications interface 750 can be considered to be part of the computer system 740 or a part of the computer 742.
- the communications interface can be an analog modem, ISDN modem, cable modem, token ring interface, satellite transmission interface (e.g. "direct PC"), or other interfaces for coupling a computer system to other computer systems.
- the processor 748 may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or Motorola power PC microprocessor.
- the memory 752 is coupled to the processor 748 by a bus 760.
- the memory 752 can be dynamic random access memory (DRAM) and can also include static ram (SRAM).
- the bus 760 couples the processor 748 to the memory 752, also to the non- volatile storage 756, to the display controller 754, and to the I/O controller 758.
- the I/O devices 744 can include a keyboard, disk drives, printers, a scanner, and other input and output devices, including a mouse or other pointing device.
- the display controller 754 may control in the conventional manner a display on the display device 746, which can be, for example, a cathode ray tube (CRT) or liquid crystal display (LCD).
- the display controller 754 and the I/O controller 758 can be implemented with conventional well known technology.
- the non- volatile storage 756 is often a magnetic hard disk, an optical disk, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory 752 during execution of software in the computer 742.
- machine-readable medium or “computer- readable medium” includes any type of storage device that is accessible by the processor 748 and also encompasses a carrier wave that encodes a data signal.
- Objects, methods, inline caches, cache states and other object-oriented components may be stored in the non- volatile storage 756, or written into memory 752 during execution of, for example, an object-oriented software program.
- the components illustrated in, for example, FIGS. 1-6 can be instantiated on the computer system 740.
- the computer system 740 is one example of many possible computer systems which have different architectures.
- personal computers based on an Intel microprocessor often have multiple buses, one of which can be an I/O bus for the peripherals and one that directly connects the processor 748 and the memory 752 (often referred to as a memory bus).
- the buses are connected together through bridge components that perform any necessary translation due to differing bus protocols.
- Network computers are another type of computer system that can be used with the present invention.
- Network computers do not usually include a hard disk or other mass storage, and the executable programs are loaded from a network connection into the memory 752 for execution by the processor 748.
- a Web TV system which is known in the ait, is also considered to be a computer system according to the present invention, but it may lack some of the features shown in FIG. 7B, such as certain input or output devices.
- a typical computer system will usually include at least a processor, memory, and a bus coupling the memory to the processor.
- the computer system 740 is controlled by operating system software which includes a file management system, such as a disk operating system, which is part of the operating system software.
- FIGS. 8 A to 8F depict examples of components of a system capable of distributed management of personal attributes. The components depicted in the examples of FIGS. 8 A to 8F could be combined in one system, such as the system depicted in FIG. 1, and a subset of the FIGS.
- FIGS. 8A to 8F could be used.
- Other components such as alternative configurations of clients, could be included in a system that includes all or a subset of the components depicted in FIGS. 8A to 8F.
- an exhaustive list of all possible client configurations has not been attempted, but one of skill in the art should recognize, using the six non-limiting examples provided, that alternatives are likely and that any known or convenient configuration could be used.
- FIG. 8A depicts an example of a system 800A.
- the system 800A includes a network 804, and a client 810.
- the client 810 includes a client communication service 812, an address book 814, a sync module 818, and mobile devices 808-1 to 808-N (hereinafter, mobile devices 808) .
- FIG. 8A is intended to illustrate that the client 810 may include personal attributes in, by way of example but not limitation, the address book 814, and that the client 810 can synchronize one or more mobile devices 808 with the personal attributes.
- the client communication service 812 may include a polling service, or some other push- or pull-model service.
- FIG. 8B depicts an example of a system 800B.
- the system 800B includes a network 804, and a client 810.
- the client 810 includes a client communication service 812, an address book
- FIG. 8B is intended to illustrate that personal attributes in, by way of example but not limitation, the address book 814 may be accessible through the plugin 816.
- FIG. 8C depicts an example of a system 800C.
- the system 800C includes a network 804, and a client 810.
- the client 810 includes a client communication service 812, an address book
- FIG. 8C is intended to illustrate that a client 810 may include a mobile device that is coupled to personal attributes via the network 804.
- FIG. 8D depicts an example of a system 800D.
- the system 800D includes a network 804, and a client 810.
- the client 810 includes a client communication service 812, an address book 814, a web-based mail/address book interface 820, and a PAR database 822.
- the web- based mail/address book interface 820 may be one of a plurality of interfaces for a community of users.
- FIG. 8D is intended to illustrate that the client 810 may include a web-based mail/address book interface that is coupled to the client communication service 812 through the network 804.
- Examples of the system 810 include, by way of example but not limitation, Mozilla, Netscape 8, and Thunderbird.
- FIG. 8E depicts an example of a system 800E.
- the system 800E includes a network 804, a client 810, and a server 824.
- the client 810 includes a web based mail/address book server 803, a web based client service 805, a web based mail/address book interface 820, a web based client (PAR) database 841, and a backend mail and address book database 842.
- FIG. 8E is intended to illustrate that the client 810 may include a web-based mail/address book server, and that the client service may be web-based. It should be noted that although the example of FIG. 8E includes the PAR database 841, the system 800E is likely to also include a PIM database.
- FIG. 8F depicts an example of a system 800F.
- the system 800F includes a service provider 802, a network 804, a client 810, a server 824, a service provider 826, and a server 830.
- the client 810 includes a web based mail/address book user 820.
- the server 824 includes a web based mail/address book server 803, a web based client service 805, and a backend mail and address book database 842.
- the server 830 includes a linking server 832 and a web based client (PAR) database 841.
- the service provider 826 couples the server 824 to the network 804.
- the service provider 802 couples the server 830 to the network 804.
- FIG. 8F is intended to illustrate that the web-based client (PAR) database 841 (FIG. 8E) can be coupled to the client 810 via the service provider 802 (FIG. 8F).
- FIG. 8F includes the PAR database 841, the system 800F is likely to also include a PIM database.
- the PAR database 841 could be distributed (e.g., part of the PAR database could be on the server 824).
- FIG. 9 depicts a system 900 for distributed management of personal attributes.
- the system 900 includes a server 902, a network 904, and a client 910.
- the server 902 may include communication APIs.
- the APIs may be categorized into logical groups, e.g., setup, permissions, authentication, personal attributes, communication, mobile devices, user, and error. The APIs are discussed later with reference to FIGS. 10 and 11.
- the network 904 couples the server 902 to the client 910.
- the client 910 includes a client communication service module 912, a client
- the client communication service module 912 may or may not include an optional PIM plugin 924.
- the installer module 916 may or may not include optional PIM plugins 930 for Outlook 931, Mac Address book 932, Palm Desktop 933, Motorola Mobile 934, et al. (depicted for illustrative purposes only). Although only a single PIM is depicted in FIG. 9, multiple PIMs, such as address books or other databases, may be found on the client 910 in another embodiment.
- FIG. 10 depicts a conceptual view 1000 of engines and transactions associated with the system of FIG. 9.
- the conceptual view 1000 includes a setup engine 1010, a permissions engine 1020, an authentication engine 1030, a personal attributes engine
- FIG. 11 depicts several examples 1100 of tables that may be included in a database of the system of FIG. 9.
- the examples 1100 of tables include a user table 1102, a field table 1104, a device table 1106, a permissions table 1108, a sync table 1110, a contacts table 1112, and a transaction table 1114.
- create user API 1012 may include multiple parameters such as, by way of example but not limitation, username, password, firstname, lastname, and email. This API may result in an entry in the user table 1102.
- the add destination to existing user API 1014 may include parameters such as, by way of example but not limitation, username, password, destinationtype (which may be a physical device or a logical device), and destinationname. This API may result in an entry in the device table 1106.
- the add mobile destination to existing user API 1016 may include parameters such as, by way of example but not limitation, usemame, password, destinationtype, destinationname. This API may result in an entry in the device table 1106.
- the verify login API 1018 may include parameters such as, by way of example but not limitation, username and password.
- three examples of transactions are associated with the permissions engine 1020: get permissions API 1022, update permissions API 1024, and request sync API 1026. This group of APIs handles the management of a user's permissions. Permissions allow or disallow the sharing of data with other users.
- the get permissions API 1022 may include userid (uid) and deviceid parameters, and return a result with 0..n permissions items.
- the update permissions API 1024 may include the parameters uid, deviceid, grantee id (gid), perm ⁇ field ⁇ , value ⁇ field ⁇ .
- the perm ⁇ field ⁇ has a value of 1' if permission is granted, and '0* if permission is not granted. This API should result in an entry in the permissions table 1108. It should be noted that there could be multiple levels of permissions other than just '0' or T. In any given implementation, any convenient number of permission levels could be used.
- API 1026 may include uid and device id parameters. This API may be used to sync data to a destination that might not have a full set of shared data. The server will handle where to get the data from and the results will be passed to the new destination.
- the add union API 1032 may include the parameters uid, deviceid, and group ID (gid).
- the result of this API is an entry in the contacts table 1112.
- the confirm accept API 1034, confirm deny API 1036, confirm union API 1038, and deny union API 1040 may include the parameters uid, deviceid, and gid, and have predictable results.
- the personal attributes engine 1050 may include the parameters uid, deviceid, and value ⁇ field id ⁇ .
- the server should be capable of creating an entry for the transaction table 1114.
- the confirm destination change API 1054 may include the parameters uid and deviceid, and has predictable results.
- the request for PAR data API 1056 may include the parameters uid, deviceid, and field ⁇ field id ⁇ .
- multiple sets of ⁇ field id ⁇ data may be passed in a single set of parameters.
- the server may initiate requests for all fields. This API should result in an entry in the transaction table 1114.
- the server can be asked to resend all data sent to a client, allowing repopulation of a PIM or destination store. In an embodiment, this is accomplished using a transaction history log to determine what information has been provided in the past.
- two examples of transactions is associated with the mobile devices engine 1060: poll for changes API 1062 and accept changes 1064.
- This group of commands handles checking the server periodically for changes.
- the parameters of the poll for changes API 1062 may include uid, deviceid, and version.
- the result should include one transaction id item if there is at least one transaction item.
- the result should contain 0..n transaction items from the transaction table 1114.
- the parameters of the accept changes API 1064 may include uid, deviceid, and version.
- the result should include one transaction id item if there is at least one transaction.
- the accept changes API 1064 does not implement polling (e.g., it uses a push model).
- poll for changes API 1072 handles checking the server periodically for changes.
- the poll for changes API 1072 and accept changes API 1074 are similar to the poll for changes API 1062 and accept changes API 1064, described previously.
- the delete transaction API 1074 may include the parameters uid, deviceid, and transaction id, and the results are predictable.
- authenticate user API 1082 handles the management of finding users.
- the parameters of the authenticate user API 1082 are uid and deviceid, and the results are predictable.
- the parameters of the find user API 1084 my include, by way of example but not limitation, uid, deviceid, username, firstname, and lastname, and the results are 0..n user items.
- the parameters of the get unions API 1086 are uid and deviceid, and the results are 0..n user items.
- the parameters of the get fields API 1088 are uid and deviceid, and the result will include
- 1..n group objects which include 1..n field objects.
- This API is used to get field data from the field table 1104 of the server, which is separated into field groups so the client can use this for display. This will also include the attributes for the fields.
- the system may also include an error transaction (not shown), which can provide an error page with error results.
- FIG. 12 depicts a flowchart 1200 of an example of a method for startup in a distributed management of personal attributes framework.
- the flowchart 1200 starts at module 1202 with reading UID and DevicelD from local or remote cache, file, database, or the like.
- the flowchart 1200 continues at module 1204 with calling a server method to request permissions for the UID. If the server cannot be contacted, but permissions are stored locally (1206-Y), then the flowchart 1200 continues at module 1208 with reading permissions from a local file. In either case, the flowchart 1200 continues to decision point 1210 where it is determined whether PAR data is stored locally.
- FIG. 13 depicts a flowchart 1300 of an example of a method for adding a user or destination in a distributed management of personal attributes framework. In the example of FIG.
- the flowchart 1300 starts at decision point 1302 where it is determined whether credentials are stored locally. If the credentials are stored locally (1302-Y), then the flowchart 1300 continues to module 1308 where the server verifies that the credentials are valid. If the credentials are not stored locally (1302-N), then the flowchart 1300 continues to decision point 1304 where it is determined whether the user is a new user. The case where the user is a new user (1304- Y) is described later. If it is determined that the user is not a new user (1304-N), then the flowchart 1300 continues to module 1306 where the user is prompted for credentials at the client, and the flowchart 1300 continues to module 1308 where the server verifies that the credentials are valid. The flowchart 1300 continues from the module 1308 to decision point 1310 where it is determined whether the credentials are valid. If the credentials are valid (1310- Y), then the flowchart 1300 ends at module 1314 where a client communications service and/or
- the client service may already be running, obviating the need to start the client service at module 1314. This may allow multiple clients to connect through a single client service (e.g., a linking server). If the credentials are not valid (1310-N), then the flowchart 1300 continues to decision point 1312 where it is determined whether the client intends to work offline. If the client does not intend to work offline (1312-N), then the flowchart continues from module 1306 as described previously. If the client intends to work offline (1312- Y), then the flowchart 1300 ends at module 1314 as described previously.
- the flowchart 1300 continues to module 1316 where the client is prompted for new credentials and destination information.
- the flowchart 1300 continues to module 1318 where the server verifies the new credentials and destination information are valid.
- the flowchart 1300 continues to decision point 1320 where it is determined whether the new credentials and destination information are valid. If it is determined that the new credentials and destination information are not valid (1320-N), then the flowchart continues to decision point 1322 where it is determined whether the client intends to work offline (if not, the flowchart 1300 continues to module 1316 as described previously; if so, the flowchart 1300 continues to module 1314 as described previously).
- the flowchart 1300 continues to module 1326 where the user is added to the server's user table, to module 1328 where the server returns UID and Device ID, to module 1330 where the client writes the data to PAR, and to module 1314, which was described previously.
- FIG. 14 depicts a flowchart 1400 of an example of a method for setting permissions in a distributed management of personal attributes framework.
- the flowchart 1400 starts at module 1402 where a grantor selects via destination UI one or more grantees from a contact list.
- the flowchart 1400 continues to module 1404 where the user enables or disables attribute permissions for selected contacts.
- the flowchart 1400 continues to module 1406 where a server method is called to update permission settings on the server.
- the flowchart 1400 continues to module 1408 where the server updates a permissions table as specified by the grantor.
- the flowchart 1400 continues to modules 1410 where for each destination owned by the grantor a new permission setting is sent.
- the flowchart 1400 ends at module 1412 where for each device owned by the grantee new attribute values are sent and (1412-1) if the grantor is granting permission, the attribute value sent at module 1408 is sent and (1412-2) if the grantor is taking away permissions, a null value is sent.
- FIGS. 15A and 15B depict a flowchart 1500 of an example of a method for changing attributes in a distributed management of personal attributes framework.
- the flowchart 1500 starts at module 1502 whether a grantor updating one or more attributes in their PAR.
- the flowchart 1500 continues to decision point 1504 where it is determined whether permissions have been cached. If permissions have been cached (1504- Y), then the flowchart 1500 continues to decision point 1506 where it is determined whether permission has been granted (if not, the flowchart 1500 ends; if so, the flowchart 1500 continues to module 1508). If permissions have not been cached (1504-Y), then the flowchart 1500 continues to module 1508 where changes and UID are sent from the client to the server.
- the flowchart 1500 continues to module 1510 where grantees for attributes of the grantor are selected from a permissions table, to module 1512 where grantees are joined with attribute changes, and to module 1514 where attribute transactions are created.
- the flowchart 1500 continues to decision point 1516 where it is determined whether to wait for polling. If it is determined that the server should wait for polling (1516-Y), then the flowchart 1500 repeats decision point 1516 until it is determined that polling occurred. If it is determined that the server should not wait for polling (1516-N), or that polling has occurred, then the flowchart 1500 continues to module 1518 where attribute transactions changes are sent to devices of the grantee (e.g., linking server).
- the flowchart 1500 ends at 1520 with the client updating the recipient of the changed attribute.
- the flowchart continues at module 1510 as described, but also continues to module 1522 (FIG. 15B) where a device of the grantor is selected from the device table at the server.
- the flowchart 1500 continues module 1524 where the server joins with the attribute changes and create PAR transactions.
- the flowchart 1500 continues to decision point 1526 where the server waits for polling (or not) and to module 1528 where PAR changes are sent to devices of the grantor.
- the flowchart 1500 ends at module 1530 with updating PAR.
- FIG. 16 depicts a flowchart 1600 of an example of a method for making connections in a distributed management of personal attributes framework.
- the flowchart 1600 starts at module 1602 where a requestor enters a username into a UI or a lookup is performed at a client.
- the flowchart 1600 continues to module 1604 where a contact is added at the client.
- the flowchart 1600 continues to decision point 1606 where it is determined whether the requestee has the requestor on a do not call list. If so (1606-Y), the flowchart ends and the requestor may or may not receive notification. If not (1606-N), then the server sends a request to the requestee.
- the flowchart 1600 continues to modules 1610 where the requestee is prompted, and to module 1612 where the requestee sends a response to the server.
- the flowchart 1600 continues to decision point 1614 where it is determined whether the requestee accepted the request. If so (1614-Y), then the flowchart 1600 continues to module 1616 where the contact flag is set at the server, and the flowchart 1600 ends at module 1618 where devices owned by grantor and grantee are informed. If not (1614-N), then the flowchart 1600 continues to decision point 1620 where it is determined whether the requestee not only declines the request but also adds the requestor to a do not call list. If it is determined that the requestor is not to be added to the do not call list (1620-N) then the flowchart 1600 ends with the requestee not honoring the request. If it is determined that the requestor is to be added to the do not call list ( 1620- Y) then the flowchart 1600 ends at module 1622 with setting the do not call flag.
- FIG. 17 depicts an example of a system 1700 for distribution of personal data.
- the system 1700 includes a server 1702, a network
- the server 1702 includes a permissions database 1712 and a trust mechanism 1714.
- the trust mechanism 1714 may be implemented in a number of ways. For example, the trust mechanism 1714 may attempt to verify whether data is coming from the source (e.g., the grantor 1706). If that is not possible, the trust mechanism 1714 may attempt to verify a local signed copy. If that is not possible, the trust mechanism 1714 may attempt to verify data by comparing two third parties (since it is more likely that if two third parties have identical data, that data is valid).
- the grantor 1706 includes a personal attributes database 1716.
- the grantees 1708 each include personal attributes databases 1718-1 to 1718-N (hereinafter referred to collectively as granted personal attributes database 1718).
- the grantees 1708 may or may not be agents that have significant data stores of personal information.
- the granted personal attributes database 1718 may include a PIM, such as, by way of example but not limitation, an address book.
- the grantor 1706 has presumably granted permission to some or all of the grantor's personal attributes to the grantees 1708.
- the permissions are stored in the permissions database 1712.
- the server 1702 does not include any of the personal attributes.
- this reduces the burden on the server 1702 to store large amounts of data.
- data mining at the server can be less harmful.
- the requestor 1710 asks for permission to access some or all of the grantor's personal attributes.
- the grantor may choose to share with the grantee (e.g., without receiving a request).
- the grantor 1706 or an agent of the grantor 1706 may grant permission (or permission may be granted automatically for public data, or permission may be granted in advance).
- the server 1702 will attempt to obtain the information on behalf of the requestor 1710.
- the personal attributes database 1716 may or may not be available.
- the server 1702 can access the permissions database 1712 to determine which grantee has been given permission to which information. Since the server 1702 knows which grantee has been given permission to which information, the server 1702 can facilitate providing the requestor 1710 with the information from the granted personal attributes database 1718. In some cases, such as when a person switches off a computer with personal attributes and goes on vacation, the system 1700 can provide the requestor 1710 with requested data in a matter of minutes, instead days or even months.
- FIG. 18 depicts a flowchart 1800 of an example of a method for obtaining personal data from a plurality of grantees.
- the flowchart 1800 starts at module 1802 where a client requests data from a server.
- the flowchart 1800 continues at module 1804 where the server forms a map of the final data set to create using a permissions database.
- the permissions database may include a table that identifies a grantor, a grantee, and an attribute for which permission is granted.
- a grantor may grant permission to different personal information for any reason.
- the flowchart 1800 continues at modules 1806-1 to 1806-N where parts of the requested data are obtained from clients 1 to N.
- the data cannot be obtained from a single client because that client was not granted permission to the same data. Also, it may be that a client changed a field that was controlled by the grantor so the new data cannot be trusted (and a different client must be contacted to get the trusted data). There could be any number of reasons why multiple clients provide different parts of the requested data.
- the flowchart 1800 continues at module 1808 where the data is sent back to the requesting client.
- the data may be assembled at the server, or the data could be sent directly.
- the server may or may not be notified by the requesting client when all data is received.
- the server may or may not be notified by the sending clients in an embodiment where the server does not assemble the data for transmission to the requesting client.
- a user who loses data can repopulate the data using this technique. For example, if a user's email program became corrupted or otherwise lost data, the user would be able to reinstall and repopulate. The user could even repopulate personal data so long as another user or device had access to the data.
- a user who begins using a new device, but who does not have access to another device with personal data stored thereon can populate the new device using this technique. Users who attempt to change data that was received from another user might be doing so unintentionally. Such users could receive a warning that they are changing data that is controlled by another user (and asked whether they really want to change the data).
- the transaction log can serve as a snapshot of the state of the personal attributes on a client.
- the transaction log can be useful for speeding repopulation if all of the data is needed again.
- the transaction log could be searched to determine who controls what data, times when the controller of data updated the data, or some other information.
- the present invention also relates to apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, or, advantageously, it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
- ROMs read-only memories
- RAMs random access memories
- EPROMs electrically erasable programmable read-only memories
- EEPROMs electrically erasable programmable read-only memory
- magnetic or optical cards or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
- the algorithms and displays presented herein
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA 2602376 CA2602376A1 (en) | 2005-04-04 | 2006-04-04 | Distributed management framework for personal attributes |
EP06740523A EP1872284A2 (en) | 2005-04-04 | 2006-04-04 | Distributed management framework for personal attributes |
JP2008505481A JP2009503625A (en) | 2005-04-04 | 2006-04-04 | Distributed management framework for personal attributes |
AU2006231561A AU2006231561A1 (en) | 2005-04-04 | 2006-04-04 | Distributed management framework for personal attributes |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US66830205P | 2005-04-04 | 2005-04-04 | |
US60/668,302 | 2005-04-04 | ||
US11/397,817 US7461071B2 (en) | 2005-04-04 | 2006-04-03 | Distributed management framework for personal attributes |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2006108012A2 true WO2006108012A2 (en) | 2006-10-12 |
WO2006108012A3 WO2006108012A3 (en) | 2009-04-16 |
Family
ID=37071822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2006/012582 WO2006108012A2 (en) | 2005-04-04 | 2006-04-04 | Distributed management framework for personal attributes |
Country Status (6)
Country | Link |
---|---|
US (5) | US7461071B2 (en) |
EP (1) | EP1872284A2 (en) |
JP (1) | JP2009503625A (en) |
AU (1) | AU2006231561A1 (en) |
CA (1) | CA2602376A1 (en) |
WO (1) | WO2006108012A2 (en) |
Families Citing this family (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4386732B2 (en) | 2002-01-08 | 2009-12-16 | セブン ネットワークス, インコーポレイテッド | Mobile network connection architecture |
US7917468B2 (en) | 2005-08-01 | 2011-03-29 | Seven Networks, Inc. | Linking of personal information management data |
US7853563B2 (en) | 2005-08-01 | 2010-12-14 | Seven Networks, Inc. | Universal data aggregation |
US8468126B2 (en) | 2005-08-01 | 2013-06-18 | Seven Networks, Inc. | Publishing data in an information community |
US8447630B2 (en) * | 2004-02-26 | 2013-05-21 | Payment Pathways, Inc. | Systems and methods for managing permissions for information ownership in the cloud |
US8010082B2 (en) | 2004-10-20 | 2011-08-30 | Seven Networks, Inc. | Flexible billing architecture |
WO2006045102A2 (en) | 2004-10-20 | 2006-04-27 | Seven Networks, Inc. | Method and apparatus for intercepting events in a communication system |
US7706781B2 (en) | 2004-11-22 | 2010-04-27 | Seven Networks International Oy | Data security in a mobile e-mail service |
FI117152B (en) | 2004-12-03 | 2006-06-30 | Seven Networks Internat Oy | E-mail service provisioning method for mobile terminal, involves using domain part and further parameters to generate new parameter set in list of setting parameter sets, if provisioning of e-mail service is successful |
US7877703B1 (en) | 2005-03-14 | 2011-01-25 | Seven Networks, Inc. | Intelligent rendering of information in a limited display environment |
US20070162450A1 (en) * | 2005-04-04 | 2007-07-12 | Anthony Siress | Query object permissions establishment system and methods |
US7461071B2 (en) * | 2005-04-04 | 2008-12-02 | Younite, Inc. | Distributed management framework for personal attributes |
US7796742B1 (en) | 2005-04-21 | 2010-09-14 | Seven Networks, Inc. | Systems and methods for simplified provisioning |
US8438633B1 (en) | 2005-04-21 | 2013-05-07 | Seven Networks, Inc. | Flexible real-time inbox access |
WO2006136660A1 (en) | 2005-06-21 | 2006-12-28 | Seven Networks International Oy | Maintaining an ip connection in a mobile network |
US8069166B2 (en) | 2005-08-01 | 2011-11-29 | Seven Networks, Inc. | Managing user-to-user contact with inferred presence information |
US7769395B2 (en) | 2006-06-20 | 2010-08-03 | Seven Networks, Inc. | Location-based operations and messaging |
US20080118048A1 (en) * | 2006-11-17 | 2008-05-22 | John Lowe | Directory service for locating stale acquaintances |
US8463813B2 (en) * | 2007-04-12 | 2013-06-11 | Younite, Inc. | Individualized data sharing |
US7698445B2 (en) * | 2007-04-12 | 2010-04-13 | Younite, Inc. | Client agents for obtaining attributes from unavailable clients |
CN101681252B (en) * | 2007-05-24 | 2017-09-01 | 费斯布克公司 | System and method for providing privacy settings for the application associated with user profiles |
US8693494B2 (en) | 2007-06-01 | 2014-04-08 | Seven Networks, Inc. | Polling |
US8805425B2 (en) | 2007-06-01 | 2014-08-12 | Seven Networks, Inc. | Integrated messaging |
WO2009033182A1 (en) * | 2007-09-07 | 2009-03-12 | Facebook, Inc. | Dynamically updating privacy settings in a social network |
US8458727B2 (en) * | 2007-11-05 | 2013-06-04 | Microsoft Corporation | Asynchronous client to server updates |
US8364181B2 (en) | 2007-12-10 | 2013-01-29 | Seven Networks, Inc. | Electronic-mail filtering for mobile devices |
US8793305B2 (en) | 2007-12-13 | 2014-07-29 | Seven Networks, Inc. | Content delivery to a mobile device from a content service |
US9002828B2 (en) | 2007-12-13 | 2015-04-07 | Seven Networks, Inc. | Predictive content delivery |
US8107921B2 (en) | 2008-01-11 | 2012-01-31 | Seven Networks, Inc. | Mobile virtual network operator |
US8862657B2 (en) | 2008-01-25 | 2014-10-14 | Seven Networks, Inc. | Policy based content service |
US20090193338A1 (en) | 2008-01-28 | 2009-07-30 | Trevor Fiatal | Reducing network and battery consumption during content delivery and playback |
US7515899B1 (en) | 2008-04-23 | 2009-04-07 | International Business Machines Corporation | Distributed grid computing method utilizing processing cycles of mobile phones |
US8787947B2 (en) | 2008-06-18 | 2014-07-22 | Seven Networks, Inc. | Application discovery on mobile devices |
US8078158B2 (en) | 2008-06-26 | 2011-12-13 | Seven Networks, Inc. | Provisioning applications for a mobile device |
US8135670B2 (en) * | 2008-07-22 | 2012-03-13 | International Business Machines Corporation | Embedded change logging for data synchronization |
US8909759B2 (en) | 2008-10-10 | 2014-12-09 | Seven Networks, Inc. | Bandwidth measurement |
US8752186B2 (en) | 2009-07-23 | 2014-06-10 | Facebook, Inc. | Dynamic enforcement of privacy settings by a social networking system on information shared with an external system |
US9043731B2 (en) | 2010-03-30 | 2015-05-26 | Seven Networks, Inc. | 3D mobile user interface with configurable workspace management |
US8726335B2 (en) * | 2010-06-28 | 2014-05-13 | Fujitsu Limited | Consigning authentication method |
US9077630B2 (en) | 2010-07-26 | 2015-07-07 | Seven Networks, Inc. | Distributed implementation of dynamic wireless traffic policy |
US8838783B2 (en) | 2010-07-26 | 2014-09-16 | Seven Networks, Inc. | Distributed caching for resource and mobile network traffic management |
EP2599003B1 (en) | 2010-07-26 | 2018-07-11 | Seven Networks, LLC | Mobile network traffic coordination across multiple applications |
WO2012018556A2 (en) | 2010-07-26 | 2012-02-09 | Ari Backholm | Mobile application traffic optimization |
US9008693B2 (en) | 2010-09-24 | 2015-04-14 | Nokia Corporation | Method and apparatus for information aggregation around locations |
US8204953B2 (en) | 2010-11-01 | 2012-06-19 | Seven Networks, Inc. | Distributed system for cache defeat detection and caching of content addressed by identifiers intended to defeat cache |
WO2012061430A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Distributed management of keep-alive message signaling for mobile network resource conservation and optimization |
US9060032B2 (en) | 2010-11-01 | 2015-06-16 | Seven Networks, Inc. | Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic |
GB2499534B (en) | 2010-11-01 | 2018-09-19 | Seven Networks Llc | Caching adapted for mobile application behavior and network conditions |
US9330196B2 (en) | 2010-11-01 | 2016-05-03 | Seven Networks, Llc | Wireless traffic management system cache optimization using http headers |
WO2012060995A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
US8843153B2 (en) | 2010-11-01 | 2014-09-23 | Seven Networks, Inc. | Mobile traffic categorization and policy for network use optimization while preserving user experience |
US8484314B2 (en) | 2010-11-01 | 2013-07-09 | Seven Networks, Inc. | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
US8166164B1 (en) | 2010-11-01 | 2012-04-24 | Seven Networks, Inc. | Application and network-based long poll request detection and cacheability assessment therefor |
EP3422775A1 (en) | 2010-11-22 | 2019-01-02 | Seven Networks, LLC | Optimization of resource polling intervals to satisfy mobile device requests |
CA2798523C (en) | 2010-11-22 | 2015-02-24 | Seven Networks, Inc. | Aligning data transfer to optimize connections established for transmission over a wireless network |
US9325662B2 (en) | 2011-01-07 | 2016-04-26 | Seven Networks, Llc | System and method for reduction of mobile network traffic used for domain name system (DNS) queries |
JP5644543B2 (en) * | 2011-01-26 | 2014-12-24 | 富士通株式会社 | Access control data editing support program, access control data editing support device, and access control data editing support method |
GB2505103B (en) | 2011-04-19 | 2014-10-22 | Seven Networks Inc | Social caching for device resource sharing and management cross-reference to related applications |
US8832228B2 (en) | 2011-04-27 | 2014-09-09 | Seven Networks, Inc. | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
US8621075B2 (en) | 2011-04-27 | 2013-12-31 | Seven Metworks, Inc. | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system |
EP2737742A4 (en) | 2011-07-27 | 2015-01-28 | Seven Networks Inc | Automatic generation and distribution of policy information regarding malicious mobile traffic in a wireless network |
US20130066922A1 (en) * | 2011-09-09 | 2013-03-14 | WhitePages, Inc. | Managing data received from multiple sources for generating a contact profile for synchronizing with the multiple sources |
CN103067251B (en) * | 2011-10-20 | 2017-04-05 | 华为技术有限公司 | A kind of method and system for safeguarding associated person information |
US8918503B2 (en) | 2011-12-06 | 2014-12-23 | Seven Networks, Inc. | Optimization of mobile traffic directed to private networks and operator configurability thereof |
US8977755B2 (en) | 2011-12-06 | 2015-03-10 | Seven Networks, Inc. | Mobile device and method to utilize the failover mechanism for fault tolerance provided for mobile traffic management and network/device resource conservation |
US9277443B2 (en) | 2011-12-07 | 2016-03-01 | Seven Networks, Llc | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
US9009250B2 (en) | 2011-12-07 | 2015-04-14 | Seven Networks, Inc. | Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation |
US8861354B2 (en) | 2011-12-14 | 2014-10-14 | Seven Networks, Inc. | Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization |
US9021021B2 (en) | 2011-12-14 | 2015-04-28 | Seven Networks, Inc. | Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system |
US9832095B2 (en) | 2011-12-14 | 2017-11-28 | Seven Networks, Llc | Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic |
WO2013103988A1 (en) | 2012-01-05 | 2013-07-11 | Seven Networks, Inc. | Detection and management of user interactions with foreground applications on a mobile device in distributed caching |
US9203864B2 (en) | 2012-02-02 | 2015-12-01 | Seven Networks, Llc | Dynamic categorization of applications for network access in a mobile network |
US9326189B2 (en) | 2012-02-03 | 2016-04-26 | Seven Networks, Llc | User as an end point for profiling and optimizing the delivery of content and data in a wireless network |
US8812695B2 (en) | 2012-04-09 | 2014-08-19 | Seven Networks, Inc. | Method and system for management of a virtual network connection without heartbeat messages |
WO2013155208A1 (en) | 2012-04-10 | 2013-10-17 | Seven Networks, Inc. | Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network |
US9401886B2 (en) * | 2012-05-30 | 2016-07-26 | International Business Machines Corporation | Preventing personal information from being posted to an internet |
US8818347B2 (en) * | 2012-07-10 | 2014-08-26 | Telefonaktiebolaget L M Ericsson (Publ) | Node and method for service specific management |
US8775631B2 (en) | 2012-07-13 | 2014-07-08 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
US9251145B2 (en) * | 2012-08-01 | 2016-02-02 | International Business Machines Corporation | Content management |
US9161258B2 (en) | 2012-10-24 | 2015-10-13 | Seven Networks, Llc | Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion |
US20140177497A1 (en) | 2012-12-20 | 2014-06-26 | Seven Networks, Inc. | Management of mobile device radio state promotion and demotion |
US9271238B2 (en) | 2013-01-23 | 2016-02-23 | Seven Networks, Llc | Application or context aware fast dormancy |
US8874761B2 (en) | 2013-01-25 | 2014-10-28 | Seven Networks, Inc. | Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
US9326185B2 (en) | 2013-03-11 | 2016-04-26 | Seven Networks, Llc | Mobile network congestion recognition for optimization of mobile traffic |
US20140372375A1 (en) * | 2013-06-13 | 2014-12-18 | Mrinal Desai | Contact data sharing |
US9065765B2 (en) | 2013-07-22 | 2015-06-23 | Seven Networks, Inc. | Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network |
US9535856B2 (en) | 2014-02-21 | 2017-01-03 | International Business Machines Corporation | Data access to a storage tier on a client in a multi-tiered storage system |
JP6376869B2 (en) * | 2014-07-10 | 2018-08-22 | キヤノン株式会社 | Data synchronization system, control method thereof, authorization server, and program thereof |
WO2016033064A2 (en) * | 2014-08-26 | 2016-03-03 | Scott Thompson | Method and system for crowd sourced contact database management |
US10242082B2 (en) * | 2014-12-12 | 2019-03-26 | Microsoft Technology Licensing, Llc | Context-driven multi-user communication |
US20170124152A1 (en) | 2015-11-02 | 2017-05-04 | LeapYear Technologies, Inc. | Differentially private processing and database storage |
JP6152504B1 (en) * | 2016-08-22 | 2017-06-21 | 楽天株式会社 | Management system, management apparatus, management method, program, and non-transitory computer-readable information recording medium |
KR101929948B1 (en) * | 2017-04-07 | 2018-12-18 | 네이버 주식회사 | Method and system for data type based multi-device synchronization |
US10824758B2 (en) * | 2017-11-27 | 2020-11-03 | Accenture Global Solutions Limited | System and method for managing enterprise data |
US11055432B2 (en) | 2018-04-14 | 2021-07-06 | LeapYear Technologies, Inc. | Budget tracking in a differentially private database system |
US10445238B1 (en) * | 2018-04-24 | 2019-10-15 | Arm Limited | Robust transactional memory |
US10430605B1 (en) * | 2018-11-29 | 2019-10-01 | LeapYear Technologies, Inc. | Differentially private database permissions system |
US11188661B2 (en) * | 2018-12-12 | 2021-11-30 | Sap Se | Semi-rule based high performance permission management |
US11755769B2 (en) | 2019-02-01 | 2023-09-12 | Snowflake Inc. | Differentially private query budget refunding |
US10642847B1 (en) | 2019-05-09 | 2020-05-05 | LeapYear Technologies, Inc. | Differentially private budget tracking using Renyi divergence |
US11475018B2 (en) * | 2020-01-22 | 2022-10-18 | Salesforce.Com, Inc. | Determining user and data record relationships based on vector space embeddings |
US11328084B2 (en) | 2020-02-11 | 2022-05-10 | LeapYear Technologies, Inc. | Adaptive differentially private count |
CN111465055B (en) * | 2020-03-30 | 2020-10-09 | 广西民族大学 | Method and system for transmitting data mining algorithm controlled switching message |
US20230289461A1 (en) * | 2020-11-24 | 2023-09-14 | Motorola Solutions, Inc. | System and method for notifying users about publicly available data |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269369B1 (en) * | 1997-11-02 | 2001-07-31 | Amazon.Com Holdings, Inc. | Networked personal contact manager |
US20040088695A1 (en) * | 2002-10-31 | 2004-05-06 | Sony Corporation | Software updating system, information processing apparatus and method, recording medium and program |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826021A (en) * | 1996-09-17 | 1998-10-20 | Sun Microsystems, Inc. | Disconnected write authorization in a client/server computing system |
US7454782B2 (en) | 1997-12-23 | 2008-11-18 | Arcot Systems, Inc. | Method and system for camouflaging access-controlled data |
WO2000022551A1 (en) | 1998-10-13 | 2000-04-20 | Chris Cheah | Method and system for controlled distribution of information over a network |
US7003546B1 (en) | 1998-10-13 | 2006-02-21 | Chris Cheah | Method and system for controlled distribution of contact information over a network |
US20030069874A1 (en) | 1999-05-05 | 2003-04-10 | Eyal Hertzog | Method and system to automate the updating of personal information within a personal information management application and to synchronize such updated personal information management applications |
US6754665B1 (en) * | 1999-06-24 | 2004-06-22 | Sony Corporation | Information processing apparatus, information processing method, and storage medium |
US6526513B1 (en) | 1999-08-03 | 2003-02-25 | International Business Machines Corporation | Architecture for dynamic permissions in java |
AU1356301A (en) * | 1999-11-01 | 2001-05-14 | Lockheed Martin Corporation | System and method for the storage and access of electronic data in a web-based computer system |
JP2001188699A (en) | 1999-12-28 | 2001-07-10 | Ibm Japan Ltd | Data processing system with access control mechanism |
JP3674485B2 (en) * | 2000-09-25 | 2005-07-20 | オムロン株式会社 | Information storage / distribution system and information storage / distribution method |
US20020194100A1 (en) * | 2002-05-17 | 2002-12-19 | Choban Gary M. | Computerized portfolio and assessment system |
JP2002288025A (en) * | 2001-03-26 | 2002-10-04 | Hitachi Information Technology Co Ltd | Personal information registering and browsing system |
US20020174363A1 (en) | 2001-05-17 | 2002-11-21 | International Business Machines Corporation | Method and apparatus for providing an anonymous identity for a user |
JP4099049B2 (en) | 2002-12-16 | 2008-06-11 | 株式会社エヌ・ティ・ティ・ドコモ | Communication method and communication system |
JP2004355376A (en) * | 2003-05-29 | 2004-12-16 | Nec Corp | Method and system for utilizing customer information |
US7234077B2 (en) | 2003-06-24 | 2007-06-19 | International Business Machines Corporation | Rapid restoration of file system usage in very large file systems |
JP2005050286A (en) | 2003-07-31 | 2005-02-24 | Fujitsu Ltd | Network-node machine and information network system |
US6973299B2 (en) * | 2003-08-01 | 2005-12-06 | Microsoft Corporation | Unified contact list |
US8131739B2 (en) * | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
US20050120084A1 (en) * | 2003-10-28 | 2005-06-02 | Yu Hu | Method of and system for creating, maintaining, and utilizing an online universal address book |
US20050154915A1 (en) * | 2004-01-09 | 2005-07-14 | Peterson Matthew T. | Networked computer user identification and authentication apparatus method and system |
US8086572B2 (en) | 2004-03-30 | 2011-12-27 | International Business Machines Corporation | Method, system, and program for restoring data to a file |
US20050234864A1 (en) | 2004-04-20 | 2005-10-20 | Shapiro Aaron M | Systems and methods for improved data sharing and content transformation |
US20050289127A1 (en) | 2004-06-25 | 2005-12-29 | Dominic Giampaolo | Methods and systems for managing data |
KR100784688B1 (en) | 2005-01-26 | 2007-12-12 | 한국전자통신연구원 | Contents Execution Device equipped with Independent Authentication Means and Contents Re-Distribution Method |
US7644086B2 (en) | 2005-03-29 | 2010-01-05 | Sas Institute Inc. | Computer-implemented authorization systems and methods using associations |
US7461071B2 (en) * | 2005-04-04 | 2008-12-02 | Younite, Inc. | Distributed management framework for personal attributes |
WO2006114878A1 (en) | 2005-04-21 | 2006-11-02 | Mitsubishi Electric Corporation | Computer, method for controlling access to compute resource, and access control program |
US20070027953A1 (en) * | 2005-07-26 | 2007-02-01 | Chao-Hung Wu | Electronic mailbox address book sharing system and method for the same |
US20110093340A1 (en) | 2006-01-30 | 2011-04-21 | Hoozware, Inc. | System for providing a service to venues where people perform transactions |
US7698445B2 (en) | 2007-04-12 | 2010-04-13 | Younite, Inc. | Client agents for obtaining attributes from unavailable clients |
-
2006
- 2006-04-03 US US11/397,817 patent/US7461071B2/en active Active
- 2006-04-04 JP JP2008505481A patent/JP2009503625A/en active Pending
- 2006-04-04 AU AU2006231561A patent/AU2006231561A1/en not_active Abandoned
- 2006-04-04 EP EP06740523A patent/EP1872284A2/en not_active Withdrawn
- 2006-04-04 CA CA 2602376 patent/CA2602376A1/en not_active Abandoned
- 2006-04-04 WO PCT/US2006/012582 patent/WO2006108012A2/en active Application Filing
-
2008
- 2008-11-07 US US12/267,240 patent/US8620866B2/en active Active
- 2008-11-07 US US12/267,520 patent/US20090125523A1/en not_active Abandoned
-
2013
- 2013-11-27 US US14/092,741 patent/US8938423B2/en active Active
-
2015
- 2015-01-15 US US14/597,586 patent/US20150128289A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269369B1 (en) * | 1997-11-02 | 2001-07-31 | Amazon.Com Holdings, Inc. | Networked personal contact manager |
US20040088695A1 (en) * | 2002-10-31 | 2004-05-06 | Sony Corporation | Software updating system, information processing apparatus and method, recording medium and program |
Also Published As
Publication number | Publication date |
---|---|
JP2009503625A (en) | 2009-01-29 |
US20060224597A1 (en) | 2006-10-05 |
CA2602376A1 (en) | 2006-10-12 |
US20090125523A1 (en) | 2009-05-14 |
US20140181148A1 (en) | 2014-06-26 |
AU2006231561A1 (en) | 2006-10-12 |
WO2006108012A3 (en) | 2009-04-16 |
US20090119266A1 (en) | 2009-05-07 |
US8620866B2 (en) | 2013-12-31 |
EP1872284A2 (en) | 2008-01-02 |
US20150128289A1 (en) | 2015-05-07 |
US7461071B2 (en) | 2008-12-02 |
US8938423B2 (en) | 2015-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8938423B2 (en) | Distributed management framework for personal attributes | |
US8463813B2 (en) | Individualized data sharing | |
US8224893B2 (en) | System and method for prioritizing components | |
US8032559B2 (en) | Contact management update protocols | |
US7114037B2 (en) | Employing local data stores to maintain data during workflows | |
NZ565968A (en) | Security in peer to peer synchronization applications | |
US6810363B2 (en) | Methods, apparatus, and program products for analyzing context in a networked computing environment | |
US20050289642A1 (en) | Using web services for online permissions | |
US20070162450A1 (en) | Query object permissions establishment system and methods | |
US7461172B2 (en) | Methods, apparatus, and program products for configuring components in networked computing environments | |
CA2452893C (en) | Method and apparatus for storing and managing contacts in a distributed collaboration system | |
Zhang et al. | Access Control | |
IL159337A (en) | Method and apparatus for storing and managing contacts in a distributed collaboration system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2006740523 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2006231561 Country of ref document: AU |
|
ENP | Entry into the national phase |
Ref document number: 2602376 Country of ref document: CA |
|
ENP | Entry into the national phase |
Ref document number: 2006231561 Country of ref document: AU Date of ref document: 20060404 Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 2008505481 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
NENP | Non-entry into the national phase |
Ref country code: RU |