datahub/docs/what/snapshot.md
2019-12-19 13:17:53 -08:00

1.7 KiB

What is a snapshot?

A metadata snapshot models the current state of one or multiple metadata aspects associated with a particular entity. Each entity type is expected to have:

  1. An entity-specific aspect (e.g. GroupAspect from below), which is a typeref containing a union of all possible metadata aspects for the entity.
  2. An entity-specific snapshot (e.g. GroupSnapshot from below), which contains an array (aspects) of entity-specific aspects.
{
 "type": "typeref",
 "name": "GroupAspect",
 "namespace": "com.linkedin.metadata.aspect",
 "doc": "A specific metadata aspect for a group",
 "ref": [
   "com.linkedin.group.Membership",
   "com.linkedin.group.SomeOtherMetadata"
 ]
}
{
 "type": "record",
 "name": "GroupSnapshot",
 "namespace": "com.linkedin.metadata.snapshot",
 "doc": "A metadata snapshot for a specific group entity.",
 "fields": [
   {
     "name": "urn",
     "type": "com.linkedin.common.CorpGroupUrn",
     "doc": "URN for the entity the metadata snapshot is associated with."
   },
   {
     "name": "aspects",
     "doc": "The list of metadata aspects associated with the group.",
     "type": {
       "type": "array",
       "items": "com.linkedin.metadata.aspect.GroupAspect"
     }
   }
 ]
}

The generic Snapshot typeref contains a union of all entity-specific snapshots and can therefore be used to represent the state of any metadata aspect for all supported entity types.

{
 "type": "typeref",
 "name": "Snapshot",
 "namespace": "com.linkedin.metadata.snapshot",
 "doc": "A union of all supported metadata snapshot types.",
 "ref": [
   "DatasetSnapshot",
   "GroupSnapshot",
   "UserSnapshot"
 ]
}