Consultation de l'historique des révisions - Amazon Quantum Ledger Database (Amazon QLDB)

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.

Consultation de l'historique des révisions

Amazon QLDB stocke l'historique complet de chaque document dans un tableau. Vous pouvez consulter les trois révisions du document d'immatriculation du véhicule que vous avez précédemment inséré, mis à jour et supprimé enMise à jour et suppression de documents interrogeant la fonction d'historique intégrée.

Fonction historique

La fonction d'historique de QLDB est une extension PartiQL qui renvoie les révisions à partir de la vue définie par le système de votre table. Il inclut donc à la fois vos données et les métadonnées associées dans le même schéma que la vue validée.

Syntaxe

SELECT * FROM history( table_name | 'table_id' [, `start-time` [, `end-time` ] ] ) AS h [ WHERE h.metadata.id = 'id' ]
Arguments
nom_table | « id_table »

Le nom ou l'identifiant de la table. Un nom de table est un identifiant PartiQL que vous pouvez indiquer par des guillemets doubles ou sans guillemets. Un ID de table est une chaîne littérale qui doit être placée entre guillemets simples. Pour en savoir plus sur l'utilisation des ID de table, consultezConsultation de l'historique des tables inactives.

`heure de début`, `heure de fin`

(Facultatif) Spécifie la période pendant laquelle les révisions étaient actives. Ces paramètres ne précisent pas la période pendant laquelle les révisions ont été validées dans le journal dans le cadre d'une transaction.

Les heures de début et de fin sont des littéraux d'horodatage ionique qui peuvent être indiqués par des crochets inverses (`...`). Pour en savoir plus, consultez Interroger Ion avec PartiQL dans Amazon QLDB.

Ces paramètres temporels adoptent le comportement suivant :

  • L'heure de début et l'heure de fin sont toutes deux inclusives. Ils doivent être au format date et heure ISO 8601 et au format temps universel coordonné (UTC).

  • L'heure de début doit être inférieure ou égale à l'heure de fin et peut être une date quelconque dans le passé.

  • ID ID ID ID ID ID. ID ID.

  • Si vous spécifiez une heure de début mais pas une heure de fin, votre requête définit par défaut la date et l'heure actuelles comme date et heure de fin. Si vous ne spécifiez aucune de ces options, votre requête renvoie l'historique complet.

« identifiant »

(Facultatif) L'ID du document pour lequel vous souhaitez interroger l'historique des révisions, indiqué par des guillemets simples.

Astuce

Il est recommandé de qualifier une requête d'historique à la fois avec une plage de dates (heure de début et heure de fin) et un identifiant de document (metadata.id). Dans QLDB, chaqueSELECT requête est traitée dans le cadre d'une transaction et est soumise à un délai d'expiration de transaction.

Les requêtes d'historique n'utilisent pas les index que vous créez dans une table. L'historique QLDB est indexé uniquement par identifiant de document, et vous ne pouvez pas créer d'index d'historique supplémentaires pour le moment. Les requêtes d'historique qui incluent une heure de début et une heure de fin bénéficient d'une qualification par plage de dates.

Exemple de requête d'historique

Pour consulter l'historique du document d'immatriculation du véhicule, utilisez celuiid que vous avez précédemment enregistréMise à jour et suppression de documents. Par exemple, la requête d'historique suivante renvoie toutes les révisions de l'ID du documentADR2Ll1fGsU4Jr4EqTdnQF qui étaient actives entre2019-06-05T00:00:00Z et2019-06-05T23:59:59Z.

Note

N'oubliez pas que les paramètres d'heure de début et de fin ne précisent pas la plage horaire au cours de laquelle les révisions ont été validées dans le journal lors d'une transaction. Par exemple, si une révision a été validée auparavant2019-06-05T00:00:00Z et est restée active après cette heure de début, cet exemple de requête renverra cette révision dans les résultats.

Assurez-vous de remplacer l'idheure de début et l'heure de fin par vos propres valeurs, le cas échéant.

SELECT * FROM history(VehicleRegistration, `2019-06-05T00:00:00Z`, `2019-06-05T23:59:59Z`) AS h WHERE h.metadata.id = 'ADR2Ll1fGsU4Jr4EqTdnQF' --replace with your id

Les résultats de votre requête doivent se présenter comme suit :

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{B2wYwrHKOWsmIBmxUgPRrTx9lv36tMlod2xVvWNiTbo=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", City: "Tacoma", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] } }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17 }, hash:{{LGSFZ4iEYWZeMwmAqcxxNyT4wbCtuMOmFCj8pEd6Mp0=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] }, City: "Bellevue" }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:1, txTime:2019-06-05T21:01:442d-3Z, txId:"9cArhIQV5xf5Tf5vtsPwPq" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:19 }, hash:{{7bm5DUwpqJFGrmZpb7h9wAxtvggYLPcXq+LAobi9fDg=}}, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:2, txTime:2019-06-05T21:03:76d-3Z, txId:"9GslbtDtpVHAgYghR5FXbZ" } }

La sortie inclut des attributs de métadonnées qui fournissent des détails sur le moment où chaque élément a été modifié et par quelle transaction. À partir de ces données, vous pouvez voir ce qui suit :

  • Le document est identifié de manière unique par son attribut systèmeid :ADR2Ll1fGsU4Jr4EqTdnQF. Il s'agit d'un UUID représenté dans une chaîne codée en Base62.

  • UneINSERT instruction crée la révision initiale d'un document (version0).

  • Chaque mise à jour ultérieure crée une nouvelle révision avec le même documentid et un numéro de version incrémenté.

  • LetxId champ indique la transaction qui a validé chaque révision ettxTime indique quand chaque révision a été validée.

  • UneDELETE instruction crée une nouvelle révision, mais définitive, d'un document. Cette révision finale ne contient que des métadonnées.

Pour savoir comment supprimer définitivement une révision, passez àRédaction de révisions de documents.