https://github.com/vlingo/xoom-symbio
The VLINGO XOOM platform SDK delivering Reactive storage that is scalable, high-throughput, and resilient for CQRS, Event Sourcing, Key-Value, and Objects used by services and applications.
https://github.com/vlingo/xoom-symbio
actor-model actors cqrs events eventsourcing eventstore journal jvm jvm-languages persistence reactive reactive-programming vlingo-symbio
Last synced: 5 months ago
JSON representation
The VLINGO XOOM platform SDK delivering Reactive storage that is scalable, high-throughput, and resilient for CQRS, Event Sourcing, Key-Value, and Objects used by services and applications.
- Host: GitHub
- URL: https://github.com/vlingo/xoom-symbio
- Owner: vlingo
- License: mpl-2.0
- Created: 2018-06-28T03:07:28.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-11-29T22:25:22.000Z (over 1 year ago)
- Last Synced: 2024-05-01T09:50:26.946Z (12 months ago)
- Topics: actor-model, actors, cqrs, events, eventsourcing, eventstore, journal, jvm, jvm-languages, persistence, reactive, reactive-programming, vlingo-symbio
- Language: Java
- Homepage: https://vlingo.io
- Size: 1010 KB
- Stars: 40
- Watchers: 11
- Forks: 9
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# xoom-symbio
[](http://javadoc.io/doc/io.vlingo.xoom/xoom-symbio) [](https://github.com/vlingo/xoom-symbio/actions?query=workflow%3ABuild) [](https://search.maven.org/artifact/io.vlingo.xoom/xoom-symbio) [](https://gitter.im/vlingo-platform-java/symbio)
The VLINGO XOOM platform SDK delivering Reactive storage that is scalable, high-throughput, and resilient for CQRS, Event Sourcing, Key-Value, and Objects used by services and applications.
Docs: https://docs.vlingo.io/xoom-symbio
### Name
The name "symbio" highlights the symbiotic relationship between domain models and persistence mechanisms.
Domain models must be persisted and individual parts must be reconstituted to memory when needed. Persistence
mechanisms crave data to store. Hence we can conclude that the two need and benefit from the other.Interestingly too is that the name "symbio" ends with the letters, i and o, for input and output.
The `StateStorage`, introduced next, produces domain model output to disk, and input from disk back to
the domain model.### Journal Storage
The `Journal` and related protocols support simple-to-use Event Sourcing, including `JournalReader` for
streaming across all entries in the journal, and `StreamReader` for reaching individual "sub-streams"
belonging to entities/aggregates in your application. There is a growing number of implementations:- JDBC over Postgres: `PostgresJournalActor` and supporting asynchronous readers
- FoundationDB support: `FoundationDBJournalActor` and supporting asynchronous readers### State Storage
The `StateStore` is a simple CQRS Key-Value (Key-CLOB/BLOB) storage mechanism that can be run against a number of persistence engines.
Use it for both Command/Write Models and Query/Read Models. These are the available storage implementations:- In-memory binary: `InMemoryBinaryStateStoreActor`
- In-memory text: `InMemoryTextStateStoreActor`
- DynamoDB Text Store: `DynamoDBTextStateActor`
- DynamoDB Binary Store: `DynamoDBBinaryStateActor`
- General-purpose JDBC: `JDBCTextStateStoreActor`
- Apache Geode: `GeodeStateStoreActor`
The `JDBCTextStateStoreActor` has these database delegate implementations:- HSQLDB: `HSQLDBStorageDelegate`
- PostgresSQL: `PostgresStorageDelegate`Adding additional JDBC storage delegates is a straightforward process requiring a few hours of work.
We welcome you to add support for your favorite database!
### Object Storage
The `ObjectStore` is a simple object-relational mapped storage mechanism that can be run against a number of
persistence engines. These are the available implementations:- Jdbi over JDBC: `JdbiObjectStoreDelegate` controlled under `JDBCObjectStoreActor`
- JPA standard: `JPAObjectStoreDelegate` for JPA implementations, including EclipseLink, OpenJPA, and Hibernate### Installation
```xml
io.vlingo.xoom
xoom-symbio
1.11.1
compile
``````gradle
dependencies {
compile 'io.vlingo.xoom:xoom-symbio:1.11.1'
}
```License (See LICENSE file for full license)
-------------------------------------------
Copyright © 2012-2023 VLINGO LABS. All rights reserved.This Source Code Form is subject to the terms of the
Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain
one at https://mozilla.org/MPL/2.0/.