1. Field of the Invention
This invention relates generally to methods for improving communication between computing devices. More particularly, the present invention relates to a system and method for efficient communication wherein codes or hash values are used to replace long character strings. Still more particularly, the present invention is a system for improving communication speed and minimizing bandwidth in providing web analytics data between a server and a client.
2. Background of the Invention
Computing systems including their coupling to each other via networks is well known in the art. Such systems can be used in client/server architectures as known in the art to transmit, receive and present data in a variety of formats. However, one issue, especially when using public networks such as the Internet, is the speed at which data can be sent from servers to clients. With the improvements in processing power for both servers and personal computers, the problem is not their processing capabilities, but rather the bandwidth of the network connection between them. Particularly for web analysis/manipulation and data presentation associated with web analytics, the bandwidth of the network is a serious limitation to the effectiveness of these tools because users become frustrated if they have to wait a considerable time before receiving the data of interest. Thus, there is need for systems or methods that solve this problem.
One attempt by the prior art to provide encoding for communication between computing devices is shown in
The system of the present invention provides an improved communication system for providing web analytics data from a first computing device such as server to a second, remote computing device such as a client. The improved communication system preferably encodes frequently requested data into code words, and also provides the remote client with a look-up table and decoding logic. The system preferably includes a first computing device having a hash generator and a look up table, and a second computing device having a hash translator, a code retriever and a look up table. At the first computing device, the hash generator and lookup table are used to generate hash codes for strings that are frequently output. These values or codes are then substituted for the strings and transmitted to the second computing device. At the second computing the device, the hash translator identifies the strings, replaces them with the original string and sends the data on for further processing at the second computing device. If a code does not have a corresponding string in the look up table, the code retriever communicates with the first computing device to obtain the string corresponding to the code and store it and the string in the look up table at the second computing device. In one embodiment, the present invention also includes a method for updating the local look-up table in the event the table does not have a data value for a given code.
A system 200 of the present invention for improved communication for providing web analytics data from a first computing device 202 to a second computing device 204 is shown in
The first computing device 202 is a conventional computing device such as a server and includes a connection to the network 104 via line 210 and is capable of executing various programs such as the present invention. The first computing device 202 preferably includes storage devices (not shown) for temporary and permanent storage such as memory and hard disk drives. The first computing device 202 includes applications, programs and other code executable on the first computing device 202. The computing device 202 preferably includes a web analytics tool 212 and operates as a web server for web analytics and reporting for providing data from a data set representing interaction with web pages such as SiteCatlyst V.11 provided by Omniture of Orem, Utah. When operating on the first computing device 202 these tools provide data to the second computing device 206 for presentation to the user. An exemplary display of such information by the second computing device 206 is shown in
The first computing device 202 also includes a hash generator 214 and a look-up table 208 to optimize the communication with the second computing device 206 over the network 104. The hash generator 214 and look-up table 208 are responsive to and used by the web analytics tool 212 to encode certain portions of data that are repeatedly sent from the first computing device 202 to the second computing device 206. The hash generator 214 takes a variable length string and generates a hash value corresponding to the data string. This hash function may be any one of conventional types available such as MD2, MD4, and MD5 developed by Rivest or Secure Hash Algorithm (SHA) as specified in the Secure Hash Standard (SHS) and developed by NIST. The hash generator 214 is coupled to the look-up table 208 and sends the data string and hash value to the look-up table 208 for storage therein. The look-up table 208 is memory of a conventional type and is coupled to the web analytics tool 212 for providing hash values. Once a string is encoded as a hash value, the web analytics tool 212 sends the hash value in place of the string over the network 104. The web analytics tool 212 can send the hash value along with corresponding data or other information such as display commands or formatting information.
The network 104 is any one of a conventional type such as the Internet, a local area network (LAN), or a wide area network (WAN). The network 104 has predefined protocols for sending packets of data between devices coupled to the network 104. The network 104 may be of any conventional types and have any one of various topologies.
The second computing device 206 is a conventional computing device such as a personal computer, but also includes programs or code providing the communication capability of the present invention. The second computing device 206 includes modules and programs (not shown) responsive to the web analytics tool 212 of the first computing device 202 and user input to provide web analytics and reporting needs. The second computing device 206 further comprises the hash translator 220, the code retriever 222 and the look-up table 224 for optimizing communication with the first computing device 202.
The hash translator 220 receives hash values or codes and translates them back to the original data string. The hash translator 220 is coupled to the look-up table 224, and compares the received hash value to entries in the look-up table 224. If there is a corresponding entry in the hash look-up table 224, then that value is used instead of the received hash value and passed onto other modules of the second computing device 206 for presentation or display to the user. The hash translator 220 is also coupled to the code retriever 222 to notify the code retriever 222 if a hash code does not exist. Alternatively, the look-up table 224 communicates with the code retriever 222 to retrieve any hash values and strings not already in the look-up table 224 as they are requested.
If there is not a corresponding entry in the hash look-up table 224, the hash translator 220 notifies the code retriever 222. The code retriever 222 then communicates with the first computing device 202 over the network 104 and retrieves the data string corresponding to the hash value. Once the string has been returned over the network 104, the code retriever 222 adds an entry into the hash look-up table 224 with both the hash value and its corresponding data string.
Those skilled in the art will recognize that the hash look-up table 224 may act as a buffer that is continually updated, as new data strings are needed. The hash look-up table 224 is preferably maintained in active memory for the entire duration of a user session. However, unlike the prior art, the hash values and strings need be sent over the network 104 only once because they are stored locally at the second computing device 206. Moreover, those skilled in the art will recognize that at the beginning of a session, the hash look-up table 224 may be pre-populated with hash values and strings either from the last session of the user or from a default list of most commonly used strings and hash values. Further, those skilled in the art will recognize that there could be a module in the first computing device 202 to send the string/value pairs to the second computing device 206 during initialization, a module in the second computing device 206 to retrieve the string/value pairs from the first computing device 206, or modules in both computing devices 202, 206 cooperating to provide the string/value pairs to the second computing device 206 during initialization. Furthermore, these modules could be operable at any time not just during initialization. An exemplary format for the look-up table 224 storing exemplary values is shown below in Table 1.
Referring now to
By way of example, and exemplary data transfer in the prior art is compared with a data transfer using the present invention. In the prior art, data would be transferred using the following string to produce the corresponding three lines in a pane on the window/screen of
Referring now to
Referring now to
Those skilled in the art will recognize that
While the present invention has been described with reference to certain preferred embodiments, those skilled in the art will recognize that various modifications may be provided. For example, certain embodiments may employ multiple application servers, acting in cooperation to perform a function or request. Any of the above functions or requests can be sent across a network, or using local cables such as IEEE1394, Universal Serial Bus, or wireless networks such as IEEE 802.11 or IEEE 802.15 networks, in any combination. Variations upon and modifications to the preferred embodiments are provided for by the present invention.
The present application claims priority under 35 U.S.C. §119(e) to U.S. Provisional Patent Application No. 60/687,286, filed on Jun. 3, 2005, entitled “METHOD FOR COMMUNICATION BETWEEN COMPUTING DEVICES USING CODED VALUES” which is incorporated by reference in its entirety.
| Number | Name | Date | Kind |
|---|---|---|---|
| 6112232 | Shahar et al. | Aug 2000 | A |
| 6374266 | Shnelvar | Apr 2002 | B1 |
| 6654346 | Mahalingaiah et al. | Nov 2003 | B1 |
| 6996536 | Cofino et al. | Feb 2006 | B1 |
| 7051038 | Yeh et al. | May 2006 | B1 |
| 7165105 | Reiner et al. | Jan 2007 | B2 |
| 7178104 | Harry et al. | Feb 2007 | B1 |
| 7240077 | Edelman et al. | Jul 2007 | B1 |
| 7680889 | Blumenau et al. | Mar 2010 | B2 |
| 20010018740 | Marukawa | Aug 2001 | A1 |
| 20020083178 | Brothers | Jun 2002 | A1 |
| 20030005036 | Mitzenmacher | Jan 2003 | A1 |
| 20030072454 | Krawetz | Apr 2003 | A1 |
| 20030182420 | Jones et al. | Sep 2003 | A1 |
| 20040006693 | Vasnani et al. | Jan 2004 | A1 |
| 20040111507 | Villado et al. | Jun 2004 | A1 |
| 20040199630 | Sarkissian et al. | Oct 2004 | A1 |
| 20040258089 | Derechin et al. | Dec 2004 | A1 |
| 20050010759 | Wakiyama | Jan 2005 | A1 |
| 20050021731 | Sehm et al. | Jan 2005 | A1 |
| 20050061336 | Goetz et al. | Mar 2005 | A1 |
| 20050216441 | Thomas et al. | Sep 2005 | A1 |
| 20050216581 | Blumenau et al. | Sep 2005 | A1 |
| 20060277197 | Bailey | Dec 2006 | A1 |
| 20070143487 | Zhong et al. | Jun 2007 | A1 |
| 20070150948 | De Spiegeleer | Jun 2007 | A1 |
| Number | Date | Country | |
|---|---|---|---|
| 20060277179 A1 | Dec 2006 | US |
| Number | Date | Country | |
|---|---|---|---|
| 60687286 | Jun 2005 | US |