Patent ID: 7096213

Claim:
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; receiving, through said repository interface, at a first component on a first node, from a client on the first node, a request to perform an operation, wherein the first component is associated with the first client; in response to receiving the request at the first component, determining whether the first component has been designated as a caching component for the first node; in response to determining that the first component has not been designated as a caching component for the first node, determining whether a second component on the first node has been designated as a caching component for the first node, wherein the second component is associated with a second client on the first node; in response to determining that the second component has been designated as a caching component for the first node, determining, at the second component, whether information required by said request is contained in a local cache on the first node; in response to determining that the information required by said request is not contained in the local cache on the first node, determining whether a third component on a second node has been designated as a master component, wherein the second node is separate from the first node, wherein the third component is associated with a third client on the second node; in response to determining that the third component has been designated as the master component, performing the following steps at the third component: servicing calls made through said repository interface by calling one of a plurality of plug-ins through a common interface of a storage abstraction layer; 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; 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; wherein each plug-in of said plurality of plug-ins exposes said common 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 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.