Extended Attributes

Extended Attributes (XATTR) are metadata that can be provided on a per-application basis.

Couchbase Server permits the addition of extended attributes (XATTRs).

These allow application developers to define application-specific metadata that will only be visible to those applications that request it or attempt to modify it. This might be, for example, meta-data specific to a programming framework that should be hidden by default from other frameworks, or possibly from other versions of the same framework.

Using Extended Attributes

The SDK supports extended attributes by means of extensions to the Sub-Document API: so that extended attributes can be defined, searched for, edited, removed, and more. In order to specify that a subdocument operation should be performed on an extended rather than a regular attribute, an xattr flag should be set to true, by the calling application. For detailed information on the Subdocument API, see Subdocument Operations.

For more information, see Extended Attributes, and our example code.

The maximum content size for a document stored in Couchbase Server is 20MB. XATTRs — including Virtual XATTRs — will reduce the space available for the remainder of the document.

Virtual Extended Attributes

Virtual extended attributes consist of metadata on an individual document: this can be retrieved by specifying $document as a search-path. For example:

frag, err := bucket.LookupIn("test").Get("$document", gocb.SubdocFlagXattr").Execute()

See the Virtual XATTR Section for more information on the metadata that they expose.

These attributes are generated on-demand to expose storage-level document metadata, such as TTL to expose document expiration. For TTL using Virtual XATTR, use the following:

frag, err := bucket.LookupIn("test").Get("$document.exptime", gocb.SubdocFlagXattr").Execute()

See the example page for a complete code sample.