One of the following compatibility rules can be selected when using the Schema Registry:

  • BACKWARD: consumers using the new schema can read data written by producers using the latest registered schema.
  • BACKWARD_TRANSITIVE(default): consumers using the new schema can read data written by producers using all previously registered schemas.
  • FORWARD: consumers using the latest registered schema can read data written by producers using the new schema.
  • FORWARD_TRANSITIVE: consumers using all previously registered schemas can read data written by producers using the new schema.
  • FULL: the new schema is forward and backward compatible with the latest registered schema.
  • FULL_TRANSITIVE: the new schema is forward and backward compatible with all previously registered schemas.
  • NONE: schema compatibility checks are disabled.

To enable the semantics above, you are allowed to make the following changes in each option. If you choose TRANSITIVE, it means that schema will be compared against all versions before, not only the last one. The table shows which applications consumers / producers should be upgraded first.

Compatibility TypeWhat is allowedUpgrade first
BACKWARD[_TRANSITIVE]Delete fields. Add optional fields.Consumers
FORWARD[_TRANSITIVE]Add fields. Delete optional fields.Producers
FULL[_TRANSITIVE]Add optional fields.Delete optional fields.Any order
NONEAll changes are accepted.Not Applicable