The idea behind the name "symbio" is that there is a symbiotic relationship between domain models and persistence, and persistence and domain models. They depend on each other, but in a way that neither "life form" may be entirely conscious of the other. This is certainly true of the domain model more so than the data model.
The VLINGO/SYMBIO parent tool is a set of protocols and default in-memory implementations. The protocols are usable by concrete implementations. The in-memory implementations are useful for testing.
There are three primary kinds of storage mechanism protocols available: ObjectStore
, StateStore
(i.e. Key-Value and NoSQL), and Journal
. Among these there are a number of concrete implementations. For example, there are Postgres implementations of all three: ObjectStore
, StateStore
, and Journal
.
An important point to consider is, if you use the VLINGO/LATTICE entity types, there is no need to learn the operations of the storage types. You get all storage persistence for free when you use one of ObjectEntity
, StatefulEntity
, and EventSourced
.
Each storage type is discussed in the following subsections. Additionally there is a separate useful discussion about Adapters, which are used to translate between application or service state and persistent state.
Type | Description |
​ObjectStore​ | ​ An object storage in which |
​StateStore​ | The basic state storage protocol in which |
​Journal​ | Used within a Bounded Context (microservice) to store |
​Adapters​ | Used to roundtrip translate between service/application state and storage state. |
​