Skip to content

Data Types#

Concourse is a dynamically typed database which means that value types are intelligently inferred and comparisons can be made across value types.

Values in Concourse can be

Primitive Types#





A Link is a pointer to another record. Links are used model relationship graphs within Concourse.

  • Links can be created using the link(key, destination, source) method.
  • Links can be queried using the LINKS_TO operator.




A Tag is a String that is not indexed for full-text search.

Tags are only used to instruct Concourse that a String shouldn’t be indexed for search. Therefore, once a Tag is processed, it is stored and treated as a String for all intents and purposes. This means that Tag values will be read as Strings when fetched.

Additionally, when querying, Concourse treats any Tag values within the query as a String.


A Timestamp is a a 64-bit integer that represents the number of microseconds since the Unix epoch (January 1, 1970 00:00:00 UTC). Timestamps are signed, so negative values represents dates prior to the epoch. Timestamps have a representable date range of about 290,000 years into the past and future.

Advanced Types#

A resolvable link is an instruction to create a link to all the records that match a criteria. Unlike dynamic links, a resolvable link is only evaluated once, at the time of write, so the linked records won’t automatically change as the criteria’s results do.

Do not add resolvable links directly

You cannot use the add methods to write resolvable links because the operation would not be atomic. You should only use resolvable links when writing data within a larger blob of information (e.g. a Map or JSON string being written using the insert method). In this case, you can add a resolvable link to the blob using the Link.toWhere(criteria) method.