This is not much of an answer to the questions above, but other implementations can be a good inspiration.
HBase might impose a certain (optimal) strategy but my knowledge of HBase (or lack of) is not sufficient to comment on a specific implementation.
Peter
I would like to get more feedback on how we should go about
implementing support for annotations. I'm in favor of storing
annotations in-line with the data. But there are still several
questions to be answered:
- Are annotations global or per time-series? Or possibly we support
both types of annotations?
- In either case, how do we write an annotation to TSDB?
- Are annotations just plain strings, or should they be more complex objects?
- [probably some other things I can't think of right now]?
- several annotations of different types (string, float, int, timestamp, ...) can be linked to a single datapoint but at my company we use mainly strings
- fetching data can be done with or without the annotations, including annotations has a noticeable negative impact on speed
I'd like to keep the "tsdb-uid" table as a meta-data table only. We
could store the global annotations as annotations on the metric ID
"0", since this metric ID isn't used at the moment.
Do global annotations have tags?
If this doesn't make sense please ignore. The start/end time use-case is
in the "nice to have" category so no need to bend things for it.