Comment utiliser MongoDB avec des séries chronologiques

Comment utiliser MongoDB avec des séries chronologiques

«Insérer, mettre à jour, localiser, supprimer et agréger sont toutes des opérations qui peuvent être effectuées sur une collection de séries chronologiques, tout comme ils sont sur une collection standard. Derrière le rideau, la différence fondamentale existe. Lorsque vous insérez des données dans MongoDB, il est converti en un format de stockage optimal. Une série chronologique est plus simple et plus économe en question qu'une collection régulière.

Les collections de séries chronologiques sont traitées comme des vues écrivatives non matérialisées dans MongoDB. Les données sont enregistrées plus efficacement, la conservation de l'espace du disque et un index interne basé sur le temps est construit automatiquement. Au lieu de Snappy, l'algorithme ZSTD est utilisé par défaut pour comprimer les données. La nouvelle compression a un ratio plus élevé, nécessite moins de puissance du processeur et est particulièrement bien adapté à l'analyse des séries chronologiques avec des différences mineures entre les documents.

Il est possible de modifier l'algorithme de compression à l'avenir, bien que cela ne soit pas encouragé. Lorsque vous insérez un document, une collection de séries chronologiques n'est pas construite automatiquement comme d'autres collections. Il doit être créé expressément."

Qu'est-ce que les séries chronologiques à MongoDB dans Ubuntu 20.04?

Une base de données de séries chronologiques est une base de données personnalisée conçue pour le stockage des données créées à partir d'un flux constant de valeurs associées à un horodatage efficace. L'application la plus courante consiste à stocker les données de l'équipement sensoriel qui fournit des points de données à intervalles réguliers, mais ils sont maintenant utilisés pour servir un éventail beaucoup plus large d'applications.

Voici quelques exemples d'applications possibles:

  • Données de l'Internet des objets
  • Les services Web, les applications et les infrastructures sont tous sous surveillance constante.
  • Estimation des ventes
  • Compréhension des tendances financières
  • Les données de voitures autonomes ou d'autres objets physiques sont traitées.

Une base de données spécialisée de séries chronologiques utilise des technologies de compression pour réduire la quantité d'espace nécessaire tout en fournissant simultanément des canaux d'accès pour approfondir les données. Cela améliore la récupération des données et les performances d'agrégation lors de l'utilisation des filtres de plage de temps. Ils sont plus rentables que l'utilisation d'une base de données relationnelle traditionnelle.

Les valeurs d'une série temporelle ne devraient généralement pas changer une fois qu'ils ont été enregistrés; Par conséquent, ils sont désignés comme insert uniquement ou des points de données immuables. L'action de mise à jour est extrêmement rare une fois les données enregistrées.

Lignes directrices pour MongoDB Time Series Storage de données dans Ubuntu 20.04

Nous avons quelques lignes directrices pour les données de séries chronologiques dans MongoDB, qui sont décrites ci-dessous.

  • Considérez les fonctionnalités de données et les modèles de requête tout en réglant vos données pour MetaField et Timefield appropriés.
  • Lorsque cela est possible, combinez des données de séries chronologiques et des collections de séries chronologiques.
  • Des mesures individuelles ou des ensembles de mesures doivent être enregistrés comme un seul document et ajoutés par lots lors de l'utilisation d'une collection de séries chronologiques.
  • Personnalisez notre granularité de données sur les valeurs d'attribut de notre métafifield, ou les paires distinctes de notre métafifield unique, en fonction de notre rythme d'admission de données.

Comment utiliser MongoDB de séries chronologiques dans Ubuntu 20.04

Lorsque vous travaillez avec les données de séries chronologiques, vous avez généralement besoin de plus que du stockage; Vous avez également besoin de fonctionnalités de lecture et d'écriture rapides ainsi que des capacités de requête avancées. MongoDB gère désormais les données de séries chronologiques nativement, à partir de MongoDB 5.0. Les options suivantes doivent être spécifiées lorsqu'ils donnent une collection de séries chronologiques dans MongoDB:

La commande CreateCollection () peut être utilisée pour démarrer une nouvelle collection de séries chronologiques.

Timefield: L'option TimeField doit être utilisée lors de la création d'une collection de séries chronologiques. Le champ de temps désigne la description de la propriété dans chaque document qui contient la date. Nous devons également considérer les alternatives suivantes:

MetaField: Le MetaField spécifie le nom de la colonne dans chaque document qui contient des métadonnées. Le MetaField agit comme une étiquette ou une balise qui permet aux collections de séries chronologiques d'identifier une source de série chronologique. Ce champ ne devrait pas et ne devrait pas changer avec le temps.

Granularité: Si un métaField assorti est fourni, l'attribut de granularité spécifie l'écart temporel entre les documents. La granularité standard est des «secondes», indiquant un taux d'admission à haute fréquence pour chaque série temporelle définie par le métafifield. La granularité pourrait être ajustée en «secondes», «minutes» ou «heures», et il peut être modifié à tout moment pour aggraver les choses. Cependant, parce que vous ne pouvez pas changer la granularité des «minutes» aux «secondes», il est préférable de commencer par une granularité plus fine et de vous frayer un chemin jusqu'à une granularité plus dure.

Expirez-vous des secondes: Enfin, si vous avez l'intention de supprimer des données après une période spécifiée, nous pouvons inclure le champ Expireftersoncondes spécifie le nombre de secondes que les documents devraient expirer et sont automatiquement détruits.

Insérer des documents avec des séries chronologiques à MongoDB

À tout le moins, chaque document ajouté à la collection de séries chronologiques doit définir le champ de temps. La date est le champ de temps dans le document d'illustration ci-dessous. Il convient de noter que Timefield peut être appelé ce que vous voulez tant qu'il est du type BSON ou une date. L'une des techniques d'insertion des documents dans d'autres collections MongoDB peut être utilisée pour ajouter des documents à une collection de séries chronologiques. Pour cela, nous avons créé une collection de «webvisiteurs» comme suit:

Une seule mesure doit être incluse dans chaque document que nous insérons. Utilisez la commande suivante pour insérer de nombreux documents à la fois:

Récupération des données de séries chronologiques dans MongoDB dans Ubuntu 20.04

Les documents de séries chronologiques peuvent être interrogés comme les documents d'autres collections de MongoDB. Par exemple, avec le Shell MongoDB, nous avons utilisé un FindOne pour rechercher un document dans la collection WebVisitors () comme suit.

La requête précédente montre les résultats suivants, comme vous pouvez le voir:

Agrégation sur les données de séries chronologiques dans MongoDB dans Ubuntu 20.04

Ici, nous avons utilisé un pipeline agrégé pour ajouter plus de fonctionnalités de requête. L'exemple de pipeline d'agrégation suivant combine tous les documents par données de mesure, puis fournit la moyenne de toutes les mesures du visiteur prise ce jour-là d'un site Web:

Lorsque nous exécutons le pipeline d'agrégation sur la collection Sites WebSitors, la sortie a généré la moyenne du document du visiteur de la collection «SitedVisitors» comme suit:

Conclusion

Il existe de nombreuses données de séries chronologiques, mais le maintenir et l'accès peut être difficile. MongoDB a gagné le support natif pour les séries chronologiques, ce qui facilite le travail avec les données de séries chronologiques. Nous avons donné une brève introduction avec quelques lignes directrices pour utiliser les séries chronologiques à MongoDB. Nous avons quelques illustrations de séries chronologiques qui montrent comment nous pouvons utiliser des séries chronologiques dans la collection MongoDB de certaines manières possibles.