Description
Lightweight implementation, succinct data models, fast command processing, in-memory and on-disk indexing, causality-preserving hybrid logical clocks, locking primitives and OSGi support out of the box.
Instead of mutating data in a database, it stores all changes (events) and causes (commands). This facilitates rapid application development and evolution by mitigating the inability to predict how future needs will drive data shape requirements as all causal information is persisted. It also provides a foundation for deep analytics, data recovery, audit trails and other associated benefits.
Eventsourcing for Java alternatives and similar libraries
Based on the "Database" category.
Alternatively, view Eventsourcing for Java alternatives based on common mentions on social networks and blogs.
-
MapDB
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine. -
orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. -
ObjectBox embedded database
Android Database - first and fast, lightweight on-device vector database -
Crate
CrateDB is a distributed and scalable SQL database for storing and analyzing massive amounts of data in near real-time, even with complex queries. It is PostgreSQL-compatible, and based on Lucene. -
Chronicle Map
Replicate your Key Value Store across your network, with consistency, persistance and performance. -
JDBI
The Jdbi library provides convenient, idiomatic access to relational databases in Java and other JVM technologies such as Kotlin, Clojure or Scala. -
sql2o
sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters. -
JetBrains Xodus
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub. -
FlexyPool
FlexyPool adds metrics and failover strategies to a given Connection Pool, allowing it to resize on demand.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Eventsourcing for Java or a related project?
README
Eventsourcing for Java
Enabling plurality and evolution of domain models
Instead of mutating data in a database, Eventsourcing stores all changes (events) and what caused them (commands). To make this data useful, Eventsourcing builds indices over it.
This helps developing applications faster because there is no need to worry about designing the right domain models upfront (or as close to right as possible). By keeping all the commands and events, we can enrich or change our domain models over time with very little friction. Furthermore, this approach removes a need to have a one and only domain model for every entity. We experience the world and reality in different ways, depending on circumstances and points of view, and our programs should be able to reflect that.
To learn more about what kind of problems ES4J addresses, please read Why Use Eventsourcing Database
Key benefits
- Domain model flexibility
- Late domain model binding
- Persistence of causal information
- Serializable conflict resolution
- Audit trail logging
- Mapping application functionality
Key features
- Strongly typed schemas
- Event migrations
- Domain protocols
- Batteries included (shared event languages)
- Basic support for Kotlin
- Causality-preserving Hybrid Logical Clocks
- In-memory and server (PostgreSQL) storage
- Locking synchronization primitive
- JMX-based introspection and management
Presentation
You can find our current slide deck at https://eventsourcing.com/presentation
Downloading and installing
To start using ES4J, please follow the installation instructions.
Documentation
Documentation can be found at es4j.eventsourcing.com
We strive to specify the building blocks behind Eventsourcing and its ecosystem as succinct specifications, you can find the current list of them at rfc.eventsourcing.com
Roadmap
As this project is striving to be a decentralized, contributors-driven project governed by the C4 process, there is no central roadmap per se. However, there's a centralized list of reported issues. These do not imply an actual roadmap, just what has been reported, ranging from bugs to longer-term design issues.
Contributing
Contributions of all kinds (code, documentation, testing, artwork, etc.) are highly encouraged. Please open a GitHub issue if you want to suggest an idea or ask a question.
We use Unprotocols C4 process. In a nutshell, this means:
- We merge pull requests rapidly (try!)
- We are open to diverse ideas
- We prefer code now over consensus later
For more details, please refer to [CONTRIBUTING](CONTRIBUTING.md)
Related projects
- es4j-graphql A Relay.js/GraphQL adaptor for ES4J-based applications.