Come usare MongoDB con serie temporali

Come usare MongoDB con serie temporali

“Inserisci, aggiorna, individuare, eliminare e aggregare sono tutte operazioni che possono essere eseguite su una raccolta di serie temporali, proprio come sono su una raccolta standard. Dietro il sipario, esiste la differenza fondamentale. Quando si inseriscono i dati in MongoDB, vengono convertiti in un formato di archiviazione ottimale. Una serie temporale è più semplice e più efficiente di una query di una collezione regolare.

Le collezioni delle serie temporali sono trattate come visualizzazioni scrivibili non materiali in MongoDB. I dati vengono salvati in modo più efficiente, conserva lo spazio del disco e un indice interno basato sul tempo viene creato automaticamente. Invece di snappy, l'algoritmo ZSTD viene utilizzato per impostazione predefinita per comprimere i dati. La nuova compressione ha un rapporto più elevato, richiede meno potenza della CPU ed è particolarmente adatta per l'analisi delle serie temporali con differenze minori tra i documenti.

È possibile cambiare l'algoritmo di compressione in futuro, sebbene questo non sia incoraggiato. Quando si inserisce un documento, una raccolta di serie temporali non viene creata automaticamente come altre raccolte. Deve essere creato espressamente."

Cosa sono le serie temporali a MongoDB in Ubuntu 20.04?

Un database delle serie temporali è un database personalizzato creato per la memorizzazione di dati creati da un flusso costante di valori accoppiati con un timestamp in modo efficiente. L'applicazione più comune è l'archiviazione dei dati da apparecchiature sensoriali che forniscono punti dati a intervalli regolari, ma ora sono impiegati per servire una gamma di applicazioni molto più ampia.

Di seguito sono riportati alcuni esempi di possibili applicazioni:

  • Dati dall'Internet of Things
  • Servizi Web, app e infrastrutture sono tutti in costante sorveglianza.
  • Stima delle vendite
  • Comprensione delle tendenze finanziarie
  • Vengono elaborati dati da auto a guida autonoma o altri oggetti fisici.

Un database specializzato delle serie temporali utilizza tecnologie di compressione per ridurre la quantità di spazio necessaria, fornendo contemporaneamente i canali di accesso per scavare più a fondo nei dati. Ciò migliora le prestazioni di recupero dei dati e aggregazione quando si utilizzano i filtri dell'intervallo di tempo. Sono più convenienti rispetto all'utilizzo di un database relazionale tradizionale.

I valori in una serie temporale di solito non dovrebbero cambiare una volta registrati; Quindi sono designati come punti dati solo o immutabili. L'azione di aggiornamento è estremamente rara una volta che i dati sono stati salvati.

Linee guida per l'archiviazione dei dati delle serie temporali MongoDB in Ubuntu 20.04

Abbiamo alcune linee guida per i dati delle serie temporali in MongoDB, che sono delineate di seguito.

  • Considera le funzionalità dei dati e i modelli di query mentre si ottiene i dati per Metafield e TimeField appropriati.
  • Quando possibile, combinare i dati delle serie temporali e le raccolte di serie temporali.
  • Misurazioni individuali o serie di misurazioni devono essere salvate come un documento e aggiunte in lotti quando si utilizza una raccolta di serie temporali.
  • Personalizza la nostra granularità dei dati sui valori degli attributi del nostro metafield o sugli abbinamenti distinti del nostro esclusivo metafield, in base al nostro ritmo di assunzione dei dati.

Come usare la serie temporale MongoDB in Ubuntu 20.04

Quando si lavora con i dati delle serie temporali, in genere hai bisogno di più della semplice memoria; Hai anche bisogno di funzionalità di lettura e scrittura veloci e funzionalità di query avanzate. MongoDB ora gestisce i dati delle serie temporali in modo nativo, a partire da MongoDB 5.0. Le seguenti opzioni devono essere specificate quando si fornisce una raccolta di serie temporali in MongoDB:

Il comando createCollection () può essere utilizzato per avviare una nuova collezione di serie temporali.

Timefield: L'opzione TimeField deve essere utilizzata durante la creazione di una raccolta di serie temporali. Il campo Time indica la descrizione della proprietà in ciascun documento che contiene la data. Dovremmo anche considerare le seguenti alternative:

Metafield: Il Metafield specifica il nome della colonna in ciascun documento che contiene metadati. Il Metafield funge da etichetta o tag che consente alle raccolte di serie temporali di identificare la fonte di una serie temporale. Questo campo non dovrebbe e solo dovrebbe cambiare nel tempo.

Granularità: Se viene fornito un metafield corrispondente, l'attributo di granularità specifica il divario temporale tra i documenti. La granularità standard è "secondi", che indica un tasso di assunzione ad alta frequenza per ogni serie temporale definita dal Metafield. La granularità potrebbe essere regolata a "secondi", "minuti" o "ore" e può essere cambiato in qualsiasi momento per peggiorare le cose. Tuttavia, perché non puoi cambiare la granularità da "minuti" a "secondi", è meglio iniziare con granularità più fine e fare strada fino a una granularità più dura.

ExcaftersEconds: Infine, se si intende eliminare i dati dopo un periodo specificato, possiamo includere il campo EcapeAftersEconds Specifica quanti secondi dovrebbero passare prima che i documenti scadano e vengano automaticamente distrutti.

Inserire documenti con serie temporali in MongoDB

Per lo meno, ogni documento aggiunto alla raccolta delle serie temporali deve definire TimeField. La data è il campo temporale nel documento di illustrazione seguente. Vale la pena notare che Timefield può essere definito tutto ciò che vuoi fintanto che è del tipo BSON o di una data. Una qualsiasi delle tecniche per l'inserimento di documenti in altre raccolte MongoDB può essere utilizzata per aggiungere documenti a una raccolta di serie temporali. Per questo, abbiamo creato una raccolta di "webvisitatori" come segue:

Una singola misurazione dovrebbe essere inclusa in ciascun documento che inseriamo. Usa il comando seguente per inserire molti documenti contemporaneamente:

Recupero dei dati delle serie temporali in MongoDB in Ubuntu 20.04

I documenti delle serie temporali possono essere interrogati come i documenti di altre raccolte di MongoDB. Ad esempio, con la shell MongoDB, abbiamo usato un FindOne per cercare un documento nella collezione WebVISITORS () come segue.

La query precedente mostra i seguenti risultati, come puoi vedere:

Aggregazione sui dati delle serie temporali in MongoDB in Ubuntu 20.04

Qui, abbiamo usato una pipeline aggregata come per aggiungere più funzionalità di query. La pipeline di aggregazione di esempio seguente combina tutti i documenti per dati di misurazione e quindi fornisce la media di tutte le misurazioni del visitatore prese in quel giorno di un sito Web:

Quando eseguiamo la pipeline di aggregazione sul sito Web di raccolta, l'output ha generato la media del documento del visitatore dalla raccolta "Websitors" come segue:

Conclusione

Ci sono molti dati sulle serie temporali, ma mantenerli e accedervi può essere difficile. MongoDB ha ottenuto il supporto nativo per le serie temporali, rendendo il lavoro con i dati delle serie temporali considerevolmente più facili, più veloci e meno costose. Abbiamo dato una breve introduzione con alcune linee guida per l'utilizzo di serie temporali in MongoDB. Abbiamo alcune illustrazioni delle serie temporali che dimostrano come possiamo usare le serie temporali nella collezione MongoDB in alcuni modi possibili.