Claims
- 1. A method for storing key-value pairs, the method comprising:
exposing, at an application programming layer, a repository interface through which clients may make calls to store and access key-value pair information in a repository; servicing calls made through said repository interface by calling one of a plurality of plug-ins through a common storage abstraction interface; wherein each plug-in of said plurality of plug-ins exposes said common storage abstraction interface for accessing durably stored key-value pair information; wherein each plug-in of said plurality of plug-ins is designed to interact with a particular type of storage subsystem in response to calls made through said common storage abstraction interface; and wherein the storage subsystem with which each plug-in interacts is a different type of storage subsystem than the storage subsystem with which each other of said plurality of plug-ins interacts.
- 2. The method of claim 1 further comprising the steps of:
designating a single component of said repository as a master component; receiving, at components spread across a plurality of nodes of a cluster, calls through said repository interface from clients residing on said plurality of nodes; directing all calls that require access to persistent storage to said master component; wherein the master component is the only component of said repository permitted to perform the step of calling plug-ins through said common storage abstraction interface.
- 3. The method of claim 1 further comprising the steps of:
receiving a request to perform an operation; determining which particular plug-in of said plurality of plug-ins corresponds to a type of storage subsystem to access during execution of said operation; and dynamically loading the particular plug-in that corresponds to said type of storage subsystem; and performing said operation by making one or more calls through said common interface to said particular plug-in.
- 4. The method of claim 1 further comprising the steps of:
receiving a request from a client through said repository interface; prior to making a call through said common storage abstraction interface for information required by said request, searching for said information in a master cache.
- 5. The method of claim 4 wherein:
the client resides on a first node and the master cache resides on a second node; and the method further comprises the step of, prior to searching for said information in said master cache, searching for said information on a local cache on said first node.
- 6. The method of claim 5 wherein:
the first node includes a plurality of components of said repository; the client is associated with a first component of said plurality of components; the method further comprises the steps of:
establishing only one component of said plurality of components as a caching component; and if said first component is not said caching component, then causing a message to be sent from said first component to said caching component to cause said caching component to search said local cache for said information.
- 7. The method of claim 1 further comprising the steps of:
creating a code library that contains routines that implement said repository interface; linking said code library to client code to allow routines in said client code to use said repository by calling said routines in said code library.
- 8. The method of claim 1 further comprising the steps of:
receiving a call from a client through a routine that implements a portion of said repository interface; and based on a value of a parameter in said call, determining whether to establish a component of said repository that is associated with said client as a caching component responsible for managing a cache for said repository.
- 9. A method for storing key-value pairs, the method comprising:
exposing a repository interface through which clients may make calls to store and access key-value pair information in a repository; receiving a call from a client through a routine that implements a portion of said repository interface; and based on said call, determining whether to establish a component of said repository that is associated with said client as a caching component responsible for managing a cache for said repository.
- 10. The method of claim 9 wherein:
the repository supports a plurality of access modes, including a caching access mode and a default access mode; the step of receiving a call includes receiving a call that specifies one of the caching access mode and the default access mode; and the method includes the step of establishing the component of said repository that is associated with said client as a caching component if said call specifies said caching access mode.
- 11. The method of claim 10 further comprising the steps of:
in response to determining that said call specifies said default access mode, passing requests to read information from said repository that are received by said component from said client to a second caching component associated with a second client; and causing said second component to respond to said requests by inspecting a cache, of information from said repository, that is managed by said second component.
- 12. The method of claim 11 wherein said component and said second caching component reside on a single node.
- 13. The method of claim 12 further comprising the step of:
if the cache managed by the second caching component does not include information required by a particular request from said client, then said second caching component sending said request to a third component residing on a second node that is remote relative to said node.
- 14. The method of claim 10 wherein:
the plurality of access modes further include an installation access mode and a read only access mode; clients use said installation access mode when initially creating said repository; and clients use said read only access mode when booting from said repository.
- 15. A method for storing key-value pairs, the method comprising:
exposing a repository interface through which clients may make calls to store and access key-value pair information in a repository designed specifically for key-value pair information; receiving one or more calls from a client through said repository interface; wherein said one or more calls are received at said repository interface prior to allocating, on persistent storage, any structures for said repository for persistently storing said key-value pair information; and based on said one or more calls, creating structures for persistently storing said key-value pair information on said persistent storage.
- 16. The method of claim 15 wherein:
said repository supports a plurality of access modes, including an installation access mode and a default access mode; the step of receiving one or more calls includes receiving at least one call that specifies the installation access mode; and the method includes the step of granting to said client said installation access mode and exclusive use of said repository while said client remains in said installation access mode.
- 17. The method of claim 16 wherein:
said plurality of access modes includes a read-only access mode; and the method includes the steps of
receiving a request from a second client to perform an operation using read-only access mode; circumventing concurrency control mechanisms of said repository during execution of said operation.
- 18. A computer-readable medium carrying instructions for storing key-value pairs, the instructions comprising instructions for performing the steps of:
exposing, at an application programming layer, a repository interface through which clients may make calls to store and access key-value pair information in a repository; servicing calls made through said repository interface by calling one of a plurality of plug-ins through a common storage abstraction interface; wherein each plug-in of said plurality of plug-ins exposes said common storage abstraction interface for accessing durably stored key-value pair information; wherein each plug-in of said plurality of plug-ins is designed to interact with a particular type of storage subsystem in response to calls made through said common storage abstraction interface; and wherein the storage subsystem with which each plug-in interacts is a different type of storage subsystem than the storage subsystem with which each other of said plurality of plug-ins interacts.
- 19. The computer-readable medium of claim 18 further comprising instructions for performing the steps of:
designating a single component of said repository as a master component; receiving, at components spread across a plurality of nodes of a cluster, calls through said repository interface from clients residing on said plurality of nodes; directing all calls that require access to persistent storage to said master component; wherein the master component is the only component of said repository permitted to perform the step of calling plug-ins through said common storage abstraction interface.
- 20. The computer-readable medium of claim 18 further comprising instructions for performing the steps of:
receiving a request to perform an operation; determining which particular plug-in of said plurality of plug-ins corresponds to a type of storage subsystem to access during execution of said operation; and dynamically loading the particular plug-in that corresponds to said type of storage subsystem; and performing said operation by making one or more calls through said common interface to said particular plug-in.
- 21. The computer-readable medium of claim 18 further comprising instructions for performing the steps of:
receiving a request from a client through said repository interface; prior to making a call through said common storage abstraction interface for information required by said request, searching for said information in a master cache.
- 22. The computer-readable medium of claim 21 wherein:
the client resides on a first node and the master cache resides on a second node; and the computer-readable medium further comprises instructions for performing the step of, prior to searching for said information in said master cache, searching for said information on a local cache on said first node.
- 23. The computer-readable medium of claim 22 wherein:
the first node includes a plurality of components of said repository; the client is associated with a first component of said plurality of components; the computer-readable medium further comprises instructions for performing the steps of:
establishing only one component of said plurality of components as a caching component; and if said first component is not said caching component, then causing a message to be sent from said first component to said caching component to cause said caching component to search said local cache for said information.
- 24. The computer-readable medium of claim 18 further comprising instructions for performing the steps of:
creating a code library that contains routines that implement said repository interface; linking said code library to client code to allow routines in said client code to use said repository by calling said routines in said code library.
- 25. The computer-readable medium of claim 18 further comprising instructions for performing the steps of:
receiving a call from a client through a routine that implements a portion of said repository interface; and based on a value of a parameter in said call, determining whether to establish a component of said repository that is associated with said client as a caching component responsible for managing a cache for said repository.
- 26. A computer-readable medium carrying instructions for storing key-value pairs, the computer-readable medium comprising instructions for performing the steps of:
exposing a repository interface through which clients may make calls to store and access key-value pair information in a repository; receiving a call from a client through a routine that implements a portion of said repository interface; and based on said call, determining whether to establish a component of said repository that is associated with said client as a caching component responsible for managing a cache for said repository.
- 27. The computer-readable medium of claim 26 wherein:
the repository supports a plurality of access modes, including a caching access mode and a default access mode; the step of receiving a call includes receiving a call that specifies one of the caching access mode and the default access mode; and the computer-readable medium includes instructions for performing the step of establishing the component of said repository that is associated with said client as a caching component if said call specifies said caching access mode.
- 28. The computer-readable medium of claim 27 further comprising instructions for performing the steps of:
in response to determining that said call specifies said default access mode, passing requests to read information from said repository that are received by said component from said client to a second caching component associated with a second client; and causing said second component to respond to said requests by inspecting a cache, of information from said repository, that is managed by said second caching component.
- 29. The computer-readable medium of claim 28 wherein said component and said second caching component reside on a single node.
- 30. The computer-readable medium of claim 29 further comprising instructions for performing the step of:
if the cache managed by the second caching component does not include information required by a particular request from said client, then said second caching component sending said request to a third component residing on a second node that is remote relative to said node.
- 31. The computer-readable medium of claim 27 wherein:
the plurality of access modes further include an installation access mode and a read only access mode; clients use said installation access mode when initially creating said repository; and clients use said read only access mode when booting from said repository.
- 32. A computer-readable medium carrying instructions for storing key-value pairs, the computer-readable medium comprising instructions for performing the steps of:
exposing a repository interface through which clients may make calls to store and access key-value pair information in a repository designed specifically for key-value pair information; receiving one or more calls from a client through said repository interface; wherein said one or more calls are received at said repository interface prior to allocating, on persistent storage, any structures for said repository for persistently storing said key-value pair information; and based on said one or more calls, creating structures for persistently storing said key-value pair information on said persistent storage.
- 33. The computer-readable medium of claim 32 wherein:
said repository supports a plurality of access modes, including an installation access mode and a default access mode; the step of receiving one or more calls includes receiving at least one call that specifies the installation access mode; and the computer-readable medium includes instructions for performing the step of granting to said client said installation access mode and exclusive use of said repository while said client remains in said installation access mode.
- 34. The computer-readable medium of claim 33 wherein:
said plurality of access modes includes a read-only access mode; and the computer-readable medium includes instructions for performing the steps of
receiving a request from a second client to perform an operation using read-only access mode; circumventing concurrency control mechanisms of said repository during execution of said operation.
RELATED APPLICATIONS
[0001] The present application claims priority to the following provisional U.S. patent applications, the entire contents of which are incorporated herein for all purposes:
[0002] U.S. Provisional Patent Application No. 60/370,963 entitled “Personalized Content Within a Global Namespace”, filed Apr. 8, 2002; and
[0003] U.S. Provisional Patent Application No. 60/372,186 entitled “Approach for Personalized Content Within a Global Namespace”, filed Apr. 12, 2002.
[0004] The present application is also related to the following non-provisional U.S. patent applications:
[0005] U.S. patent application Ser. No. ______ entitled “Mechanism for Creating Member Private Data in a Global Namespace” filed on ______ by Surojit Chatterjee and Alok K. Srivastava (attorney docket no. 50277-1911);
[0006] U.S. patent application Ser. No. ______ entitled “Metadata Format for Hierarchical Data Storage on a Raw Storage Device” filed on ______ by Surojit Chatterjee and Alok K. Srivastava (attorney docket no. 50277-1913); and
[0007] U.S. patent application Ser. No. ______ entitled “Use of Dynamic Multi-Level Hash Table for Managing Hierarchically Structured Information” filed on Aug. 30, 2002, by Surojit Chatterjee and Sameer Joshi (attorney docket no. 50277-1908).
Provisional Applications (2)
|
Number |
Date |
Country |
|
60370963 |
Apr 2002 |
US |
|
60372186 |
Apr 2002 |
US |