rsiot/message/eav/mod.rs
//! Представление всех сообщений в унифицированную модель.
//!
//! Иногда с сообщениями необходимо работать унифицированным способом. Например:
//! - итерироваться по массиву сообщений
//! - сохранять поток сообщений в базу данных
//! - и т.д.
//!
//! За основу взята модель [EAV](https://en.wikipedia.org/wiki/Entity-attribute-value_model). К
//! стандартным полям `entity`, `attribute`, `value` добавлена метка времени (`ts`) и поля для
//! поддержки аггрегации (`agg`, `aggts`, `aggnext`).
//!
//! Поток сообщений представляет из себя временн**о**й ряд (timeseries). Сообщения могут поступать
//! часто, хранить долговременно не всегда имеет смысл. Поэтому значения можно прореживать
//! (аггрегировать). У разных значений могут быть разные требования к аггрегации. Например:
//! - текущее показание температуры - можно сохранять среднее, минимум, максимум
//! - счетчик с нарастающим итогом - можно сохранять приращение (инкремент) за промежуток
//! аггрегирования
//! - события - авария, команда - сохранять все значения, или сохранять кол-во событий за промежуток
//! времени
//!
//! Для поддержки этого механизма и предусмотрены поля `agg`, `aggts`, `aggnext`.
//!
mod agg_type;
mod eav_model;
mod value_type;
pub use agg_type::AggType;
pub use eav_model::EavModel;
pub use value_type::ValueType;