Exforsys

Home arrow Reviews arrow Oracle Coherence

Oracle Coherence 3.5

Author: Packt Publishing     Published on: 21st Jun 2010

As an architect of a large, mission-critical website or enterprise application, you need to address at least three major non-functional requirements: performance, scalability, and availability.

Ads

Performance is defined as the amount of time that an operation takes to complete. In a web application, it is usually measured as "time to last byte" (TTLB)—the amount of time elapsed from the moment the web server received a request, until the moment the last byte of response has been sent back to the client. Performance is extremely important, because experience has shown us that no matter how great and full-featured an application is, if it is slow and unresponsive, the users will hate it.

Scalability is the ability of the system to maintain acceptable performance as the load increases, or to support additional load by adding hardware resources. While it is relatively simple to make an application perform well in a single-user environment, it is significantly more difficult to maintain that level of performance as the number of simultaneous users increases to thousands, or in the case of very large public websites, to tens or even hundreds of thousands. The bottom line is, if your application doesn't scale well, its performance will degrade as the load increases and the users will hate it.

Finally, availability is measured as the percentage of time an application is available to the users. While some applications can crash several times a day without causing major inconvenience to the user, most mission-critical applications simply cannot afford that luxury and need to be available 24 hours a day, every day. If your application is mission critical, you need to ensure that it is highly available or the users will hate it. To make things even worse, if you build an e-commerce website that crashes during the holiday season, your investors will hate you as well. The moral of the story is that in order to keep your users happy and avoid all that hatred, you as an architect need to ensure that your application is fast, remains fast even under heavy load, and stays up and running even when the hardware or software components that it depends on fail. Unfortunately, while it is relatively easy to satisfy any one of these three requirements individually and not too difficult to comply with any two of them, it is considerably more difficult to fulfill all three at the same time.

Introducing Oracle Coherence

Over the last few years, In-Memory Data Grids have become an increasingly popular way to solve many of the problems related to performance and scalability, while improving availability of the system at the same time. Oracle Coherence is an In-Memory Data Grid that allows you to eliminate single points of failure and single points of bottleneck in your application by distributing your application's objects and related processing across multiple physical servers.

There are several important points in the definition above:

• Coherence manages application objects, which are ready for use within the application. This eliminates the need for repeated, and often expensive, loading and transformation of the raw data into objects.

• Coherence distributes application objects across many physical servers while ensuring that a coherent, Single System Image (SSI) is presented to the application.

• Coherence ensures that no data or in-fl ight operations are lost by assuming that any node could fail at any time and by ensuring that every piece of information is stored in multiple places.

• Coherence stores data in memory in order to achieve very high performance and low latency for data access.

• Coherence allows you to distribute not only application objects, but also the processing that should be performed on these objects. This can help you eliminate single points of bottleneck.

The following sections provide a high-level overview of Coherence features; the remainder of the book will teach you "how", and more importantly, "when" to use them.

About the Authors

Aleksandar Seovic is the founder of and managing director at S4HC, Inc., where he leads professional services practice. He works with customers throughout the world to help them solve performance and scalability puzzles and implement innovative solutions to complex business and technical problems.

Aleksandar lead the implementation of Oracle Coherence for .NET, a client library that allows applications written in any .NET language to access data and services provided by an Oracle Coherence data grid. He was also one of the key people involved in the design and implementation of Portable Object Format (POF), a platform-independent object serialization format that allows seamless interoperability of Coherence-based Java, .NET, and C++ applications.

Aleksandar is Oracle ACE Director for Fusion Middleware, and frequently speaks about and evangelizes Coherence at conferences, Java and .NET user group events, and Coherence SIGs. He blogs about Coherence and related topics at http://coherence.seovic.com.

Mark Falco is a Consulting Member of Technical Staff at Oracle. He has been part of the Coherence development team since 2005 where he has specialized in the areas of clustered communication protocols as well as the Coherence for C++ object model. Mark holds a B.S. in computer science from Stevens Institute of Technology.

Patrick Peralta is a Senior Software Engineer for Oracle (formerly Tangosol) specializing in Coherence and middleware Java. He wears many hats in Coherence engineering, including development, training, documentation, and support. He has extensive experience in supporting and consulting customers in fields such as retail, hospitality, and finance.

Ads

As an active member of the Java developer community he has spoken at user groups and conferences across the US including Spring One and Oracle Open World. Prior to joining Oracle, Patrick was a senior developer at Symantec, working on Java/J2EE based services, web applications, system integrations, and Swing desktop clients. Patrick has a B.S. in computer science from Stetson University in Florida.

He currently maintains a blog on Coherence and other software development topics at http://blackbeanbag.net.

Read Oracle Coherence 3.5 Book Review

Read Sample Chapter

     ●  Oracle Coherence: Distributed Caching
     ●  Oracle Coherence: In-place and Parallel Processing
     ●  Oracle Coherence: Coherence within the Oracle Ecosystem
     ●  Oracle Coherence: Querying The Data Grid
     ●  Oracle Coherence: Built-in Filters
     ●  Oracle Coherence: Value and Reflection Extractor
     ●  Oracle Coherence: Other built-in value extractors
     ●  Oracle Coherence: Implementing Custom Value Extractor
     ●  Oracle Coherence: Simplifying Coherence Queries
     ●  Oracle Coherence: Obtaining Query Results
     ●  Oracle Coherence: Controlling Query Scope Using Data Affinity
     ●  Oracle Coherence: Querying Near Cache
     ●  Oracle Coherence: Paging Over Query Results
     ●  Oracle Coherence: Anatomy of an Index
     ●  Oracle Coherence: Creating Indexes
     ●  Oracle Coherence: Query Limitations
     ●  Oracle Coherence: Aggregators
     ●  Oracle Coherence: Built-in Aggregators



 
This tutorial is part of a Oracle Coherence tutorial series. Read it from the beginning and learn yourself.

Oracle Coherence

 

Comments