Consultando o histórico de revisões - Amazon Quantum Ledger Database (Amazon QLDB)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Consultando o histórico de revisões

O Amazon QLDB armazena o histórico completo de cada documento em uma tabela. Você pode ver todas as três revisões de um documento de registro de veículo que inseriu, atualizou e excluiu anteriormente em Atualizando e excluindo documentos, consultando a função de hitsórico integrada.

Função de histórico

A função de histórico no QLDB é uma extensão partiQL que retorna revisões da exibição definida pelo sistema da sua tabela. Portanto, inclui seus dados e os metadados associados no mesmo esquema que a visualização confirmada.

Sintaxe

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

O nome da tabela ou o ID da tabela. O nome da tabela é um identificador PartiQL que você pode indicar com aspas duplas ou sem aspas. O ID da tabela é um literal de string que deve estar entre aspas simples. Para saber mais sobre o uso de IDs de tabela, consulte Consultando o histórico de tabelas inativas.

`start-time`, `end-time`

(Opcional) Especifica o intervalo de tempo durante o qual todas as revisões estavam ativas. Esses parâmetros não especificam o intervalo de tempo durante o qual as revisões foram confirmadas no diário em uma transação.

Os horários de início e término são literais de timestamp de Ion que podem ser indicados com acentos graves (`...`). Para saber mais, consulte Consultando o Ion com o PartiQL no Amazon QLDB.

Esses parâmetros de tempo têm o seguinte comportamento:

  • A hora de início e a hora de término são opcionais. Devem estar no formato de hora e data da ISO 8601 e em UTC (Tempo Universal Coordenado).

  • A hora de início deve ser menor ou igual à hora de término e pode ser qualquer data arbitrária no passado.

  • A hora de término deve ser menor ou igual à data e hora UTC atuais.

  • Se você especificar uma hora de início, mas não uma hora de término, sua consulta padronizará a hora de término para a data e a hora atuais. Se você não especificar nenhum dos dois, sua consulta retornará o histórico inteiro.

'id'

(Opcional) O ID do documento para o qual você deseja consultar o histórico de revisões, indicado por aspas simples.

dica

Como prática recomendada, qualifique uma consulta de histórico com um intervalo de datas (hora de início e hora de término) e uma ID de documentos (metadata.id). No QLDB, cada consulta SELECT é processada em uma transação e está sujeita a um tempo limite de transação.

As consultas de histórico não usam os índices que você cria em uma tabela. O histórico do QLDB é indexado por ID do documento, e você não pode criar índices de histórico adicionais no momento. As consultas de histórico que incluem uma hora de início e uma hora de término ganham o benefício da qualificação por intervalo de datas.

Exemplo de consulta de histórico

Para consultar o histórico do documento de registro do veículo, use o id que você salvou anteriormente em Atualizando e excluindo documentos. Por exemplo, a consulta de histórico a seguir retorna todas as revisões da ID do documento ADR2Ll1fGsU4Jr4EqTdnQF que já estiveram ativas entre 2019-06-05T00:00:00Z e 2019-06-05T23:59:59Z.

nota

Lembre-se de que os parâmetros de hora de início e término não especificam o intervalo de tempo durante o qual as revisões foram confirmadas no diário em uma transação. Por exemplo, se uma revisão foi confirmada antes de 2019-06-05T00:00:00Z e permaneceu ativa após esse horário de início, essa consulta de exemplo retornará essa revisão nos resultados.

Certifique-se de substituir a id ,hora de início e a hora de término por seus próprios valores, conforme adequado.

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

Os resultados terão uma aparência semelhante a esta:

{ 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" } }

O resultado inclui atributos de metadados que fornecem detalhes sobre quando cada item foi modificado e por qual transação. A partir desses dados, você pode deduzir o seguinte:

  • O documento é identificado exclusivamente por seu id atribuído pelo sistema: ADR2Ll1fGsU4Jr4EqTdnQF. Esse é um identificador universalmente exclusivo (UUID) representado em uma string codificada em Base62.

  • Uma instrução INSERT cria a revisão inicial de um documento (versão 0).

  • Cada transação subsequente cria uma nova revisão com o mesmo documento id e um número de versão incrementado.

  • O campo txId indica a transação que confirmou cada revisão e txTime mostra quando cada uma foi confirmada.

  • Uma declaração DELETE cria uma revisão nova, mas final, de um documento. Essa revisão final tem somente metadados.

Para saber como excluir permanentemente uma revisão, vá para Redigindo revisões de documentos.