Database caching

Database caching

Many applications today are being developed and deployed on multi-tier environments that involve browser-based clients, web application servers and backend databases. These applications need to generate web pages on-demand by talking to backend databases because of their dynamic nature, making middle-tier database caching an effective approach to achieve high scalability and performance.

In three tier architecture, application tier and data tier will be in different hosts. Throughput of the application is affected by the network speed. This network overhead shall be avoided by having database at the application tier. As commercial databases are heavy weight, it is not practically feasible to have application and database at the same host. There are lot of light-weight databases available in the market, which shall be used to cache the data from the commercial databases.

Contents

Benefits

Scalability: distribute query workload from backend to multiple cheap front-end systems.

Flexibility: achieve QoS, where each cache hosts different parts of the backend data, e.g., the data of Platinum customers are cached while that of ordinary customers are not.

Availability: by continued service for applications that depend only on cached tables even if the backend server is unavailable.

Performance: by potentially responding fast because of locality of data and smoothing out load peaks by avoiding round-trips between middle-tier and data-tier

Requirements of Caching solution

Updateable Cache Tables

Most of the existing cache solutions are read-only which limits their usage to small segment of the applications, non-real time applications.

Bi-Directional updates

For updateable caches, updates, which happen in cache, should be propagated to the target database and any updates that happen directly on the target database should come to cache automatically.

Synchronous and asynchronous update propagation

The updates on cache table shall be propagated to target database in two modes. Synchronous mode makes sure that after the database operation completes the updates are applied at the target database as well. In case of Asynchronous mode the updates are delayed to the target database. Synchronous mode gives high cache consistency and is suited for real time applications. Asynchronous mode gives high throughput and is suited for near real time applications.

Multiple cache granularity: Database level, Table level and Result-set caching

Major portions of corporate databases are historical and infrequently accessed. But, there is some information that should be instantly accessible like premium customer’s data, etc.

Recovery for cached tables

In case of system or power failure, during the restart of caching platform all the committed transactions on the cached tables should be recovered.

Tools to validate the coherence of cache

In case of asynchronous mode of update propagation, cache at different cache nodes and target database may diverge. This needs to be resolved manually and the caching solution should provide tools to identify the mismatches and take corrective measures if required.

Horizontally Scalable

Clustering is employed in many solutions to increase the availability and to achieve load balancing. Caching platform should work in a clustered environment spanning to multiple nodes thereby keeping the cached data coherent across nodes.

Transparent access to non-cached tables reside in target database

Database Cache should keep track of queries and should be able to intelligently route to the database cache or to the origin database based on the data locality without any application code modification.

Transparent Fail over

There should not be any service outages in case of caching platform failure. Client connections should be routed to the target database.

No or very few changes to application for the caching solution

Support for standard interfaces JDBC, ODBC etc. that will make the application to work seamlessly without any application code changes. It should route all stored procedure calls to target database so that they don’t need to be migrated.

There are some products based on result set based caching like memcached, which are best suited for read-only applications. CSQL Cache and TimesTen provides updateable bi-directional caching at table level granularity.

Database Caching products

  • CSQL Cache - To cache tables from MySQL, Postgres and Oracle.
  • SafePeak - Automated caching of result sets of queries and procedures from SQL Server, with automated cache eviction for full data correctness

References


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Database tuning — describes a group of activities used to optimize and homogenize the performance of a database. It usually overlaps with query tuning, but refers to design of the database files, selection of the database management system (DBMS), operating system …   Wikipedia

  • Comparison of MySQL database engines — This a comparison between the two primary database engines (InnoDB and MyISAM) for the MySQL database management system (DBMS). A database engine (or storage engine ) is the underlying software component that a DBMS uses to create, read, update… …   Wikipedia

  • Gemstone Database Management System — Infobox programming language name = GemStone Database Management System paradigm = Application framework year = 1991 typing = designer = implementations = dialects = influenced by = Smalltalk,Object oriented programming influenced = J2EEGemStone… …   Wikipedia

  • Oracle Database — Developer(s) Oracle Corporation Development status Active Written in …   Wikipedia

  • XFLAIM Database Engine — Infobox Software name = XFLAIM caption = latest release version = latest release date = operating system = Cross platform genre = Development Library license = GPL website = [http://developer.novell.com/wiki/index.php/FLAIM XFLAIM] TOC… …   Wikipedia

  • Java Database Connectivity — (JDBC) is an API for the Java programming language that defines how a client may access a database. It provides methods for querying and updating data in a database. JDBC is oriented towards relational databases. The Java 2 Platform, Standard… …   Wikipedia

  • Comparison of object database management systems — Features Information about what fundamental ODBMS features are implemented natively. Name Current Stable Version Language(s) SQL support Datatypes License Description Caché 2010.1.4 ObjectScript (dynamic language), Basic. Java/.NET object mapping …   Wikipedia

  • Paradox (database) — Paradox is a relational database management system currently published by Corel Corporation. It was originally released for DOS by Ansa Software, and then by Borland after it bought the company. A Windows version was released by Borland in 1992.… …   Wikipedia

  • Zope Object Database — Infobox Software name = Zope Object Database caption = collapsible = yes developer = Zope Corporation status = latest release version = latest release date = latest preview version = latest preview date = operating system = Cross platform size =… …   Wikipedia

  • Panorama (database engine) — Panorama is a database engine and development environment for Macintosh and Microsoft Windows. OverviewPanorama is a product of ProVUE Development. According to its owner Jim Rea, ProVUE is the oldest software company (save Microsoft) developing… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”