The data protocol used by Supermon was chosen to provide a low impact way to move data from sources to consumers while enforcing LowPerturbation, extensibility, and composability. It is based on SymbolicExpressions, a data format familiar to LISP and Scheme programmers, with structural similarities to XML.
In this context, we define extensibility and composability as follows:
- The protocol is easily extended to include new, arbitrarily complex data types, structures and elements. Such extensions do not require modifications to the transport layers in the SupermonArchitecture.
- Given a set of samples from multiple sources, they can be combined into a single sample composed of the original disjoint samples.
The protocol contains two portions: a descriptive portion and a data portion. The descriptive portion provides an explanation to clients of the structure to expect when sampling data. The data portion is the data itself.