Providing good performance in a client-server database architecture is not hard when function shipping is used and the queries and updates are not navigational in nature. But some version of data shipping is usually considered important to achieve decent navigational performance. The idea is to locally cache data (usually pages) at the client and execute most queries and transactions against the cached data, hence avoiding round trip on each navigational request. In this context, most proposed systems have use some variant of single version concurrency control. This choice imposes a high burden on cache coherence, as all caches are required, when they share data, to have the same version of the data. The burden is high whether the cache reconciliation is done aggressively (so-called pessimistic) or lazily (only at commit, so-called optimistic).

The paper by Gukal et al exploits multi-version concurrency control on transient versions to reduce cache coherence overhead and to permit queries (read-only transactions) to execute without blocking. A number of systems support transient versions, but rarely in a client-server setting to enhance navigational access. In this paper, each version is called a "slice". A slice resides entirely at a single client, but a client may support multiple slices. Updates require that the latest version of a page be accessed, and this can produce cycles in the "slice graph", leading to aborts. But read requests can be handled by extending the slice, which does not always require the latest version. Queries can execute against older slices without blocking. A nice feature is that this leads naturally to a two level concurrency control, where the clients resolve local conflicts entirely locally, and the server ensures that slices form an acyclic graph, and hence that transactions executing in a slice are globally acyclic.

The paper does not discuss logging protocols for transaction commit. It does discuss how clients return updated pages to the server when a slice is terminated, but such issues as how the server deals with clients that simply go away and do not return their pages are not dealt with. Nonetheless, the paper presents an intriguing approach to cache coherence and good performance for navigational database access in a client-server environment.

a service of  Schloss Dagstuhl - Leibniz Center for Informatics