Skip to main content

Versioning Data Structures using Iglu

info
This documentation only applies to Snowplow Community Edition. See the feature comparison page for more information about the different Snowplow offerings.

How do I version?โ€‹

Breaking and non-breaking changesโ€‹

When evolving your schema and uploading it to your Iglu Server, you will need to choose how to increment its version.

There are two kinds of schema changes:

  • Non-breaking - a non-breaking change is backward compatible with historical data and increments the patch number i.e.ย 1-0-0ย ->ย 1-0-1.
  • Breaking - a breaking change is not backwards compatible with historical data and increments the model number i.e.ย 1-0-0ย ->ย 2-0-0.

Different data warehouses handle schema evolution slightly differently. Use the table below as a guide for incrementing the schema version appropriately.

RedshiftSnowflake, BigQuery & Databricks
Add / remove / rename an optional fieldNon-breakingNon-breaking
Add / remove / rename a required fieldBreakingBreaking
Change a field from optional to requiredBreakingBreaking
Change a field from required to optionalBreakingNon-breaking
Change the type of an existing fieldBreakingBreaking
Change the size of an existing fieldNon-breakingNon-breaking
caution

In Redshift and Databricks, changing size may also mean type change; e.g. changing the maximum integer from 30000 to 100000. See our documentation on how schemas translate to database types.