Time series/tijdreeksen deel 3: streaming analyse

Eén aspect van tijdreeksanalyse, wellicht het belangrijkste, is de directe analyse van binnenkomende data. Denk maar aan het detecteren van uitzonderingssituaties in een dure installatie: als er iets dreigt vast te lopen willen we dat natuurlijk snel weten zodat er (eventueel geautomatiseerd) actie ondernomen kan worden.

Dataverzameling van tijdreeksen is een heel verhaal op zich, en over het algemeen kan je stellen dat het uitvoeren van de streaming analyse eigenlijk zo dicht mogelijk bij de bron gedaan moet worden. Waar we dus vaak over data lakes spreken voor de verzameling van dit soort data (in de volgende post veel meer daarover) zijn we voor streaming analyse eigenlijk nog helemaal niet in het (centrale) data lake, maar op de zgn. Edge (voor meer info: zie https://talosedge.nl).

Kortom, voor streaming analyse van tijdreeksen hebben we een gereedschap nodig dat vooral snel kan draaien maar ook op beperkte hardware. Wellicht dat je’t niet zozeer verwacht, maar in mijn ervaring zijn de beschikbare time series databases hiervoor bedoeld – en bijzonder geschikt voor. Voorbeelden hiervan zijn InfluxDB en TimescaleDB.

Een database voor streaming analyse? Intuïtief niet direct logisch. Maar aspecten als streaming queries (queries die over een tijdraam in de database werken), en vaste retention periods (periodes waarna de data weggegooid wordt) in dit soort databases doet al vermoeden dat dit geen permanente opslagoplossingen zijn. Je kunt ze min of meer zo inrichten, maar dat vind ik (zeer) onverstandig.

Een voorbeeld van een InfluxDB dashboard met hoogfrequente metingen van het stroomverbruik – en de opwekking op ons hoofdkantoor.

Mijn ervaring is dat dit soort databases heel sterk is in het verwerken van grote stromen inkomende metingen, en het snel analyseren ervan over (relatief) korte periodes. De langdurige opslag van dit soort data, die natuurlijk (letterlijk) lineair oploopt over de tijd, is echter op termijn een kostbare zaak. En vaak ook nogeens onnodig: real-time analysemogelijkheden over data van vorige week zijn zelden of nooit nodig.
Een vaak toegepaste strategie om de afmeting van deze databases in toom te houden – of er nu een time series database of een SQL database voor gebruikt wordt, is ofwel het verwijderen van oudere data (retention), al dan niet na het opslaan van geaggregeerde data. Nooit doen, dat weggooien! Verwijderen van oudere waarden uit je database: ok, maar archiveer ze dan ook op een plek waar ze terug te vinden zijn. Data science kan pas echt waarde toevoegen als analyses over grotere perioden gedaan kan worden.

Deze waardevolle tijdreeksen moeten dus voor de langere termijn gearchiveerd te worden in een data lake. Hoe? Daar ga ik op in in de volgende post van deze serie.

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright ICRIS BV