- Atoti in-memory datastore natively manages data versioning
- With DirectQuery, data versioning is dependent on the external database’s native support.
What is a version?
A version represents a snapshot of the available data at a specific point in time. Versions allow you to access data from different points in time.What is an epoch?
An epoch is a point-in-time marker within a version.It tracks incremental changes applied to a version. Epochs allow you to:
- Roll back to a previous state.
- Audit changes over time.
What is a branch?
A branch contains several versions of the data that can evolve independently. Branches are useful for performing simulations:- Testing changes without impacting the original version.
- Creating alternative scenarios.
- Performing What-if analysis.
Versioning in the Atoti datastore
When data resides in the Atoti Datastore, versioning is provided natively by Atoti.- Each committed transaction creates a new version of the datastore. The new version can be queried.
- Epochs record incremental changes within versions for auditing and rollback.
- Branches are fully supported and provide an isolated workspace for simulations without affecting the main data.
- Branches can be compared directly with the base version or with other branches to evaluate the impact of changes, forming the basis of Atoti’s what‑if analysis.
Related reading
Find out more about data versioning and the Atoti datatstore by following these links:Versioning with DirectQuery
With DirectQuery, Atoti reads data directly from an external database and maintains internal snapshots to support hierarchies and aggregates. Versioning capabilities depend on the external system:- If the external database supports native time travel, Atoti can query historical snapshots.
- If the external database does not support native time travel, only the latest snapshot is available.
Further reading
For an introduction to DirectQuery read this page. Keep DirectQuery data up to date using Atoti Java SDK:- Incremental refresh: A specific scope of data is updated.
- Full refresh: All the data from the external database is updated.
Summary: Datastore vs. DirectQuery
| Capability | Datastore | DirectQuery |
|---|---|---|
| Historical versions available | ✔️ Natively provides consistent snapshots | ✔️ Only if external DB supports time travel; otherwise latest snapshot |
| Epochs within versions | ✔️ Fully supported | ⚠️ Behavior depends on external DB’s capabilities |
| Branches for simulations | ✔️ Fully supported | ❌ Not supported |
| How changes are ingested | Automatic via transactions | User‑triggered Incremental or full refresh |
| Cube availability during updates | ✔️ Yes | ✔️ Yes (during both incremental and full refresh) |
| Risk of desynchronization | Low | Medium for non‑time‑travel databases until refresh completes |