Repository records are stored in XML. Accessing or manipulating attribute values requires parsing the XML, which can be time-consuming. Snapshot tables are database tables that are used to store copies of the attribute values that need to be accessed quickly.
The benefit of using snapshot tables is that data can be manipulated quickly. The downside of using snapshot tables is that when an attribute value changes, it must be updated in two places, the XML record and the snapshot table. Additionally, the more attributes that are added to a snapshot table, the longer it takes to access their values.
For an attribute to be included in a repository's snapshot table, it must be defined as relational. This is done at the repository level so that repositories based on the same profile can have different attribute columns in their snapshot tables. When the first attribute in a repository is defined as relational, the repository's snapshot table is created. Any additional attributes defined as relational will be added to the snapshot table. If the definition for an included attribute is later changed to not relational, the column will be removed from the snapshot table.