Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
InfluxDB
Choisissez cette action lorsque vous souhaitez interroger la télémétrie de l'appareil pour connaître les tendances opérationnelles ou surveiller les données chronologiques en temps réel. Vous pouvez utiliser le traitement par lots côté client ou côté serveur pour combiner plusieurs points en une seule demande d'écriture. AWS IoT Core convertit chaque message au protocole de ligne InfluxDB et l'écrit dans la base de données et la table spécifiées. Pour plus d'informations sur le format, consultez le protocole de ligne InfluxDB
Dans cette rubrique :
Conditions préalables
Cette action de règle répond aux conditions préalables suivantes :
-
Une destination d'action InfluxDB : créez une destination d'action InfluxDB qui spécifie le point de terminaison, la version et les informations d'identification de votre instance InfluxDB. AWS IoT Core valide la propriété des terminaux avant d'envoyer du trafic. Consultez Destination de l'action InfluxDB.
-
Un rôle IAM qui AWS IoT peut assumer d'écrire dans vos bases de données InfluxDB et d'effectuer l'
GetSecretValueopération sur le secret qui stocke vos informations d'identification InfluxDB. Pour de plus amples informations, veuillez consulter Octroi d'un AWS IoT réglez l'accès dont il a besoin. -
Informations d'identification InfluxDB stockées dans AWS Secrets Manager : pour InfluxDB V3, Amazon Timestream pour InfluxDB fournit automatiquement un secret Secrets Manager lorsque vous créez le cluster InfluxDB. Le secret contient les informations d'identification du cluster. Pour InfluxDB V2, générez un jeton d'API All Access ou personnalisé à partir de votre instance InfluxDB. Stockez la valeur du jeton sous forme de code secret en texte brut dans AWS Secrets Manager. Pour plus d'informations sur la création de jetons, voir Créer un jeton
dans la InfluxData documentation. Au moment de l'exécution, l'action de la règle appelle secretsmanager:GetSecretValueà récupérer ces informations d'identification avant de vous authentifier auprès de votre point de terminaison InfluxDB. -
Horodatage de la charge utile du message : chaque objet de la charge utile du message doit contenir une clé nommée
timestamp(distinction majuscules/minuscules) avec une valeur d'époque Unix entière. L'unité d'horodatage peut également être définie dans la définition des règles IoT. AWS IoT Core ne génère pas d'horodatage pour l'action InfluxDB, sauf lorsque InfluxDB est utilisé comme action d'erreur.Note
Un alias tel que
tsoutimene peut pas être utilisé à la place detimestamp. -
Connectivité HTTPS — Votre instance InfluxDB doit être accessible AWS IoT Core via HTTPS. Les ports sortants pris en charge sont les suivants : 443, 8443, 8086 (port par défaut pour InfluxDB V2) et 8181 (port par défaut pour InfluxDB V3).
-
JSON-format charge utile — L'action InfluxDB traite uniquement les charges utiles JSON. Si vos appareils publient des données binaires ou Protobuf, utilisez la decode() fonction de votre règle SQL pour les convertir au format JSON avant l'exécution de l'action.
Destination de l'action InfluxDB
Avant de pouvoir utiliser l'action de règle InfluxDB, vous devez créer une destination d'action InfluxDB. La destination définit les paramètres de connexion de votre instance InfluxDB. AWS IoT Core valide ensuite la propriété du terminal.
Création d'une destination
Utilisez l'CreateTopicRuleDestinationAPI pour créer une destination InfluxDB :
{ "destinationConfiguration": { "influxDBConfiguration": { "endpoint": "https://my-instance.timestream-influxdb.us-west-2.amazonaws.com:8086", "influxDBVersion": "V2", "secretId": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-influxdb-credentials-AbCdEf" } } }
Paramètres de destination
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
endpoint |
Chaîne | Oui | L'URL du point de terminaison HTTPS de votre instance InfluxDB. HTTP n'est pas pris en charge. Ports pris en charge : 443, 8086, 8181, 8443. |
influxDBVersion |
Chaîne | Oui | La version InfluxDB. Valeurs valides : V2, V3. |
secretId |
Chaîne | Oui | Le nom ou l'ARN du AWS Secrets Manager secret qui contient votre jeton InfluxDB. |
secretType |
Chaîne | Non | Type de valeur secrète. Valeurs valides : SecretString, SecretBinary. |
secretKey |
Chaîne | Non | La clé du JSON secret qui contient le jeton d'authentification. Obligatoire uniquement lorsque le secret est un objet JSON avec plusieurs clés. |
Validation de propriété des terminaux
Lorsque vous créez une destination d'action InfluxDB, AWS IoT Core valide la propriété du terminal en vous authentifiant auprès de l'API InfluxDB à l'aide des informations d'identification que vous avez fournies :
-
InfluxDB V2 : AWS IoT Core appelle le point de terminaison.
/api/v2/me -
InfluxDB V3 : AWS IoT Core appelle la liste des bases de données endpoint ()
GET /api/v3/configure/database.
Une réponse réussie (2xx) définit l'état de destination surENABLED. En cas d'échec, AWS IoT Core définit le statut surERROR. Pour réessayer de valider, appelez UpdateTopicRuleDestination avec le statut défini sur. IN_PROGRESS
Cartographie terminologique InfluxDB
Les termes suivants diffèrent entre InfluxDB V2 et V3.
| AWS IoT Core paramètre | Terme InfluxDB V2 | Terme InfluxDB V3 |
|---|---|---|
databaseName |
Compartiment | Base de données |
tableName |
Mesure | Table |
Note
Si vous effectuez une migration depuis l'action de règle Amazon Timestream, le dimensions paramètre est mappé aux balises de l'action InfluxDB et les attributs des résultats de la requête sont mappés aux champs.
Parameters
Lorsque vous créez une AWS IoT règle avec l'action InfluxDB, vous devez spécifier les informations suivantes :
destinationArn-
L'ARN de la destination de l'action InfluxDB. Consultez Destination de l'action InfluxDB. Prend en charge les modèles de substitution : Non
roleArn-
L'ARN du rôle IAM qui AWS IoT autorise l'accès au secret Secrets Manager. Consultez Conditions préalables. Prend en charge les modèles de substitution : Non
databaseName-
Le nom de la base de données InfluxDB (appelée bucket dans InfluxDB v2, ou base de données dans InfluxDB v3) dans laquelle écrire les enregistrements. Supporte les modèles de substitution : Non. Pour acheminer les données vers différentes bases de données, créez des actions de règle distinctes pour chaque base de données.
tableName-
Le nom de la table (appelée mesure dans InfluxDB v2, ou table dans InfluxDB v3) dans laquelle écrire les enregistrements. Prend en charge les modèles de substitution : Oui
organization-
Le nom de l'organisation InfluxDB. Requis pour InfluxDB v2. Si vous incluez ce paramètre pour InfluxDB v3, il est ignoré. Supporte les modèles de substitution : Non.
tags-
Métadonnées pour chaque point, spécifiées sous forme de carte. Chaque clé de carte est un nom de balise et chaque valeur de carte est la valeur de balise correspondante. Les balises sont indexées en fonction des performances des requêtes.
-
Dans InfluxDB V3, chaque nom de balise doit être unique dans une table et ne peut pas dupliquer un nom de champ.
-
Les valeurs des balises prennent en charge les modèles de substitution par champ de message et par élément.
-
timestampUnit-
Précision de la valeur d'horodatage dans la charge utile. Valeurs valides :
s(secondes) |ms(millisecondes) |us(microsecondes) | (nanosecondes).nsValeur par défaut :ms. Supporte les modèles de substitution : Non. batchConfig-
Configuration de traitement par Server-side lots (facultatif). Pour de plus amples informations, veuillez consulter Traitement par lot.
-
maxBatchSize— Nombre maximum de points par lot. Plage valide : 1 à 500. -
maxBatchOpenMs— Durée maximale en millisecondes pour maintenir un lot ouvert. Plage valide : 5 à 1 000. -
maxBatchSizeBytes— Taille totale maximale en octets avant le vidage. Plage valide : 100 à 131 072. -
batchAcrossTopics: booléen. Quandtrue, le lot inclut des points provenant de messages portant sur différents sujets. Valeur par défaut :false.
-
Traitement par lot
L'action InfluxDB prend en charge deux modes de traitement par lots.
Client-side mise en lots
Votre appareil IoT regroupe des données chronologiques sous forme de tableau JSON et les publie sous la forme d'un seul message MQTT. Avec le traitement par lots côté client, chaque élément du tableau devient un point de protocole de ligne dans une seule demande d'écriture. Vous n'avez pas besoin de configuration supplémentaire.
Server-side mise en lots
Utilisez le traitement par lots côté serveur pour regrouper les messages individuels avant de les écrire dans InfluxDB. Configurez le traitement par lots côté serveur à l'aide du paramètre. batchConfig Le lot est vidé lorsqu'une limite configurée (maxBatchSizemaxBatchOpenMs, oumaxBatchSizeBytes) est atteinte pour la première fois.
Note
Le traitement par lots côté serveur et le traitement par lots côté client (charges utiles de tableaux JSON) peuvent être configurés en même temps.
L'action InfluxDB est mesurée en fonction de la taille de la charge utile sortante par incréments de 5 Ko. Line-protocol les échecs de conversion sont également mesurés.
Per-element modèles pour les charges utiles des baies
Lorsque vos appareils IoT envoient des données chronologiques par lots sous forme de tableau JSON, vous pouvez utiliser les « modèles de substitution par élément » pour résoudre les valeurs de chaque élément individuel du tableau. Cela achemine chaque point de données vers une table différente ou applique des balises spécifiques à un élément. Pour plus d'informations, consultez la section Per-element Modèles.
Syntaxe de deux modèles de substitution
-
${expression}— Résout au niveau de la portée du message, par rapport au message entrant sur l'appareil. Évalué une fois pour chaque message ; la même valeur s'applique à chaque point du tableau. -
@{expression}— Résout au niveau de l'élément, par rapport à un élément individuel de la charge utile produite par l'instruction SQL SELECT de la règle. Re-evaluated pour chaque élément du tableau, afin que chaque point puisse obtenir une valeur différente. Pour plus d'informations, voir@{expression}référence.
Utilisez @{...} les valeurs d'entrée tableName et de balise pour résoudre l'expression par rapport à chaque élément du tableau individuellement.
Exemple
Compte tenu de la charge utile de l'appareil suivante (tableau JSON) :
[ {"measurement_type": "temperature", "room": "kitchen", "timestamp": 1700000000000, "value": 23.5}, {"measurement_type": "humidity", "room": "bedroom", "timestamp": 1700000001000, "value": 60.1} ]
Et la configuration d'action suivante :
{ "influxDB": { "destinationArn": "arn:aws:iot:us-west-2:111122223333:ruledestination/influxdb/abc123", "roleArn": "arn:aws:iam::111122223333:role/iot-influxdb-role", "databaseName": "sensor_data", "tableName": "@{measurement_type}", "tags": { "room": "@{room}" }, "timestampUnit": "ms" } }
La sortie du protocole de ligne qui en résulte contient deux points :
temperature,room=kitchen value=23.5 1700000000000 humidity,room=bedroom value=60.1 1700000001000
Note
Un champ référencé par @{...} est supprimé de l'ensemble de champs de protocole de ligne, il n'apparaît donc pas également en tant que champ. Dans cet exemple, measurement_type devient le nom de la table et room devient une balise, de sorte qu'aucun des deux n'apparaît dans le jeu de champs : value c'est le seul champ.
Restrictions
-
@{...}est pris en charge uniquement dans la configuration des actions InfluxDB (tableNameet les valeurs des balises). -
Vous ne pouvez pas utiliser
@{...}dans les règles du SQL (SELECT/WHEREclauses), des définitions d'actions d'erreur ou toute autre action de règle. -
Seules les références de champs sont prises en charge à l'intérieur
@{...}. Les fonctions ne sont pas prises en charge. -
Chaque valeur prend en charge au plus un
@{...}marqueur. La présence de plusieurs marqueurs dans une même valeur génère une exception d'API. -
Vous ne pouvez pas mélanger
${...}et@{...}utiliser la même valeur. Le mélange produit une exception d'API. -
Un seul objet JSON est traité comme un tableau à un élément.
Contenu de l'enregistrement InfluxDB
Pour chaque enregistrement du résultat de la requête post-SQL, le point de protocole de ligne InfluxDB qui en résulte contient les composants suivants :
| Composant | Source |
|---|---|
| Table | La valeur tableName du paramètre |
| Étiquettes | Les paires clé-valeur du paramètre tags |
| Champs | Les attributs de charge utile restants ne sont pas utilisés comme balises, nom de table ou horodatage |
| Horodatage | La timestamp clé extraite de la charge utile |
Conversion du type de données
AWS IoT Core convertit les valeurs JSON en types de protocoles de ligne InfluxDB comme suit :
| Type de JSON | Type de protocole de ligne | Exemple |
|---|---|---|
| Nombre entier (−2³³ à 2³−1) | Entier signé (isuffixe) |
42 → 42i |
| Nombre entier (2 ³ à 2, −1) | Entier non signé (usuffixe) |
9223372036854775808 →
9223372036854775808u |
| Nombre entier extérieur (−2³−2 à 2³−1) | Rejeté (action d'erreur déclenchée) | — |
| Flottant/décimal | IEEE-754 flottant 64 bits | 23.5 → 23.5 |
| Booléen | t ou f |
true → t |
| Chaîne | Chaîne entre guillemets | "active" →
"active" |
| Null | Omis (non écrit) | — |
| Objet ou tableau | Chaîne JSON compactée (espaces supprimés) | {"a":1} →
"{\"a\":1}" |
Restrictions de dénomination
-
Les clés de champ et les clés de balise ne peuvent pas être vides ou commencer par un trait de soulignement (
_). -
Dans InfluxDB V3, le nom de la table et la clé de balise doivent commencer par une lettre ou un chiffre.
-
Les virgules, les signes égaux et les espaces dans les clés de champ, les clés de balise et les valeurs de balise sont automatiquement échappés.
-
Mesures : les virgules et les espaces sont automatiquement supprimés.
-
Les balises sont triées par ordre alphabétique par clé avant la sérialisation afin d'améliorer les performances d'ingestion.
-
Les valeurs de balise vides sont omises de la sortie.
Clés réservées
Les clés de charge utile suivantes sont supprimées du champ défini lors de la conversion du protocole de ligne :
-
timestamp— Utilisé comme horodatage ponctuel. -
Clés référencées par
tableName(via${...}ou@{...}) — Utilisées comme nom de table. -
Clés référencées par la valeur de balise (via
${...}ou@{...}) — Utilisées comme valeurs de balise.
Actions d'erreur
Si l'action InfluxDB échoue, l'action d'erreur configurée est déclenchée.
Utilisation d'InfluxDB comme action d'erreur
Vous pouvez configurer l'action InfluxDB comme une action d'erreur pour n'importe quelle règle. L'intégralité de la charge utile est écrite dans un seul tableName enregistrement. Message-scope les modèles de substitution (${...}) sont pris en charge dans les actions d'erreur tableName ettags.
Sortie d'action d'erreur
Lorsque l'action d'erreur est déclenchée, la charge utile de sortie contient : ruleName topiccloudwatchTraceId,,clientId,sourceIp,, base64OriginalPayload (message Base64-encoded d'origine) et un failures tableau contenant failedActionfailedResource, et errorMessage pour chaque entrée.
Avec le traitement par lots côté serveur, la charge utile utilisepayloadsWithMetadata, avec une entrée pour chaque message MQTT entrant distinct. affectedIdsLes valeurs de chaque échec font référence aux id valeurs de ces entrées de message ; il ne s'agit pas d'indices ponctuels. Un tableau JSON côté client est un message entrant même s'il produit plusieurs points InfluxDB. Pour le format complet de la charge utile, consultezActions d'erreur pour le traitement par lots.
| Scénario de défaillance | Description |
|---|---|
| Destination DÉSACTIVÉE ou ERREUR | La destination de l'action InfluxDB n'est pas activée. Vérifiez que la validation de la propriété des terminaux a réussi. |
| ARN de destination non valide | La destination spécifiée n'existe pas. |
| ARN de rôle non valide | Le rôle IAM n'existe pas ou n'est pas autorisé. |
| Échec de récupération du secret | Le secret ou le code configuré secretKey n'existe pas, ou le rôle d'action de règle ne peut pas récupérer ou déchiffrer le secret. |
| Horodatage manquant | La charge utile ne contient pas de timestamp clé. Chaque objet de la charge utile doit inclure un timestamp champ avec une valeur d'époque Unix entière. |
| Valeur d'horodatage non valide | La valeur d'horodatage n'est pas un entier (par exemple, une chaîne, un flottant ou une ISO-8601 date). La valeur doit être un entier d'époque Unix dans l'unité spécifiée par. timestampUnit |
| Charge utile non valide (aucun champ) | La charge utile ne contient aucun champ valide pour le protocole de ligne après suppression des clés réservées. |
| Clé de champ non valide | Une clé de champ est vide ou commence par_. |
| Le lot client contient un point non valide | Un ou plusieurs éléments d'un tableau JSON ont échoué lors de la validation du protocole de ligne. |
| Les balises et les champs dépassent la limite de colonnes | Les clés de balise et de champ combinées dépassent le nombre maximum de colonnes (250). |
| Échec de connexion | AWS IoT Core n'a pas pu se connecter au point de terminaison InfluxDB. |
| Échec d’authentification | Le jeton InfluxDB n'est pas valide ou a expiré. Mettez à jour le secret dans AWS Secrets Manager. |
| Ressource introuvable | La base de données, la table ou l'organisation spécifiée n'existe pas dans InfluxDB. |
| Conflit de type de champ | Un ou plusieurs champs entrent en conflit avec le schéma existant. L'écriture par lots dans son intégralité échoue. |
| Erreur du serveur InfluxDB | Une erreur interne s'est produite dans InfluxDB. |
| Le service InfluxDB n'est pas disponible | InfluxDB est temporairement indisponible. Le moteur de règles réessaie avec un retard exponentiel. |
Important
Un conflit de type de champ sur n'importe quel point d'un lot entraîne l'échec de l'écriture de l'ensemble du lot. InfluxDB ne valide pas partiellement les points : soit tous les points réussissent, soit l'écriture complète est rejetée.
Les erreurs réessayables (503) sont réessayées avec un retard exponentiel. Pour une réponse HTTP 401, AWS IoT Core recharge le jeton depuis AWS Secrets Manager et réessaie la demande une fois. Non-retryable les erreurs (404, 422) déclenchent immédiatement l'action d'erreur. Pour connaître les limites de nouvelles tentatives, consultez la section Quotas AWS IoT Core de service.
Exemples
Action de règle InfluxDB
{ "topicRulePayload": { "sql": "SELECT * FROM 'devices/+/telemetry'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "influxDB": { "destinationArn": "arn:aws:iot:us-west-2:111122223333:ruledestination/influxdb/a1b2c3d4", "roleArn": "arn:aws:iam::111122223333:role/iot-influxdb-role", "organization": "my-org", "databaseName": "sensor_data", "tableName": "device_metrics", "tags": { "device_id": "${clientid()}", "location": "building-a" }, "timestampUnit": "ms" } } ] } }
Exemple de charge utile :
{ "timestamp": 1700000000000, "temperature": 23.5, "humidity": 60.1, "pressure": 1013.25, "battery_level": 87 }
Protocole de ligne résultant :
device_metrics,device_id=myDevice123,location=building-a temperature=23.5,humidity=60.1,pressure=1013.25,battery_level=87i 1700000000000
L'ordre des champs dans la sortie peut varier : les champs ne sont pas triés par ordre alphabétique.
Client-batched charge utile d'un tableau avec des modèles par élément
{ "influxDB": { "destinationArn": "arn:aws:iot:us-west-2:111122223333:ruledestination/influxdb/a1b2c3d4", "roleArn": "arn:aws:iam::111122223333:role/iot-influxdb-role", "organization": "my-org", "databaseName": "sensor_data", "tableName": "@{measurement_type}", "tags": { "sensor_id": "@{sensor_id}", "location": "${topic(2)}" }, "timestampUnit": "ns" } }
Exemple de charge utile (publié pourdevices/floor3/telemetry) :
[ {"measurement_type": "temperature", "sensor_id": "sensor-42", "timestamp": 1700000000000000000, "value": 23.5}, {"measurement_type": "humidity", "sensor_id": "sensor-42", "timestamp": 1700000001000000000, "value": 60.1}, {"measurement_type": "pressure", "sensor_id": "sensor-43", "timestamp": 1700000002000000000, "value": 1013.25} ]
Protocole de ligne résultant :
temperature,location=floor3,sensor_id=sensor-42 value=23.5 1700000000000000000 humidity,location=floor3,sensor_id=sensor-42 value=60.1 1700000001000000000 pressure,location=floor3,sensor_id=sensor-43 value=1013.25 1700000002000000000
Server-side traitement par lots avec InfluxDB
Pour ajouter un traitement par lots côté serveur à toute action InfluxDB, incluez batchConfig dans la configuration de l'action :
"batchConfig": { "maxBatchSize": 50, "maxBatchOpenMs": 1000, "maxBatchSizeBytes": 65536, "batchAcrossTopics": false }
Politique IAM pour le rôle d'action des règles
Politique de confiance :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "iot.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
Politique d'autorisation :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-influxdb-secret-a1b2c3" } ] }
Traitement par lots combiné côté client et côté serveur (réorganisation des points)
Lorsque vous activez à la fois le traitement par lots côté client (charges utiles d'un tableau JSON) et le traitement par lots côté serveur (batchConfig), sachez que le lot côté serveur peut réorganiser les points à partir d'une charge utile par lots côté client. Le moteur de règles accumule des points provenant de plusieurs messages entrants dans un seul lot côté serveur. Étant donné que les messages arrivent de manière asynchrone à partir de différents appareils ou sujets, les points qui ont été classés dans la charge utile du client d'origine peuvent être entrelacés avec des points provenant d'autres messages lors de l'écriture finale.
Configuration de l'action :
{ "influxDB": { "destinationArn": "arn:aws:iot:us-west-2:111122223333:ruledestination/influxdb/abc123", "roleArn": "arn:aws:iam::111122223333:role/iot-influxdb-role", "databaseName": "sensor_data", "tableName": "@{measurement_type}", "tags": { "device_id": "${topic(2)}", "floor": "@{floor}" }, "timestampUnit": "ms", "batchConfig": { "maxBatchSize": 100, "maxBatchOpenMs": 500, "maxBatchSizeBytes": 65536, "batchAcrossTopics": true } } }
L'appareil A publie devices/deviceA/telemetry à l'instant T :
[ {"measurement_type": "temperature", "floor": "1", "timestamp": 1700000000000, "value": 22.1}, {"measurement_type": "temperature", "floor": "2", "timestamp": 1700000000100, "value": 23.4}, {"measurement_type": "humidity", "floor": "1", "timestamp": 1700000000200, "value": 55.0} ]
L'appareil B publie à l'devices/deviceB/telemetryinstant T+10ms :
[ {"measurement_type": "temperature", "floor": "3", "timestamp": 1700000000050, "value": 21.8}, {"measurement_type": "humidity", "floor": "3", "timestamp": 1700000000150, "value": 62.3} ]
Les deux messages arrivent dans la fenêtre de traitement par lots de 500 ms (maxBatchOpenMs). Le moteur de règles combine donc les cinq points en un seul lot côté serveur.
Protocole de ligne résultant (écriture par lots côté serveur) :
temperature,device_id=deviceB,floor=3 value=21.8 1700000000050 temperature,device_id=deviceA,floor=1 value=22.1 1700000000000 temperature,device_id=deviceA,floor=2 value=23.4 1700000000100 humidity,device_id=deviceB,floor=3 value=62.3 1700000000150 humidity,device_id=deviceA,floor=1 value=55.0 1700000000200
Notez que les points ne sont plus dans l'ordre dans lequel ils apparaissaient dans la charge utile de chaque client. Les trois points du périphérique A (horodatages 1700000000000, 1700000000100, 1700000000200) sont entrelacés avec les deux points du périphérique B (horodatages 1700000000050, 1700000000150). Le lot côté serveur ne garantit pas l'ordre d'origine de chaque message. InfluxDB utilise le champ d'horodatage pour placer chaque point sur la chronologie, de sorte que la réorganisation n'affecte pas l'exactitude des requêtes. Toutefois, si votre application repose sur la sémantique de l'ordre d'écriture (par exemple, la gestion des conflits de types de champs ou la déduplication de la dernière écriture gagnante dans la même milliseconde), sachez que l'ordre d'écriture effectif peut être différent de l'ordre de publication.