Module mz_adapter::coord
source · Expand description
Translation of SQL commands into timestamped Controller
commands.
The various SQL commands instruct the system to take actions that are not yet explicitly timestamped. On the other hand, the underlying data continually change as time moves forward. On the third hand, we greatly benefit from the information that some times are no longer of interest, so that we may compact the representation of the continually changing collections.
The Coordinator
curates these interactions by observing the progress
collections make through time, choosing timestamps for its own commands,
and eventually communicating that certain times have irretrievably “passed”.
Frontiers another way
If the above description of frontiers left you with questions, this repackaged explanation might help.
-
since
is the least recent time (i.e. oldest time) that you can read from sources and be guaranteed that the returned data is accurate as of that time.Reads at times less than
since
may return values that were not actually seen at the specified time, but arrived later (i.e. the results are compacted).For correctness’ sake, the coordinator never chooses to read at a time less than an arrangement’s
since
. -
upper
is the first time after the most recent time that you can read from sources and receive an immediate response. Alternately, it is the least time at which the data may still change (that is the reason we may not be able to respond immediately).Reads at times >=
upper
may not immediately return because the answer isn’t known yet. However, once theupper
is > the specified read time, the read can return.For the sake of returned values’ freshness, the coordinator prefers performing reads at an arrangement’s
upper
. However, because we more strongly prefer correctness, the coordinator will choose timestamps greater than an object’supper
if it is also being accessed alongside objects whosesince
times are >= itsupper
.
This illustration attempts to show, with time moving left to right, the
relationship between since
and upper
.
#
: possibly inaccurate results-
: immediate, correct response?
: not yet knowns
: sinceu
: upper|
: eligible for coordinator to select
####s----u?????
|||||||||||
Modules
Coordinator
.Coordinator
’s logic for creating, dropping,
and altering objects.Coordinator
messages. The Coordinator
receives
messages from various sources (ex: controller, clients, background tasks, etc).Coordinator
. Ideally these are all
put in more meaningfully named modules.Structs
Enums
Constants
DEFAULT_LOGICAL_COMPACTION_WINDOW
, in milliseconds.
The default is set to a second to track the default timestamp frequency for sources.DEFAULT_LOGICAL_COMPACTION_WINDOW
as an EpochMillis
timestamp