What It Is

What did you know and when did you know it? The MarkLogic bitemporal feature answers this critical question by tracking information “as it actually was” in combination with “as it was recorded” at some point-in-time.

A bitemporal database is much more powerful than a temporal database. A bitemporal database allows you to query across system and valid time axes. You can go back in time and explore data, manage historical data across systems, ensure data integrity, and do complex bitemporal analysis with ease.

Temporal – tracks system time, capturing data with time “as it was recorded”

  • Where did John Thomas live on August 20th?
  • Where was the Blue Van on October 12th?

Bitemporal – data involves system time and valid time, making it possible to rewind the information “as it actually was” in combination with “as it was recorded”

  • Where did John Thomas live on August 20th as we knew it on September 1st?
  • Where was the Blue Van on October 12th as we knew it on October 23rd?

Bitemporal Regulation

Why It Matters

Getting an accurate picture of your business at different points-in-time used to be impossible, or very challenging at best. Bitemporal helps ensure that you always have a full and accurate picture of your data at every point-in-time, which is particularly useful in regulated industries.

  • Regulatory requirements – Avoid the increasingly harsh downside consequences from not adhering to government and industry regulations, particularly in financial services and insurance
  • Audits – Preserve the history of all your data, including the changes made to it, so that clear audits can be conducted without having to worry about lost data, data integrity, or cumbersome ETL processes with archived data
  • Investigations and Intelligence – No more lost emails and no more missing information. Bitemporal databases never erase data, so it is possible to see exactly how data was updated based on what was known at the time
  • Business Analytics – Run complex queries that were not previously possible in order to better understand your business and answer new questions about how different decisions and changes in the past could have led to different results
  • Cost reduction – Manage data with a smaller footprint as the shape of the data changes, avoiding the need to set up additional databases for historical data

Bitemporal enables you to get better answers from today’s, tomorrow’s, and yesterday’s data. Only bitemporal data can help answer these questions:

  • What were my customer’s credit ratings last Monday as I knew it last Friday?
  • What did we think our first quarter profit was when we gave guidance?
  • What did we think the high day was when our trading strategy kicked in?


How Bitemporal Works

Above is an example of a bitemporal query with JavaScript as viewed in Query Console. Bitemporal works by ingesting bitemporal documents that are managed as a series of documents with element range indexes for valid and system time axes. Documents are stored in any number of protected collections that are controlled by security permissions. The initial document inserted into the database is kept and never changes, allowing you to track the provenance of information with full governance and immutability.

  • Insert, update (and never delete) – Ingest temporal XML or JSON documents with references to valid time using the Temporal API or mlcp, and make changes without losing any data as new versions are added
  • Complex temporal queries – Use the Search API to query the database along valid and temporal time axes. MarkLogic also supports Allen and SQL operators when comparing time periods
  • Adapt to changing schema – Avoid worrying about the changing shape of the data over time. Unlike relational databases, MarkLogic is schema-agnostic and can easily capture the evolving schema
  • Combine bitemporal and tiered storage – Effectively manage data in both time and space. Use tiered storage to easily migrate historical data to less expensive storage tiers, without losing your indexes or ability to query the data