We support interacting with multiple datastores simultaneously through the creation of one session instance for each adapter/datastore.
Say I want to replicate my data across three different datastores (Postgres, Mongo, and Neo4J for example). If I attempt to insert a User instance, I have the aforementioned three places to insert it. Each datastore has its own transaction. For example, a transaction would be create for Postgres, the operations written to the transaction, and the transaction committed. If it fails, we need not continue wit hthe rest. If however, our transaction for Mongo fails, the transaction for Postgres must be rolled back, but that transaction has already been committed and now no longer exists. Our concept of a meta-transaction must then have the knowledge to roll back previous now-non-existent transactions in order to maintain data integrity between the three members of our polyglottal database cluster.
We support interacting with multiple datastores simultaneously through the creation of one session instance for each adapter/datastore.
MetaSessionof sorts that can wrap multiple sessionsMetaTransactionof sorts that can create/commit/rollback multiple lower-level transactions.Say I want to replicate my data across three different datastores (Postgres, Mongo, and Neo4J for example). If I attempt to insert a
Userinstance, I have the aforementioned three places to insert it. Each datastore has its own transaction. For example, a transaction would be create for Postgres, the operations written to the transaction, and the transaction committed. If it fails, we need not continue wit hthe rest. If however, our transaction for Mongo fails, the transaction for Postgres must be rolled back, but that transaction has already been committed and now no longer exists. Our concept of a meta-transaction must then have the knowledge to roll back previous now-non-existent transactions in order to maintain data integrity between the three members of our polyglottal database cluster.