i.o.cluster also known as interference open cluster is a simple java framework enables you to launch a distributed database and
complex event processing service within your java application, using JPA-like interface and annotations for structure mapping and data operations.
This software inherits its name from the interference project, within which its mechanisms were developed.
The basic unit of the i.o.cluster service is a node - it can be a standalone running service, or a service running within some java application.
Each i.o.cluster node has own persistent storage and can considered and used as a local database with following basic features:
runs in the same JVM with your application
operates with simple objects (POJOs)
uses base JPA annotations for object mapping directly to persistent storage
supports SQL queries with READ COMMITTED isolation level
supports transactions
supports complex event processing (CEP) and simple streaming SQL
can be used as a local or distributed SQL database
uses the simple and fast serialization
uses persistent indices for fast access to data and increase performance of SQL joins
allows flexible management of data in memory for stable operation of a node at any ratio of storage size / available memory, which allows, depending on the problem being solved, how to allocate all data directly in memory with a sufficient heap size, or use access to huge storages with a minimum heap size of java application
Nodes can be joined into a cluster, at the cluster level with inter-node interactions, we get the following features:
allows you to insert data and run SQL queries from any node included in the cluster
support of horizontal scaling SQL queries with READ COMMITTED isolation level
support of transparent cluster-level transactions
support of complex event processing (CEP) and simple streaming SQL
i.o.cluster nodes does not require the launch of any additional coordinators