Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for schema pluggability and schema references #1280

Merged
merged 17 commits into from
Jan 8, 2020

Conversation

rayokota
Copy link
Member

@rayokota rayokota commented Jan 7, 2020

This PR add supports for pluggability and schema references.

The notion of a schema has been abstracted into a new interface in Schema Registry called ParsedSchema. Implementing a ParsedSchema and a SchemaProvider are all that is needed to add new a schema type to Schema Registry.

In order to add further schema types, the following property should be set in the Schema Registry properties file:

schema.providers=my.package.MySchemaProvider

Avro, JSON Schema, and Protobuf all have the notion of schema references (also sometimes referred to as schema imports or schema includes). This feature is less important for Avro since the feature is associated with their protocol functionality, which is not used by Schema Registry. However, for JSON Schema and especially Protobuf, the use of schema references is more prevalent. Therefore Schema Registry now supports the notion of schema references. A schema reference is comprised of

A name for the reference.

For Avro, it would be a fully qualified schema name.
For JSON Schema, it would be a URL.
For Protobuf, it would be the name of another Protobuf file.
A subject, representing the subject under which the referenced schema is registered.
A version, representing the exact version of the schema under the registered subject.
When registering a schema, the associated references, if any, need to be passed. Typically the referenced schemas would be first registered, then their subjects and versions can be used when registering the schema that references them.

When a schema that has references is retrieved from Schema Registry, the referenced schemas will also be retrieved if needed.

Copy link
Contributor

@tuvtran tuvtran left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! LGTM!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants