Over the past two decades, in-memory computing has gone through an evolution. Many factors have contributed to its development, including more data, a demand for real-time analytics, and the proliferation and complexity of business applications.
In-memory computing means storing information in random access memory (RAM) rather than in relational databases that operate on slow disk drives. It makes it possible to detect patterns, analyze huge data sets quickly, and perform operations quickly.
In-memory database caching
In-memory technology first developed as database caching. Even today, ‘three-tier architecture’ is common where there’s a browser a user interacts with, an application for business logic, and a database for storing the data. When the amount of data is small, this works well but as soon as the amount of data increases, bottlenecks impede efficiency.
Caching was developed to keep the data most frequently accessed in the application layer so there was no need to have to go and fetch it from the database every time. Caching was the first instance of in-memory computing.
The first caching systems were simple but the demand for new features began to grow. There was an issue of how to protect data when keeping it in memory if a server crashed. Another issue was how to keep data in sync for transactions when using multiple servers. The need to solve issues like these eventually precipitated a new development to help maintain organization – the in-memory data grid.
In-memory data grid (IMDG)
In-memory data grids developed as a response to the desire for more features than in-memory database caching could offer. The IMDG is basically a cluster of servers that pool their RAM to hold data. Middleware software allows data to reside in the RAM across the servers instead of in a centralized database.
The whole data set is divided across the memory of individual computers so each one only stores a portion of the whole set. Partitioning data like this makes parallel distributed processing essential. This allows for better scaling and lightning-fast performance.
An IMDG is designed for running large-scale applications. The highest possible application performance comes from using RAM and parallel distributed processing, the two primary tenets of in-memory computing. The specialized software running on each computer in the cluster coordinates data access for applications.
Using an IMDG does not require replacing an existing database. It works with the existing database by providing a layer of distributed in-memory storage and processing between it and the application. IMDGs offer a combination of memory-based storage, scalability, high availability and integrated computing. Applications that manage live data need this combination. An IMDG is ideal for accessing and modifying data in complex computations, like risk analysis.
In-memory database (IMDB)
The in-memory database was developed in the late 2000s. The idea was to make faster versions of databases using memory as the main storage medium instead of disks.
An IMDB is suitable for more storage-focused applications that run simple calculations across a large dataset or where it’s necessary to retrieve only small subsets of data at a given time. An IMDB makes it possible to retrieve and process data points and write back to the IMDB.
IMDBs are faster than disk-based databases but they are not as fast as IMDGs. They use familiar database systems and so there is not much of a learning curve when using them. However, they aren’t as convenient or fast as some other types of in-memory computing. Most existing SQL databases (disk or memory) are based on vertical architecture and unable to scale horizontally, unlike IMDGs that can scale to hundreds or thousands of servers.
For businesses that need increased speed, a quick learning curve and do not need scalability, an IMDB can be an option.
In-memory computing began evolving in a number of different directions, including in-memory streaming. The growth of sensory data, the Internet of Things, wearable devices etc meant that continuous data streams needed mining to improve efficiency, save lives, solve problems, and enhance user experiences.
With the endless flood of data, as numerous automatic devices or sensors send data at the same time, processing becomes difficult. Handling this in-memory provides the answer.
In-memory streaming processes data while it’s in motion. Businesses are finding that with the amount of data streaming in, they simply don’t have the processing power to cope. With the explosion of connected devices that keep becoming more complex, the need for in-memory streaming keeps growing.
Businesses began recognizing the power of in-memory computing but they worried about its complexity. They began asking whether there was a ‘plug-and-play’ type of solution that would enable them to use in-memory computing with their existing systems.
There is a need for more simplicity for mainstream adoption of in-memory computing. Average users need to be able to use it and in-memory accelerators give them the opportunity to benefit from ‘plug-and-play’ capability. They can simply install something and experience a dramatic increase in speed, performance and scalability. Users have a familiar way to process data and don’t have to completely redevelop their systems to benefit from in-memory capabilities. This can help them to make informed decisions while promoting a new business or a new product.
In-memory computing platform
From a piecemeal approach to in-memory computing, a more strategic and comprehensive approach is evolving – the use of in-memory computing platforms. A single platform encompasses all the forms of in-memory computing in use in a large organization, such as IMDGs, in-memory streaming, accelerator products etc.
Large organizations don’t want to coordinate a whole lot of different vendors and train employees on different product technologies. They would rather have a single product, configuration and learning curve with the ability to manage and monitor in a unified way.
In-memory computing has offered a variety of solutions over the past decade, including IMGDs, IMDBs, in-memory streaming and in-memory accelerators. However, there is a need for a more cohesive, comprehensive approach and in-memory computing platforms provide the solution. Those that use in-memory computing platforms will make use of in-memory computing in ways not seen before and stay ahead of the competition.