Maison  >  Article  >  Java  >  Apprenez une astuce pour utiliser la base de données de séries chronologiques dans Spring Boot

Apprenez une astuce pour utiliser la base de données de séries chronologiques dans Spring Boot

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-08-03 17:47:322941parcourir

En plus des bases de données relationnelles et des caches les plus couramment utilisés, nous avons déjà présenté des exemples sur la façon de configurer et d'utiliser le stockage MongoDB et LDAP dans Spring Boot. Ensuite, nous continuons à introduire une autre base de données spéciale : l'utilisation de la base de données de séries chronologiques InfluxDB dans Spring Boot.

Introduction à InfluxDB

Qu'est-ce qu'une base de données de séries chronologiques ? Le nom complet est base de données de séries chronologiques. La base de données de séries chronologiques est principalement utilisée pour traiter les données avec des balises temporelles (changeant dans l'ordre temporel, c'est-à-dire la sérialisation temporelle). Les données avec des balises temporelles sont également appelées données de séries chronologiques.

Les données de séries chronologiques sont principalement collectées et générées par divers types d'équipements de surveillance, d'inspection et d'analyse en temps réel dans l'industrie électrique, l'industrie chimique, etc. Les caractéristiques typiques de ces données industrielles sont : une fréquence de génération rapide (chaque point de surveillance peut (générant plusieurs éléments de données), fortement dépendant du temps de collecte (chaque élément de données doit correspondre à un moment unique), de plusieurs points de mesure et d'une grande quantité d'informations (les systèmes de surveillance en temps réel conventionnels ont des milliers de points de surveillance , et les points de surveillance sont mesurés toutes les secondes. Tous génèrent des données, des dizaines de Go de données sont générés chaque jour). Bien que les bases de données relationnelles puissent également stocker des données basées sur des séries temporelles, en raison des inconvénients de la structure de stockage, ces données ne peuvent pas réaliser efficacement des statistiques de stockage et de requête à haute fréquence. Par conséquent, une nouvelle méthode est née spécifiquement pour le stockage et l'optimisation des bases de données de séries chronologiques. pour répondre à des exigences d’efficacité plus élevées.

InfluxDB est actuellement une base de données de séries chronologiques open source populaire (adresse du site officiel : https://www.influxdata.com/ Nos scénarios d'utilisation les plus courants concernent certains enregistrements de données à haute fréquence et besoins statistiques liés au temps, tels que). : Surveiller le stockage et les requêtes de données.

Avant de procéder aux sessions pratiques suivantes, comprenons d'abord quelques termes importants dans InfluxDB :

  • base de données : base de données

  • mesure : similaire à une table dans une base de données relationnelle

  • points : similaire rangée (une ligne de données) dans une base de données relationnelle

Parmi eux, un Point se compose de trois parties :

  • heure : horodatage

  • champs : valeur enregistrée

  • tags : index Attributs

Essayez-le vous-même

Après avoir compris ce qu'est une base de données de séries chronologiques et quelques concepts de base d'InfluxDB, comprenons plus en détail la configuration de base, l'organisation des données et l'écriture d'InfluxDB à travers un simple petit cas de reporting régulier des données de surveillance !

Première étape : créer un projet Spring Boot de base (si vous ne savez pas encore comment, vous pouvez vous référer à cet article : Démarrage rapide 1)

Deuxième étape : introduire le SDK officiel d'influx dans pom.xml

<dependency>
    <groupId>org.influxdb</groupId>
    <artifactId>influxdb-java</artifactId>
</dependency>

Remarque : Ici, étant donné que le parent de la version Spring Boot 2.x conserve la version SDK d'InfluxDB, il n'est pas nécessaire de spécifier manuellement les informations de version. Si la version Spring Boot utilisée est plus ancienne, les informations de version peuvent être manquantes et doivent être écrites manuellement.

Étape 3 : Configurez les informations d'influxdb pour être connecté

spring.influx.url=http://localhost:8086
spring.influx.user=admin
spring.influx.password=

Les trois attributs représentent : l'adresse de connexion, le nom d'utilisateur et le mot de passe. À ce stade, la configuration de base est terminée.

Remarque : bien qu'il n'y ait pas de prise en charge des données Spring, la configuration automatique d'InfluxDB est également implémentée dans la version Spring Boot 2.x, il vous suffit donc d'écrire les informations de configuration et vous pouvez les utiliser. Pour des propriétés de configuration spécifiques, vous pouvez afficher le code source : org.springframework.boot.autoconfigure.influx.InfluxDbProperties.

Étape 4 : Créez une tâche planifiée, simulez les données rapportées et écrivez-la dans InfluxDB

@Service
@AllArgsConstructor
@Slf4j
public class Monitor {

    private InfluxDB influxDB;

    @Scheduled(fixedRate = 5000)
    public void writeQPS() {
        // 模拟要上报的统计数据
        int count = (int) (Math.random() * 100);

        Point point = Point.measurement("ApiQPS")     // ApiQPS表
                .tag("url", "/hello")  // url字段
                .addField("count", count)        // 统计数据
                .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)  // 时间
                .build();

        // 往test库写数据
        influxDB.write("test", "autogen", point);

        log.info("上报统计数据:" + count);
    }

}

Testez et vérifiez

Étape 1 : Démarrez InfluxDB et préparez la base de données à utiliser via la ligne de commande. Les principales commandes impliquées sont les suivantes. suit ;

Entrez InfluxDB :

$ influx

Interrogez la base de données actuellement existante :

> show databases

Créez une base de données (notez que le nom de la base de données est cohérent avec le premier paramètre d'écriture dans le code Java ci-dessus) :

> create database "test"

Étape 2 : Démarrer l'application Spring Boot, à l'heure prévue Sous l'action de la tâche, nous verrons un journal similaire au suivant :

2021-08-03 01:52:47.732  INFO 94110 --- [           main] c.d.chapter63.Chapter63Application       : Started Chapter63Application in 2.326 seconds (JVM running for 3.027)
2021-08-03 01:52:47.764  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:25
2021-08-03 01:52:52.736  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:30
2021-08-03 01:52:57.737  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:38
2021-08-03 01:53:02.739  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:51
2021-08-03 01:53:07.739  INFO 94110 --- [   scheduling-1] com.didispace.chapter63.Monitor          : 上报统计数据:31

Étape 3 : Utilisez la commande pour vérifier si les données existent déjà dans InfluxDB

> select * from ApiQPS order by time desc;

name: ApiQPS
time                count url
----                ----- ---
1627926787730000000 31    /hello
1627926782730000000 51    /hello
1627926777729000000 38    /hello
1627926772727000000 30    /hello
1627926767728000000 25    /hello

Vous pouvez voir que les mêmes données que dans le journal existent déjà.

D'accord, le tutoriel d'aujourd'hui se termine ici, n'oubliez pas de l'essayer vous-même !

Tutoriels vidéo associés recommandés : Tutoriel vidéo Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer