P
US8655833B2ActiveUtilityPatentIndex 21

Database architecture for supporting group communications among wireless communication devices

Assignee: GUPTA RASHIMPriority: Jun 17, 2008Filed: Jun 17, 2008Granted: Feb 18, 2014
Est. expiryJun 17, 2028(~2 yrs left)· nominal 20-yr term from priority
Inventors:GUPTA RASHIMSELLAMUTHU GIDHENDRAN
G06F 16/2329G06F 16/2308H04W 92/12H04W 88/14H04W 4/10H04W 76/45H04W 8/18G06F 17/40
21
PatentIndex Score
0
Cited by
24
References
32
Claims

Abstract

A system and method for continually updating a large and substantially continually changing dataset that is accessed by multiple application threads, such as a group identity database of members in communication groups of wireless communication devices. A first server holds the group identity database and, as application threads on the first server access the database to set up group communications, a second server sends new group identity data to update the database, with the new data arriving as discrete, ordered blocks. A first server-resident data-index table is updated with the ordering information of the new data blocks, and a first server-resident checkpointing thread places the ordering information of the new data blocks into a checkpoint cache and checkpoints the ordering information as the new data blocks are updated into the group identity database and verifies the ordering (or version) of the data as against the data-index table.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A system for continually updating a large and substantially continually changing dataset that is accessed by an application thread, comprising:
 a first server configured to selectively control a substantially continually changing first dataset, the first server including a checkpointing thread, the first server further including a checkpointing cache and a data-index table; and 
 a second server configured to selectively send new data from a second data set to the first server for inclusion into the first dataset, the new data comprised of discrete, ordered blocks, the second server being remote from the first server, 
 wherein the data-index table further contains the ordering information of data blocks held within the second data set, and the first server is configured to update the data-index table as new data blocks are received at the first server from the second server, and 
 wherein the first server is further configured such that: 
 as new data blocks are received at the first server from the second server, at least the ordering information of the data blocks is placed into the checkpointing cache, and then for each block of new data to be included in the first data set, the checkpointing thread compares the ordering information of the data block in the data-index table to the ordering information for the data block in the checkpointing cache, 
 upon the comparison indicating that the ordering information for the order of the data block to be included in the first data set is correct, the checkpointing thread including that data block into the first data set, and 
 upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect, the checkpointing thread discarding that data block and awaiting the data block of the correct order from the checkpointing cache. 
 
     
     
       2. The system of  claim 1 , wherein the first server is further configured such that the checkpointing thread further places the data block having correct ordering information into a memory of the first server. 
     
     
       3. The system of  claim 1 , wherein the first server is further configured to selectively request new data from the second server. 
     
     
       4. The system of  claim 1 , wherein the first server is further configured such that, upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect, the checkpointing thread further requests the data block of correct order from the second server. 
     
     
       5. The system of  claim 1 , wherein the first data set is a group identity database for a communication group of wireless communication devices. 
     
     
       6. The system of  claim 5 , wherein the first server is a group communication server for a communication group of wireless communication devices. 
     
     
       7. The system of  claim 5 , wherein the first server is further configured such that the application thread accesses the first data set for setting up group communications for communication groups of wireless communication devices. 
     
     
       8. A method for continually updating a large and substantially continually changing dataset that is accessed by an application thread, comprising:
 receiving new data comprised of discrete, ordered blocks at a first server that is configured to selectively control a substantially continually changing first dataset, the new data received from a second dataset resident on a second server remote from the first server, and the first server including a checkpointing thread, the first server further including a checkpointing cache and a data-index table 
 updating the data-index table as new data blocks are received at the first server from the second server, the data-index table containing the ordering information of data blocks held within the second dataset; 
 placing the ordering information of the data blocks into the checkpointing cache; 
 for each block of new data to be included in the first data set, the checkpointing thread comparing the ordering information of the data block in the data-index table to the ordering information for the data block in the checkpointing cache; 
 upon the comparison indicating that the ordering information for the order of the data block to be included in the first data set is correct, the checkpointing thread including that data block into the first data set; and 
 upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect, the checkpointing thread discarding that data block and awaiting the data block of the correct order from the checkpointing cache. 
 
     
     
       9. The method of  claim 8 , further comprising the checkpointing thread placing the data block having correct ordering information into a memory of the first server. 
     
     
       10. The method of  claim 8 , further comprising the first server selectively requesting new data from the second dataset at the second server. 
     
     
       11. The method of  claim 10 , further comprising, upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect, the checkpointing thread requesting the data block of correct order from the second server. 
     
     
       12. The method of  claim 8 , wherein the first data set is a group identity database for a communication group of wireless communication devices, the method further comprising accessing the first data set with the application thread for setting up group communications for communication groups of wireless communication devices. 
     
     
       13. A server configured to selectively control a substantially continually updated and changing resident dataset, wherein the server is configured with data and executable instructions for performing operations comprising:
 executing a checkpointing thread; 
 maintaining a checkpointing cache; 
 maintaining a data-index table; 
 maintaining a first data set substantially continuously accessed by, at least, an application threads thread resident on the server; 
 updating the first dataset being at least periodically with data blocks from a second dataset received from a second server remote from the server, the second dataset comprised of discrete, ordered blocks; 
 updating the data-index table as new data blocks from the second dataset are received at the server, the data-index table containing the ordering information of data blocks held within the second data set; 
 as new data blocks are received at the server, placing at least the ordering information of the data blocks into the checkpointing cache, and then for each block of new data to be included in the first data set, comparing the ordering information of the data block in the data-index table to the ordering information for the data block in the checkpointing cache; 
 upon the comparison indicating that the ordering information for the order of the data block to be included in the first data set is correct, the checkpointing thread including that data block into the first data set; and 
 upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect, the checkpointing thread discarding that data block and awaiting the data block of the correct order from the checkpointing cache. 
 
     
     
       14. The server of  claim 13 , wherein the server is configured with executable instructions for performing operations further comprising the checkpointing thread placing the data block having correct ordering information into a memory of the server. 
     
     
       15. The server of  claim 13 , wherein the server is further configured with executable instructions for performing operations further comprising requesting new data from the second server. 
     
     
       16. The server of  claim 15 , wherein the server is configured with executable instructions for performing operations further comprising, upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect, the checkpointing thread requesting the data block of correct order from the second server. 
     
     
       17. The server of  claim 13 , wherein the first data set is a group identity database for a communication group of wireless communication devices. 
     
     
       18. The server of  claim 13 , wherein the server is a group communication server for a communication group of wireless communication devices. 
     
     
       19. The server of  claim 17 , wherein the application thread accesses the first data set for setting up group communications for communication groups of wireless communication devices. 
     
     
       20. A server configured to selectively control a substantially continually updated and changing dataset, comprising:
 means for receiving new data comprised of discrete, ordered blocks; 
 means for controlling a checkpointing thread; 
 means for storing checkpointing data; 
 means for storing a data-index; 
 means for storing a first data set; and 
 means for updating the first dataset at least periodically with data blocks from a second data set received from a second server remote from the server, 
 wherein means for storing a data-index further includes means for updating the data-index as new data blocks are received at the server, the data-index containing the ordering information of data blocks held within the second data set, 
 wherein means for storing checkpointing data further includes means for storing the ordering information of the data blocks from the second dataset, 
 wherein means for controlling the checkpointing thread comprises means for comparing the ordering information of the data block in the means for storing a data-index to the ordering information for the data block in the means for storing checkpointing data, and 
 wherein means for updating the first dataset comprises:
 means for updating the first data set with a data block for each block of new data to be included in the first data set upon the comparison indicating that the ordering information for the order of the data block to be included in the first data set is correct; and 
 means for discarding the data block and awaiting the data block of the correct order from the means for storing checkpointing data upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect. 
 
 
     
     
       21. The method of  claim 12 , wherein the first server is a group communication server for a communication group of wireless communication devices. 
     
     
       22. The server of  claim 20 , further comprising means for placing the data block having correct ordering information into a memory of the server. 
     
     
       23. The server of  claim 20 , further comprising means for selectively requesting new data from the second dataset at the second server. 
     
     
       24. The server of  claim 23 , wherein means for updating the first dataset comprises means for requesting the data block of correct order from the second server upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect. 
     
     
       25. The server of  claim 20 , wherein the first data set is a group identity database for a communication group of wireless communication devices, the server further comprising means for accessing the first data set by an application thread for setting up group communications for communication groups of wireless communication devices. 
     
     
       26. The server of  claim 25 , wherein the server is a group communication server for a communication group of wireless communication devices. 
     
     
       27. A non-transitory computer readable medium having stored thereon processor-executable instructions configured to cause a processor of a first server to perform operations for continually updating a large and substantially continually changing dataset that is accessed by an application thread, comprising:
 receiving from a second dataset resident on a second server remote from the first server new data comprised of discrete, ordered blocks at a first server that is configured to selectively control a substantially continually changing first dataset, the first server executing a checkpointing thread, and including a checkpointing cache and a data-index table; 
 updating the data-index table as new data blocks are received at the first server from the second server, the data-index table containing the ordering information of data blocks held within the second dataset; 
 placing the ordering information of the data blocks into the checkpointing cache; 
 for each block of new data to be included in the first data set, the checkpointing thread comparing the ordering information of the data block in the data-index table to the ordering information for the data block in the checkpointing cache; 
 upon the comparison indicating that the ordering information for the order of the data block to be included in the first data set is correct, the checkpointing thread including that data block into first data set; and 
 upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect, the checkpointing thread discarding that data block and awaiting the data block of the correct order from the checkpointing cache. 
 
     
     
       28. The non-transitory computer readable medium of  claim 27 , wherein the stored processor-executable instructions are configured to cause a processor of the first server to perform operations further comprising the checkpointing thread placing the data block having correct ordering information into a memory of the first server. 
     
     
       29. The non-transitory computer readable medium of  claim 27 , wherein the stored processor-executable instructions are configured to cause a processor of the first server to perform operations further comprising the first server selectively requesting new data from the second dataset at the second server. 
     
     
       30. The non-transitory computer readable medium of  claim 29 , wherein the stored processor-executable instructions are configured to cause a processor of the first server to perform operations further comprising the checkpointing thread requesting the data block of correct order from the second server upon the comparison indicating that the ordering information for the data block to be included in the first data set is incorrect. 
     
     
       31. The non-transitory computer readable medium of  claim 27 , wherein the first data set is a group identity database for a communication group of wireless communication devices, and
 wherein the stored processor-executable instructions are configured to cause a processor of the first server to perform operations further comprising accessing the first data set by the application thread for setting up group communications for communication groups of wireless communication devices. 
 
     
     
       32. The non-transitory computer readable medium of  claim 31 , wherein the first server is a group communication server for a communication group of wireless communication devices.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.