Consultation de l'historique des révisions - Base de données Amazon Quantum Ledger (AmazonQLDB)

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

Important

Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez Migrer un Amazon QLDB Ledger vers Amazon Aurora SQL Postgre.

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

Fonction d'historique

La fonction d'historique in QLDB est une extension partiQL qui renvoie les révisions à partir de la vue définie par le système de votre table. Elle 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
table_name | 'table_id'

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

`start-time`, `end-time`

(Facultatif) Spécifie la plage de temps pendant laquelle les révisions étaient actives. Ces paramètres ne spécifient 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 ioniques qui peuvent être indiqués par des backticks (). `...` Pour en savoir plus, veuillez consulter la section Interroger Ion avec PartiQL sur Amazon QLDB.

Ces paramètres temporels se comportent comme suit :

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

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

  • L'heure de fin doit être inférieure ou égale à la UTC date et à l'heure actuelles.

  • 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 pour l'heure de fin. Si vous ne spécifiez ni l'un ni l'autre, votre requête renvoie l'historique complet.

'id'

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

Astuce

Il est recommandé de qualifier une requête d'historique à la fois par une plage de dates (heure de début et heure de fin) et par un identifiant de document (metadata.id). DansQLDB, chaque SELECT 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 sur une table. QLDBl'historique 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 de la qualification par plage de dates.

Exemple de requête d'historique

Pour consulter l'historique du document d'immatriculation du véhicule, utilisez celui id que vous avez précédemment enregistréMettre à jour et supprimer des documents. Par exemple, la requête d'historique suivante renvoie toutes les révisions de l'ID de document ADR2Ll1fGsU4Jr4EqTdnQF qui ont été actives entre 2019-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 spécifient pas la période pendant laquelle les révisions ont été validées dans le journal dans le cadre d'une transaction. Par exemple, si une révision a été validée avant cette date de début 2019-06-05T00:00:00Z et qu'elle est restée active après cette date 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 ressembler à ce qui 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 assigné par le système id :. ADR2Ll1fGsU4Jr4EqTdnQF Il s'agit d'un UUID qui est représenté dans une chaîne codée en Base62.

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

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

  • Le txId champ indique la transaction qui a validé chaque révision et txTime indique quand chacune a été validée.

  • Une DELETE instruction crée une nouvelle mais dernière révision d'un document. Cette révision finale contient uniquement des métadonnées.

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