Skip to content
Jan Wiemer edited this page Dec 23, 2020 · 20 revisions

Java ACI Store - a transient and transactional store for Java objects.

The name JACIS of the store is derived from the acronym ACID (Atomicity, Consistency, Isolation, Durability) describing the properties of transactions. The store is designed to fulfill the first three of these properties but not the Durability.

Motivation

In recent years Java became more and more popular any widely spread in different areas of application. Specially for classical enterprise applications, where a set of business objects stored in a database and the application provides access and more or less simple operations on the data, Java is getting used more and more. Most such operations follow a similar pattern: first fetch the needed data from a database, then do the required operations on the data and finally update the changes in the database. This is the type of applications where JEE / Jakarta EE became strong. Matters of concurrency, consistency and visibility are mostly handled by the database. The main task left to the Java application is to ensure an appropriate demarcation of the transactions. In JEE / Jakarta EE this is usually done using annotations. The main goal is that the code can focus on the business logic. The approach works very well for the application type it was designed for.

A little less common are applications requiring a lot more computation on the data. These computations are sometimes quite complex ad often critical to the performance of the overall system. For some technical applications the events do not always come from a dialog system, but from technical devices. Depending on the devices this may lead to a quite heavy load of events that have to be processed. A typical example for such a system is an automated warehouses where the different transport devices have to be steered and an efficient material flow has to be achieved. In scenarios like this the typical pattern used for enterprise application often reaches its limit. In many cases the algorithms have to work on a transient representation of the relevant data stored in memory to gurantee the required performance.

Next Chapter: Background

Clone this wiki locally