Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Apache Ignite for Database Caching

DZone's Guide to

Apache Ignite for Database Caching

A tutorial on how to use Apache Ignite for caching for RDBMS, NoSQL, or HDFS databases.

· Database Zone
Free Resource

Learn how to move from MongoDB to Couchbase Server for consistent high performance in distributed environments at any scale.

Businesses are accumulating data at enormous rates requiring huge amounts of storage. Managing large data is hard, but processing it is even more challenging. With terabytes of data to store and process, it is often the case that developers find themselves in a quandary about how to strike the right balance between speed, scalability, and cost. 

Storing data in cache can significantly enhance the speed of your application. It reduces the network overhead caused due to frequent data movement between an application and the database. 

Apache Ignite allows you to store the most frequently accessed data in memory. It evenly distributes the data across a cluster of computers in either partitioned or replicated manner. Ignite allows you to access the data from any underlying data store – RDBMS, NoSQL, or HDFS.

You may ask - Once a cluster is formed with n nodes, what if the size of the data set increases? In that case, you can dynamically add nodes to the Ignite cluster without restarting the entire cluster. Ignite has virtually unlimited scale.

Ignite database caching provides the following configurable options: 

Write-Through and Read-Through 

In write-through mode, when data is updated in cache, it is also updated in the underlying database. In case of read-through mode, when the requested data is not available in cache, it is automatically loaded from the database.

Write-Behind Caching

Ignite provides an option to asynchronously perform updates to the database. By default, each update in a write-through mode involves a corresponding request to the underlying database. With write-behind caching enabled, cache data updates are accumulated and sent to the database in batches. For applications where put and remove operations are frequent, write-behind caching can provide a performance boost.

Automatic Persistence

Ignite ships with its own user-friendly database schema-mapping wizard that provides automatic support for integrating with persistent stores. This utility automatically connects to the underlying database and generates all the required XML OR-mapping configuration and Java domain model POJOs.

SQL Queries

To query the Ignite cache, you can simply use the standard SQL syntax (ANSI 99). Ignite lets you use any SQL function, aggregation, or grouping. It also supports distributed SQL JOINs. Here is an example of how to execute an SQL query in Ignite: 

IgniteCache<Long, Person> cache = ignite.cache("mycache");

// ‘Select’ query to concatenate the first and last name of all persons.
SqlFieldsQuery sql = new SqlFieldsQuery(
  "select concat(firstName, ' ', lastName) from Person");

// Execute the query on Ignite cache and print the result.
try (QueryCursor<List<?>> cursor = cache.query(sql)) {
  for (List<?> row : cursor)
    System.out.println("Full name: " + row.get(0));
}


Conclusion

Apache Ignite is an open source project focused towards distributed in-memory computing. Ignite stores data in memory, distributed across multiple nodes providing fast data access. The option to asynchronously propagate data to the persistence layer is an added advantage. Additionally, the ability to integrate with a variety of databases also makes Ignite an easy choice for developers to use it for database caching.

For more information, documentation, and screencasts, visit Apache Ignite website.

Topics:
database ,nosql ,caching ,jcache ,sql ,sql database ,data grid ,ignite ,performance

Published at DZone with permission of Prachi Garg. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}