# Architecture Design Record - Event Retention Policy ## Problem In short: how to deal with events that become old. A retention policy must describe : * when to consider an event as old * what to do with old events * when to apply the retention policy * consists of multiple retention policies itself ## Influencing factors ## Assumptions ## Considered Alternatives ## 1) event Aggregation - combine repeating events Repeating events to a single new one "event type occurred n-times from to". *TBD: evaluation, measurements, PoC* *pros* * restore storage capacity * less dependencies – only one storage technology involved *cons* * additional writes after deletes * But: ## 2) event Aggregation - drop fields After a certain amount of time it is not necessary to know exactly what happened only that a specific event has occurred. This can be used to save storage capacity and shrink events by deleting fields like payload or other fields. *TBD: evaluation, measurements, PoC* *pros* * restore storage capacity * for string * But: * less dependencies – only one storage technology involved *cons* * loss of event details ## 3) event Aggregation - keep recent only one Group events by comparing a set of attributes if they can be treated as equal. If the case drop all but the most recent one. This can be applied to all events where it is not necessary to count the occurrences and only the event it self is important. This policy reduce redundant information of multiple events. i.e.: Device defect event occurs for 5 hours every 10 seconds only the last event is important as it is still defect. *TBD: evaluation, measurements, PoC* *pros* * restore storage capacity * simple to implement *cons* * needs to search the storage for specific events * either lock the storage or accept to miss events meanwhile the retention runs ## 4) event deletion depending on filter rules the existing filter rules based on rpn is used to delete the matching events. e.g. ` delete ".event.time '654321' LT .event.payload 'Hugo' STRCMP .event.messageCode 43 EQ AND AND"` This deletes all event with payload="Hugo" and messageCode=43 occuring before timecode "654321". *pros* * reuse of existing concept *cons* * ".event.time" needs to be added ## Decision We select the following policies: * ...TBD... ### Rationale ### Open Points