Differences between a Baseline and a Snapshot

Cradle provides two mechanisms to make protected copies of information, baselines and snapshots. Here we explain what each mechanism does, so you can decide if either or both of them will be helpful in your project. We also explain how each mechanism affects the overall size of your databases, and how they may affect the performance that you experience as you use your databases.

What is a Baseline?

Baselines is the mechanism in Cradle’s Configuration Management System (CMS) to protect information from changes. It is a named repository for the state of a system at a specific point in time. A succession of baselines can be created over the life of a project, each containing more and more information as the project completes its sprints, iterations or phases.

Principles of baselines
Principles of Baselines

Creating Baselines

Each baseline has a unique name and some optional details:

Open Baseline Dialog
Open Baseline Dialog

Items can be registered into an open baseline and are given a version number: 01, 02, 03 …. The version number assigned to each item is either 01 if there are no baselined instances of that item, or it is 1 higher than the highest version already in the database.

When the baseline is closed:

  • Unchanged items from the previous baseline migrate into (become a part of) the new baseline
  • A copy of all current links (cross references) is saved with the baseline
  • A list of the latest items and their versions is saved for the baseline

Migration of Items

Keeping a list of the initial contents of each baseline is important. It does not duplicate the items, rather it creates a list of the items that were in the baseline when it was closed. In the future, any of these items can migrate out of the baseline they were registered into and become part of a new baseline if they have not been superseded by a new version of the item that has already been registered into that new baseline. Therefore, at that future time, items that were marked as being part of one baseline will become marked as being part of a different, newly closed, baseline. The lists created when baselines are closed ensure that it is always possible to know what was part of a baseline when it was originally closed.

For example

A baseline A is created with items I1 and I2, both of which will be version 01. So the database contains:

  • Item I1, version 01, draft <empty>, baseline A
  • Item I2, version 01, draft <empty>, baseline A

If item I1 is to be changed, then a new instance of the item will be created and the database will contain:

  • Item I1, version 01, draft <empty>, baseline A
  • Item I1, version 01, draft A, baseline <empty>
  • Item I2, version 01, draft <empty>, baseline A

When the modified item I1 is registered into a new baseline B, the database will contain:

  • Item I1, version 01, draft <empty>, baseline A
  • Item I1, version 02, draft <empty>, baseline B
  • Item I2, version 01, draft <empty>, baseline A

When the new baseline B is closed, the unchanged item I2 will migrate into baseline B and the database will contain:

  • Item I1, version 01, draft <empty>, baseline A
  • Item I1, version 02, draft <empty>, baseline B
  • Item I2, version 01, draft <empty>, baseline B

If a new item I3 is created and item I1 is changed again and a new baseline C is created, and the items are registered into it and the baseline is closed, then the unchanged item I2 will migrate into the new baseline and the database will contain:

  • Item I1, version 01, draft <empty>, baseline A
  • Item I1, version 02, draft <empty>, baseline B
  • Item I1, version 03, draft <empty>, baseline C
  • Item I2, version 01, draft <empty>, baseline C
  • Item I3, version 01, draft <empty>, baseline C

The database will have lists of the original contents of the baselines. In this example, these lists will be:

  • Baseline A:
    • Item I1, version 01
    • Item I2, version 01
  • Baseline B:
    • Item I1, version 02
    • Item I2, version 01
  • Baseline C:
    • Item I1, version 03
    • Item I2, version 01
    • Item I3, version 01

Having these lists preserved means that Cradle can restore a previous baseline if required.

Using Baselines

The latest baseline is automatically available. It provides read-only access to the latest version of all baselined items and the links between them.

You can use baseline mode to browse a previous baseline read-only:

Baseline Mode Dialog
Baseline Mode Dialog

In baseline mode, you see only the items and links that were in effect when your chosen baseline was closed. So you are looking at the database as it was in the past, potentially many months or years ago. Everything that you see (including queries, matrices, graphs, pivot tables and published documents) uses that old baseline.

Database Effects

Creating baselines increases the size of your database which affects its performance:

  • Each baseline adds new versions of changed items, but reuses unchanged items from previous baselines
  • Creates a copy of all active links

Over time, having many baselines will:

  • Slightly increase the number of items in searches, reducing query performance
  • Greatly increase the time to follow cross-references, reducing the performance of queries and views, and a wide variety of other database operations, including reordering, split and merge, finding and filtering linked items for traceability/coverage views, reports and documents

In a notable example, a database with ~60,000 active links had over 41,000,000 total links due to over 650 baselines. This slowed all link-related operations as Cradle had over 650 instances of each link from which to isolate the links to be used.

What is a Snapshot?

A snapshot is a copy of all the information in a database. Its contents can be viewed, read-only, at any time in the future. A succession of snapshots can be created over the life of a project. In effect, a snapshot is simply an online backup, a copy of a database.

Creating Snapshots

Each snapshot has a unique name and some optional details:

Create Snapshot Dialog
Create Snapshot Dialog

A snapshot is a copy of an entire database. When a snapshot is created, everything in a database, including all its baselines and definitions (excluding Personal and System scope) is copied into a separate area. Every snapshot is separate from all other snapshots and separate from the live database.

Creating a snapshot is similar to making a backup copy of the database, except that this backup is directly accessible from within Cradle.

Using Snapshots

You can select a snapshot to browse read-only:

Select Snapshot Dialog
Select Snapshot Dialog

When you select a snapshot, Cradle is no longer working in the live database, but instead it is working in your chosen snapshot (copy) of that database. Everything that you see (including queries, matrices, graphs, pivot tables and published documents) is in that copy of the database.

Since a snapshot is a copy of an entire database, a snapshot can contain baselines. Therefore, you can:

  • Select a snapshot
  • Enter baseline mode in that snapshot

Database Effects

Creating a database has no effect on the size of a database since it simply takes a copy of that entire database, whatever it is, and including all of its baselines and definitions.

Since it copies everything, more disk space will be used by creating a snapshot of a database than when a new baseline is created inside that database. However, the number of items and links inside the snapshot are the same as the numbers inside the original database.

Baselines vs Snapshots

#CharacteristicBaselineSnapshot
1SummaryCreates a new approved set of items and links in a database that can be viewed RO.Copies an entire database and related definitions to create a new database that can be viewed RO.
2PurposeRecord the next stage in the development of a project.Make an online backup of everything.
3User BenefitRO view of previous baseline that can be used for queries, view data, run metrics, publish reports or documents.RO view of everything in the database as it was in the past, for queries, view data, run metrics, publish reports or documents.
4Process RelatedBaselines are often taken just before or after major process milestones, such as URR, SRR, PDR, CDR, PRR, TRR or ORR.*None. These are purely for data integrity and as a convenience for having permanent access to the database at a particular time.
5LimitsOnly contains information approved in the CMS and the links between them.None, it contains the entire database.
6Additional ItemsNoneNone.
7Additional LinksDuplicates all current linksNone.
8Database SizeAdds some items and a copy of all links.None.
9Disk UsageSmall to medium increase.Medium to large increase.
10Time to CreateSeconds to many minutes.Seconds to few minutes.

* for acronyms, please see https://en.wikipedia.org/wiki/Design_review_(U.S._government) and other similar sources.