Time Boundary
In this guide we'll learn about time boundaries in hybrid tables. Hybrid tables are when we have offline and real-time tables with the same name.
When querying these tables, the Pinot Broker needs to decide which records to read from the offline table and which to read from the real-time table. It does this using the time boundary.
tip
To learn how to determine the time boundary, see How to work out the time boundary of a hybrid table
How is the time boundary determined?
The time boundary is determined by looking at the maximum end time of the offline segments and the segment ingestion frequency specified for the offline table.
If it's set to hourly, then:
timeBoundary = Maximum end time of offline segments - 1 hour
Otherwise:
timeBoundary = Maximum end time of offline segments - 1 day
Querying
When a query for a hybrid table is received by a Pinot Broker, the broker sends a time boundary annotated version of the query to the offline and real-time tables.
For example, if we executed the following query:
SELECT count(*)
FROM events
The broker would send the following query to the offline table:
SELECT count(*)
FROM events_REALTIME
WHERE timeColumn <= $timeBoundary
And the following query to the real-time table:
SELECT count(*)
FROM events_REALTIME
WHERE timeColumn > $timeBoundary
The results of the two queries are merged by the broker before being returned to the client.