As information technology (IT) has become part of business in today’s globalized economy, increasingly higher performance of information systems is demanded by the business models to support various business operations and help the business compete and succeed. IT must strive to be nimble and adaptive to provide a higher level of services and, at the same time, reduce the total cost of ownership (TCO). In most situations, the current enterprise infrastructure must be extended to get the most out of the existing investments. Creating innovative solutions is an effective approach to achieve this goal, and scalable data management is one of the most valuable innovations.
In general, a data cache is defined as a data block that contains frequently accessed contents in a text or binary format. A persistent data block is saved in storage at either the client or the server side. Alternatively, a transient data block may be stored in a memory buffer for the lifetime of an application, a user session, or a single-client request. Caching is a widely used technique to boost the performance of data access. When a program needs to access a particular data element, the process first checks the data cache to verify whether the element has been previously retrieved and stored. If a match is found, the application will use the data directly from the cache, rather than accessing to the data source again. As a result, a drastic performance gain is realized, since the data access in RAM is significantly faster than that to a disk or external resource over the network. In addition, a cached data element is usually in a ready-to-use form, so that little or no transformation and initialization is needed, resulting in higher performance in the processing.
Generally speaking, many performance challenges may be resolved via the horizontal or vertical scaling. Extra servers are added in the horizontal scaling. The vertical scaling approach upgrades the existing machines with more and faster processors, additional memory, larger hard disks, and/or higher-speed network connection. In today’s competitive environment, however, the ultimate challenge is a balance of the overall project cost and on-demand scalability to meet the capacity needs. Without looking into the end-to-end performance chain, particularly at the application software level, simply investing more on hardware alone usually does not fix the root cause despite the fact that it may temporarily alleviate the symptom. In other words, a more holistic approach should be taken to improve the overall architectural design. The best solution to systematically address the performance issue is usually an aggressive use of data caching technology.
Data Caching Patterns
A wide range of caching patterns can be applied individually or in combination as a means to increase application performance. Each pattern was designed with its own specific merits and addresses a certain type of data access issues. Classifying data caching patterns is a challenging task, resulting in a different outcome scheme based on the criteria applied. For example, they may be categorized as creational, structural, and behavioral. Alternatively, they may be grouped at the levels of the method, class, component, application, platform, and system.
A vast majority of today’s distributed applications are developed in either Java or .NET on an n-tier architecture, which consists of a series of logical/physical layers: client, Web, application, integration, and data and enterprise resource. Accordingly, a taxonomic scheme is defined in Figure 1 to sort various caching patterns into appropriate layers. Furthermore, those patterns that can be used in multiple layers are grouped in the cross-layer category.