Associative caching in client-server databases
Gio C. M. Wiederhold, Julie Basu · 1998
The client-server configuration is a popular architecture for modern databases. Client transactions usually run on desktop workstations, and communicate with the server managing the central data repository through explicit messages across a network. A traditional design assumption in these systems is that clients have limited resources. Accordingly, their functionality has been restricted to transmission of queries and updates to the database server, and presentation of received results to the user. The server is thus a potential performance bottleneck, especially for large databases and many clients. Today, clients are often high-performance machines with substantial CPU and memory, and it is possible to use these resources for local data caching and query evaluation purposes, so as to reduce the server workload and improve system performance and scalability. In this dissertation, we propose and study an associative caching scheme, we call A*Cache, for client-server databases. A*Cache supports data buffering and local evaluation of associative queries at clients. The cache dynamically loads query results during transaction execution, and uses query predicates to formulate a description of its contents. New queries are compared against the cache description using predicate-based reasoning to determine if the query can be evaluated locally. Descriptions of client caches are also maintained at the server, which generates notifications for updates committed at the central database. The clients use these update notifications to maintain the validity of their respective caches, and also to detect conflicting updates of shared data. The focus of this dissertation is on the feasibility and performance of A*Cache in a dynamic and practical environment. We first describe the architectural framework of A*Cache and its execution model for transactions, and examine various design issues. We then develop new optimization techniques that can potentially improve the performance of A*Cache. Next, the behavior of the A*Cache scheme is investigated through detailed simulation of a client-server database under several different workloads, and compared with other types of caching systems. Our simulation results clearly demonstrate the effectiveness of our associative caching scheme for read-only environments, and also for read-write scenarios with moderately high data update probabilities.