Claims
- 1. A system comprising:
a data processor; and a memory coupled to the data processor; wherein the data processor is configured to
implement a cache system that stores a plurality of data objects and
corresponding keys within an internal data structure in the memory, monitor usage of the cache system, determine whether usage of the cache system indicates that an alternative
internal data structure should be used in the cache system, and if usage of the cache system indicates that alternative internal data
structure should be used in the cache system, create the alternative internal data structure, migrate data from a current internal data structure to the alternative
internal data structure, and begin operation using the alternative internal data structure.
- 2. The system of claim 1, wherein the data processor and memory reside within a network proxy.
- 3. The system of claim 2, wherein the data objects comprise Web pages and the corresponding keys comprise uniform resource locators (URLs).
- 4. The system of claim 1, wherein the system is configured to store network connection and DNS information by storing data objects comprising IP addresses and keys comprising server names corresponding to the IP addresses.
- 5. The system of claim 1, wherein the system is configured to store configuration parameters by storing selected configuration data as objects and parameter names as keys corresponding to the objects.
- 6. The system of claim 1, wherein the system is configured to store shared resources as objects and resource identifiers as keys corresponding to the objects.
- 7. The system of claim 1, wherein the system is configured to store open network connections as objects and systems, ports and communication protocols corresponding to the open network connections as keys corresponding to the objects.
- 8. The system of claim 1, wherein the internal data structures in the cache system comprise at least two types selected from the group consisting of: lists; hashes, trees, heaps and hybrid data structures.
- 9. The system of claim 1, wherein the cache system is multi-tiered, and at least one tier of caches is configured to store references to caches as data objects.
- 10. The system of claim 1, wherein the data processor is configured to create one or more caches in the cache system using a C++ template.
- 11. The system of claim 1, wherein the data processor is configured to determine whether usage of the cache system indicates that the alternative internal data structure should be used by determining a cost associated with a current internal data structure and a cost associated with the alternative internal data structure and comparing the costs.
- 12. The system of claim 11, wherein determining the cost associated with the alternative internal data structure includes determining a cost for transitioning to the alternative internal data structure.
- 13. The system of claim 12, wherein transitioning to the alternative internal data structure comprises creating the alternative internal data structure, migrating data from the current internal data structure to the alternative internal data structure, and beginning operation using the alternative internal data structure.
- 14. A method: comprising
providing a first internal data structure for storing a plurality of objects; using the first internal data structure; monitoring usage of the first internal data structure; determining a cost associated with usage of the first internal data structure; determining a cost associated with usage of an alternative internal data structure; comparing the cost associated with usage of the first internal data structure to the
cost associated with usage of the alternative internal data structure; and if the cost associated with usage of the first internal data structure is greater than
the cost associated with usage of the alternative internal data structure, creating the alternative internal data structure and migrating the plurality of objects to the alternative internal data structure.
- 15. The method of claim 14, wherein determining the cost associated with usage of the alternative internal data structure comprises determining a cost associated with creating the alternative internal data structure and migrating the plurality of objects to the alternative internal data structure.
- 16. The method of claim 12, wherein determining the cost associated with usage of the alternative internal data structure further comprises determining a cost associated with storing objects in the alternative internal data structure and retrieving objects from the alternative internal data structure.
- 17. The method of claim 14, further comprising periodically repeating the steps of determining the cost associated with usage of the first internal data structure, determining the cost associated with usage of the alternative internal data structure and comparing the cost associated with usage of the first internal data structure to the cost associated with usage of the alternative internal data structure.
- 18. The method of claim 14, wherein determining the cost associated with usage of at least one of the first internal data structure and the alternative internal data structure comprises computing a cost based on estimated usage.
- 19. The method of claim 14, wherein determining the cost associated with usage of at least one of the first internal data structure and the alternative internal data structure comprises computing a cost based on empirical usage data.
- 20. The method of claim 14, further comprising, if the cost associated with usage of the first internal data structure is greater than the cost associated with usage of the alternative internal data structure, deleting the first internal data structure after migrating the plurality of objects to the alternative internal data structure.
- 21. The method of claim 14, wherein providing the first internal data structure for storing a plurality of objects comprises providing a cache system having the first internal data structure in a network proxy.
- 22. The method of claim 21, wherein using the first internal data structure comprises storing and retrieving entries in the first internal data structure, wherein each entry includes an object comprising a Web page and a corresponding key comprising a uniform resource locators (URL) corresponding to the Web page.
- 23. The method of claim 21, wherein using the first internal data structure comprises storing and retrieving entries in the first internal data structure, wherein each entry includes an object comprising an IP addresses and a corresponding key comprising a server name corresponding to the IP address.
- 24. The method of claim 21, wherein using the first internal data structure comprises storing and retrieving entries in the first internal data structure, wherein each entry includes an object comprising selected configuration data and a key comprising a parameter names.
- 25. The method of claim 21, wherein using the first internal data structure comprises storing and retrieving entries in the first internal data structure, wherein each entry includes an object comprising a shared resource and a key comprising a resource identifier.
- 26. The method of claim 21, wherein using the first internal data structure comprises storing and retrieving entries in the first internal data structure, wherein each entry includes an object comprising an open network connection and at least one key comprising one or more of: a system and a port to which the connection has been made and a communication protocol used for the connection.
- 27. The method of claim 14, wherein the first and alternative internal data structures comprise at least two types selected from the group consisting of: lists; hashes, trees, heaps and hybrid data structures.
- 28. The method of claim 14, wherein the first internal data structure comprises a cache within a multi-tiered cache system, and wherein at least one tier of caches in the multi-tiered cache system is configured to store references to caches as data objects.
- 29. The method of claim 14, wherein providing each internal data structure comprises creating a corresponding cache using a C++ template.
- 30. A software product comprising a plurality of instructions embodied in a medium readable by a data processor, wherein the instructions are configured to cause the data processor to perform the method comprising:
providing a first internal data structure for storing a plurality of objects; using the first internal data structure; monitoring usage of the first internal data structure; determining a cost associated with usage of the first internal data structure; determining a cost associated with usage of an alternative internal data structure; comparing the cost associated with usage of the first internal data structure to the
cost associated with usage of the alternative internal data structure; and if the cost associated with usage of the first internal data structure is greater than
the cost associated with usage of the alternative internal data structure, creating the alternative internal data structure and migrating the plurality of objects to the alternative internal data structure.
- 31. The software product of claim 30, wherein determining the cost associated with usage of the alternative internal data structure comprises determining a cost associated with creating the alternative internal data structure and migrating the plurality of objects to the alternative internal data structure.
- 32. The software product of claim 31, wherein determining the cost associated with usage of the alternative internal data structure further comprises determining a cost associated with storing objects in the alternative internal data structure and retrieving objects from the alternative internal data structure.
- 33. The software product of claim 30, wherein the method further comprises periodically repeating the steps of determining the cost associated with usage of the first internal data structure, determining the cost associated with usage of the alternative internal data structure and comparing the cost associated with usage of the first internal data structure to the cost associated with usage of the alternative internal data structure.
- 34. The software product of claim 30, wherein determining the cost associated with usage of at least one of the first internal data structure and the alternative internal data structure comprises computing a cost based on estimated usage.
- 35. The software product of claim 30, wherein determining the cost associated with usage of at least one of the first internal data structure and the alternative internal data structure comprises computing a cost based on empirical usage data.
- 36. The software product of claim 30, wherein the method further comprises, if the cost associated with usage of the first internal data structure is greater than the cost associated with usage of the alternative internal data structure, deleting the first internal data structure after migrating the plurality of objects to the alternative internal data structure.
- 37. The software product of claim 30, wherein providing the first internal data structure for storing a plurality of objects comprises providing a cache system having the first internal data structure in a network proxy.
- 38. The software product of claim 37, wherein using the first internal data structure comprises storing and retrieving entries in the first internal data structure, wherein each entry includes an object comprising a Web page and a corresponding key comprising a uniform resource locators (URL) corresponding to the Web page.
- 39. The software product of claim 37, wherein using the first internal data structure comprises storing and retrieving entries in the first internal data structure, wherein each entry includes an object comprising an IP addresses and a corresponding key comprising a server name corresponding to the IP address.
- 40. The software product of claim 30, wherein the internal data structures are configured to store configuration parameters by storing selected configuration data as objects and parameter names as keys corresponding to the objects.
- 41. The software product of claim 30, wherein the internal data structures are configured to store shared resources as objects and resource identifiers as keys corresponding to the objects.
- 42. The software product of claim 30, wherein the internal data structures are configured to store open network connections as objects and systems, ports and communication protocols corresponding to the open network connections as keys corresponding to the objects.
- 43. The software product of claim 30, wherein the first and alternative internal data structures comprise at least two types selected from the group consisting of: lists; hashes, trees, heaps and hybrid data structures.
- 44. The software product of claim 30, wherein the first internal data structure comprises a cache within a multi-tiered cache system, and wherein at least one tier of caches in the multi-tiered cache system is configured to store references to caches as data objects.
- 45. The software product of claim 30, wherein providing each internal data structure comprises creating a corresponding cache using a C++ template.
Parent Case Info
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to U.S. Provisional Patent Application No. 60/349,378, entitled “OneCache: An Abstract Design for Storage and Retrieval of Arbitrary Content and Application Data,” by Jeremy S. de Bonet, Todd A. Stiers, Jeffrey R. Annison, Phillip Alvelda VII, and Paul M. Scanlan, filed Jan. 18, 2002, U.S. Provisional Patent Application No. 60/349,344, entitled “Modular Plug-In Transaction Processing Architecture” by de Bonet et al., filed Jan. 18, 2002 and U.S. Provisional Patent Application No. 60/349,424, entitled “Network Proxy Platform that Simultaneously Supports Data Transformation, Storage, and Manipulation for Multiple Protocols” by de Bonet et al., filed on Jan. 18, 2002, which are hereby fully incorporated by reference herein. Additionally, U.S. patent application Ser. No. ______, entitled “Method and System of Performing Transactions Using Shared Resources and Different Applications,” by de Bonet et al., filed Jan. 14, 2003 is incorporated by reference herein.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60349378 |
Jan 2002 |
US |
|
60349424 |
Jan 2002 |
US |
|
60349344 |
Jan 2002 |
US |