Transaction-aware caching for document metadata
First Claim
Patent Images
1. A method comprising:
- a file server providing access to at least;
(a) a set of files logically stored in a database that is managed by a database server and (b) file metadata, corresponding to the set of files, also stored in the same database;
wherein the file server provides said access, in part, by receiving requests for files from a plurality of entities, retrieving the files from the database via the database server, and returning the files to the plurality of entities in response to the requests;
wherein the file server is separate from the database server;
the file server maintaining, at a location that is remote relative to both the database server and the database, at least one or more caches;
wherein the file server utilizes the one or more caches to cache said file metadata but not said set of files;
receiving, at the file server, a particular request from a particular entity to perform an operation, wherein the operation requires performance of a particular file operation with respect to a file that is stored in the database;
wherein performance of the particular file operation requires obtaining particular file metadata for the file that is stored in the database;
in response to the particular request, prior to issuing any database command to the database server for obtaining said particular file metadata for the particular file operation, the file server looking for an entry associated with said file in said one or more caches, that is caching said particular file metadata;
responsive to said entry being in the one or more caches, the file server performing the particular file operation based on the particular file metadata as cached in said entry, without issuing any database command to the database server for obtaining the particular file metadata for the particular file operation;
responsive to said entry not being in said one or more caches, the file server;
issuing one or more database commands to the database server that cause the database server to retrieve from said database said particular file metadata; and
performing the particular file operation based on the particular file metadata as retrieved from the database by the database server;
wherein the method is performed by one or more computing devices.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are provided for performing transaction-aware caching of metadata in an electronic file system. A mechanism is described for providing transaction-aware caching that uses a cache hierarchy, where the cache hierarchy includes uncommitted caches associated with sessions in an application and a committed cache that is shared among the sessions in that application. Techniques are described for caching document metadata, access control metadata and folder path metadata. Also described is a technique for using negative cache entries to avoid unnecessary communications with a server when applications repeatedly request non-existent data.
-
Citations
69 Claims
-
1. A method comprising:
-
a file server providing access to at least;
(a) a set of files logically stored in a database that is managed by a database server and (b) file metadata, corresponding to the set of files, also stored in the same database;wherein the file server provides said access, in part, by receiving requests for files from a plurality of entities, retrieving the files from the database via the database server, and returning the files to the plurality of entities in response to the requests; wherein the file server is separate from the database server; the file server maintaining, at a location that is remote relative to both the database server and the database, at least one or more caches; wherein the file server utilizes the one or more caches to cache said file metadata but not said set of files; receiving, at the file server, a particular request from a particular entity to perform an operation, wherein the operation requires performance of a particular file operation with respect to a file that is stored in the database; wherein performance of the particular file operation requires obtaining particular file metadata for the file that is stored in the database; in response to the particular request, prior to issuing any database command to the database server for obtaining said particular file metadata for the particular file operation, the file server looking for an entry associated with said file in said one or more caches, that is caching said particular file metadata; responsive to said entry being in the one or more caches, the file server performing the particular file operation based on the particular file metadata as cached in said entry, without issuing any database command to the database server for obtaining the particular file metadata for the particular file operation; responsive to said entry not being in said one or more caches, the file server; issuing one or more database commands to the database server that cause the database server to retrieve from said database said particular file metadata; and performing the particular file operation based on the particular file metadata as retrieved from the database by the database server; wherein the method is performed by one or more computing devices. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. A non-transitory computer-readable storage medium carrying instructions, which when executed by one or more computing devices, cause performance of:
-
a file server providing access to at least;
(a) a set of files logically stored in a database that is managed by a database server; and
(b) file metadata, corresponding to the set of files, also stored in the same database;wherein the file server provides said access, in part, by receiving requests for files from a plurality of entities, retrieving the files from the database via the database server, and returning the files to the plurality of entities in response to the requests; wherein the file server is separate from the database server; the file server maintaining, at a location that is remote relative to both the database server and the database, at least one or more caches; wherein the file server utilizes the one or more caches to cache said file metadata, but not said set of files; receiving, at the file server, a particular request from a particular entity to perform an operation, wherein the operation requires performance of a particular file operation with respect to a file that is stored in the database; wherein performance of the particular file operation requires obtaining particular file metadata for the file that is stored in the database; in response to the particular request, prior to issuing any database command to the database server for obtaining said particular file metadata for the particular file operation, the file server looking for an entry, associated with said file in said one or more caches, that is caching said particular file metadata; responsive to said entry being in the one or more caches, the file server performing the particular file operation based on the particular file metadata as cached in said entry, without issuing any database command to the database server for obtaining the particular file metadata for the particular file operation; responsive to said entry not being in said one or more caches, the file server; issuing one or more database commands to the database server that cause the database server to retrieve from said database said particular file metadata; and performing the particular file operation based on the particular file metadata as retrieved from the database by the database server. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67)
-
-
68. A method comprising:
-
a file server providing access to at least;
(a) a set of files logically stored in a database that is managed by a database server; and
(b) file metadata, corresponding to the set of files, also stored in the same database;wherein the file server is separate from the database server; receiving, at the file server, a request to perform an operation, wherein the operation requires performance of a particular file operation with respect to a file that is stored in the database; the file server determining to respond to the request to perform the file operation by executing at least a parent database transaction and a nested database transaction that is nested within the parent database transaction; wherein performance of the particular file operation requires obtaining particular file metadata for the file that is stored in the database; the file server sending a command to the database server to initiate the parent database transaction; the file server establishing, at a location that is remote relative to both the database server and the database, a parent transaction cache both to cache file metadata retrieved from the database by the nested database transaction, but not files; while still executing the parent transaction, the file server sending a command to the database server to initiate the nested database transaction; the file server establishing, at a location that is remote relative to both the database server and the database, a nested transaction cache both to cache file metadata retrieved from the database by the nested database transaction, but not files; in response to the request, while the nested database transaction is being performed, prior to issuing any database command to the database server for obtaining said particular file metadata for the particular file operation, the file server looking for an entry associated with said file in the nested transaction cache, said entry caching said particular file metadata; responsive to said entry not being in the nested transaction cache, the file server looking for the entry in the parent transaction cache; responsive to said entry not being in the nested transaction cache and the parent transaction cache, the file server looking for the entry in a shared cache of file metadata, the shared cache being shared to cache file metadata retrieved by multiple transactions; responsive to said entry being in at least one of the nested transaction cache, the parent transaction cache, or the shared transaction cache, the file server performing the particular file operation based on the particular file metadata as cached in said entry, without issuing any database command to the database server for obtaining the particular file metadata for the particular file operation; responsive to said entry not being in at least one of the nested transaction cache, parent transaction cache, and shared transaction cache, the file server; issuing one or more database commands to the database server that cause the database server to retrieve from said database said particular file metadata; executing the particular file operation based on the particular file metadata as retrieved from the database by the database server; and storing the particular file metadata in the nested transaction cache; wherein the method is performed by one or more computing devices.
-
-
69. A non-transitory computer-readable storage medium carrying instructions, which when executed by one or more computing devices, cause performance of:
-
a file server providing access to at least;
(a) a set of files logically stored in a database that is managed by a database server; and
(b) file metadata, corresponding to the set of files, also stored in the same database;wherein the file server is separate from the database server; receiving, at the file server, a request to perform an operation, wherein the operation requires performance of a particular file operation with respect to a file that is stored in the database; the file server determining to respond to the request to perform the file operation by executing at least a parent database transaction and a nested database transaction that is nested within the parent database transaction; wherein performance of the particular file operation requires obtaining particular file metadata for the file that is stored in the database; the file server sending a command to the database server to initiate the parent database transaction; the file server establishing, at a location that is remote relative to both the database server and the database, a parent transaction cache both to cache file metadata retrieved from the database by the nested database transaction, but not files; while still executing the parent transaction, the file server sending a command to the database server to initiate the nested database transaction; the file server establishing, at a location that is remote relative to both the database server and the database, a nested transaction cache both to cache file metadata retrieved from the database by the nested database transaction, but not files; in response to the request, while the nested database transaction is being performed, prior to issuing any database command to the database server for obtaining said particular file metadata for the particular file operation, the file server looking for an entry associated with said file in the nested transaction cache, said entry caching said particular file metadata; responsive to said entry not being in the nested transaction cache, the file server looking for the entry in the parent transaction cache; responsive to said entry not being in the nested transaction cache and the parent transaction cache, the file server looking for the entry in a shared cache of file metadata, the shared cache being shared to cache file metadata retrieved by multiple transactions; responsive to said entry being in at least one of the nested transaction cache, the parent transaction cache, or the shared transaction cache, the file server performing the particular file operation based on the particular file metadata as cached in said entry, without issuing any database command to the database server for obtaining the particular file metadata for the particular file operation; responsive to said entry not being in at least one of the nested transaction cache, parent transaction cache, and shared transaction cache, the file server; issuing one or more database commands to the database server that cause the database server to retrieve from said database said particular file metadata; executing the particular file operation based on the particular file metadata as retrieved from the database by the database server; and storing the particular file metadata in the nested transaction cache.
-
Specification