-
Notifications
You must be signed in to change notification settings - Fork 3
Home
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 (at least in the standard configuration).
In the last decades Java became more and more popular specially for classical enterprise applications. The setting is often quite similar: a set of business objects is stored in a database, a server application accesses the data, implements the use cases and provides an interface (often REST) that a client (often WEB) can use to preset the business logic to the user. Most use cases provided by the system 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. Specially for this type of applications enterprise Java frameworks (JEE / Jakarta EE) are very strong. Matters of concurrency, consistency and visibility are mostly delegated to the database. The application is only responsible for the proper demarcation of the transaction boundaries. In JEE / Jakarta EE this can usually be done using annotations so the actual code can focus on the business logic. The approach works very well for the described application type and developers can become very productive using the JEE programming model. In the recent years another type of application became more and more popular: cloud applications. Here concepts like reactive programming and frameworks implementing the MicroProfile standard become important.
A little less common are algorithmic applications requiring a lot more computation on the data. Sometimes these computations are quite complex (including e.g. optimization algorithms) and often critical to the performance of the overall system. An additional challenge can be the need to process incoming events e.g. from technical devices coupled via an interface (often TCP/IP), at a very high frequency. A typical example is a system steering an automated warehouses with many different transport devices with the goal to optimize the overall material flow. In scenarios like this the typical pattern used for enterprise application often reaches its limit. Often the algorithms have to work on a transient (in memory) representation of the relevant data (without fetching it from the database again and again) to gurantee the required performance.
Next Chapter: Background