Version control by temporal tables
Version control in the Software Factory is handled by using temporal tables. These tables, also known as system-versioned temporal tables, are a database feature that brings built-in support for providing historical data.
It means that only the latest version of every model will be stored, and all old data will be moved to history tables. So, data modifications will be stored only once. The historical data can be accessed whenever required by requesting them for a specific time in the past.
This way of version control offers great benefits:
- Little impact on performance since the operational data in the Software Factory is separated from the non-operational data.
- No need to store massive amounts of unnecessary data.
- Only a minimum of operational data is called upon when, for example, copying a model or branching and merging.
- A low risk that a developer accidentally modifies an earlier version of the model because they will always be working in the most recent version.
A visual representation
A branch from a model may contain multiple model versions, with the latest version being the current version. All four branches are a similar size regardless of the amount of model data they contain. They will not even noticeably grow in size when they contain multiple model versions since only one point in time is saved to build the model at that point.
Only the history tables can grow in size. The history tables in branches MAIN and A are larger than those in B and C because more changes have been executed and stored. However, because the history tables are called only in very specific processes, this does not impede the performance of the Software Factory.
Version control in the Software Factory