{"id":20800045,"url":"https://github.com/vlingo/xoom-symbio","last_synced_at":"2025-05-07T00:06:01.478Z","repository":{"id":49961247,"uuid":"138959779","full_name":"vlingo/xoom-symbio","owner":"vlingo","description":"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.","archived":false,"fork":false,"pushed_at":"2023-11-29T22:25:22.000Z","size":1034,"stargazers_count":42,"open_issues_count":2,"forks_count":9,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-31T04:12:35.375Z","etag":null,"topics":["actor-model","actors","cqrs","events","eventsourcing","eventstore","journal","jvm","jvm-languages","persistence","reactive","reactive-programming","vlingo-symbio"],"latest_commit_sha":null,"homepage":"https://vlingo.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vlingo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-28T03:07:28.000Z","updated_at":"2025-02-14T11:26:29.000Z","dependencies_parsed_at":"2023-11-29T23:38:13.077Z","dependency_job_id":null,"html_url":"https://github.com/vlingo/xoom-symbio","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlingo%2Fxoom-symbio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlingo%2Fxoom-symbio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlingo%2Fxoom-symbio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlingo%2Fxoom-symbio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vlingo","download_url":"https://codeload.github.com/vlingo/xoom-symbio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252788517,"owners_count":21804285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actor-model","actors","cqrs","events","eventsourcing","eventstore","journal","jvm","jvm-languages","persistence","reactive","reactive-programming","vlingo-symbio"],"created_at":"2024-11-17T18:12:04.795Z","updated_at":"2025-05-07T00:06:01.081Z","avatar_url":"https://github.com/vlingo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xoom-symbio\n\n[![Javadocs](http://javadoc.io/badge/io.vlingo.xoom/xoom-symbio.svg?color=brightgreen)](http://javadoc.io/doc/io.vlingo.xoom/xoom-symbio) [![Build](https://github.com/vlingo/xoom-symbio/workflows/Build/badge.svg)](https://github.com/vlingo/xoom-symbio/actions?query=workflow%3ABuild) [![Download](https://img.shields.io/maven-central/v/io.vlingo.xoom/xoom-symbio?label=maven)](https://search.maven.org/artifact/io.vlingo.xoom/xoom-symbio) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/vlingo-platform-java/symbio)\n\nThe 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.\n\nDocs: https://docs.vlingo.io/xoom-symbio\n\n### Name\nThe name \"symbio\" highlights the symbiotic relationship between domain models and persistence mechanisms.\nDomain models must be persisted and individual parts must be reconstituted to memory when needed. Persistence\nmechanisms crave data to store. Hence we can conclude that the two need and benefit from the other.\n\nInterestingly too is that the name \"symbio\" ends with the letters, i and o, for input and output.\nThe `StateStorage`, introduced next, produces domain model output to disk, and input from disk back to\nthe domain model.\n\n### Journal Storage\nThe `Journal` and related protocols support simple-to-use Event Sourcing, including `JournalReader` for\nstreaming across all entries in the journal, and `StreamReader` for reaching individual \"sub-streams\"\nbelonging to entities/aggregates in your application. There is a growing number of implementations:\n\n   - JDBC over Postgres: `PostgresJournalActor` and supporting asynchronous readers\n   - FoundationDB support: `FoundationDBJournalActor` and supporting asynchronous readers\n\n### State Storage\nThe `StateStore` is a simple CQRS Key-Value (Key-CLOB/BLOB) storage mechanism that can be run against a number of persistence engines.\nUse it for both Command/Write Models and Query/Read Models. These are the available storage implementations:\n\n   - In-memory binary: `InMemoryBinaryStateStoreActor`\n   - In-memory text: `InMemoryTextStateStoreActor`\n   - DynamoDB Text Store: `DynamoDBTextStateActor`\n   - DynamoDB Binary Store: `DynamoDBBinaryStateActor`\n   - General-purpose JDBC: `JDBCTextStateStoreActor`\n   - Apache Geode: `GeodeStateStoreActor`\n   \nThe `JDBCTextStateStoreActor` has these database delegate implementations:\n\n   - HSQLDB: `HSQLDBStorageDelegate`\n   - PostgresSQL: `PostgresStorageDelegate`\n\nAdding additional JDBC storage delegates is a straightforward process requiring a few hours of work.\n\nWe welcome you to add support for your favorite database!\n\n### Object Storage\nThe `ObjectStore` is a simple object-relational mapped storage mechanism that can be run against a number of\npersistence engines. These are the available implementations:\n\n   - Jdbi over JDBC: `JdbiObjectStoreDelegate` controlled under `JDBCObjectStoreActor`\n   - JPA standard: `JPAObjectStoreDelegate` for JPA implementations, including EclipseLink, OpenJPA, and Hibernate\n\n### Installation\n\n```xml\n  \u003cdependencies\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003eio.vlingo.xoom\u003c/groupId\u003e\n      \u003cartifactId\u003exoom-symbio\u003c/artifactId\u003e\n      \u003cversion\u003e1.11.1\u003c/version\u003e\n      \u003cscope\u003ecompile\u003c/scope\u003e\n    \u003c/dependency\u003e\n  \u003c/dependencies\u003e\n```\n\n```gradle\ndependencies {\n    compile 'io.vlingo.xoom:xoom-symbio:1.11.1'\n}\n```\n\nLicense (See LICENSE file for full license)\n-------------------------------------------\nCopyright © 2012-2023 VLINGO LABS. All rights reserved.\n\nThis Source Code Form is subject to the terms of the\nMozilla Public License, v. 2.0. If a copy of the MPL\nwas not distributed with this file, You can obtain\none at https://mozilla.org/MPL/2.0/.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlingo%2Fxoom-symbio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvlingo%2Fxoom-symbio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlingo%2Fxoom-symbio/lists"}