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á.
QLDBregistros de streaming no Kinesis
Importante
Aviso de fim do suporte: os clientes existentes poderão usar a Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte Migrar um Amazon QLDB Ledger para o Amazon Aurora Postgre
Um QLDB stream da Amazon grava três tipos de registros de dados em um determinado recurso do Amazon Kinesis Data Streams: controle, resumo do bloco e detalhes da revisão. Todos os três tipos de registro são escritos na representação binária do formato Amazon Ion.
Os registros de controle indicam o início e a conclusão de suas QLDB transmissões. Sempre que uma revisão é confirmada em seu diário, um QLDB stream grava todos os dados do bloco de diário associado nos registros de resumo do bloco e detalhes da revisão.
Os três tipos de registro são polimórficos. Todos eles consistem em um registro comum de nível superior que contém o QLDB fluxoARN, o tipo de registro e a carga útil do registro. Esse registro de nível superior tem o formato a seguir.
{ qldbStreamArn: string, recordType: string, payload: { //control | block summary | revision details record } }
O campo recordType
pode ter um dos três valores:
-
CONTROL
-
BLOCK_SUMMARY
-
REVISION_DETAILS
As seções a seguir descrevem o formato e o conteúdo de cada registro de carga útil individual.
nota
QLDBgrava todos os registros de stream no Kinesis Data Streams na representação binária do Amazon Ion. Os exemplos a seguir são fornecidos na representação de texto do Ion para ilustrar o conteúdo do registro em um formato legível.
Tópicos
Registros de controle
Um QLDB stream grava registros de controle para indicar seus eventos de início e conclusão. A seguir estão exemplos de registros de controle com dados de amostra para cada controlRecordType
:
-
CREATED
— O primeiro registro que um QLDB stream grava no Kinesis para indicar que seu stream recém-criado está ativo.{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"CONTROL", payload:{ controlRecordType:"CREATED" } }
-
COMPLETED
— O último registro que um QLDB stream grava no Kinesis para indicar que seu stream atingiu a data e a hora de término especificadas. Esse registro não será gravado se você cancelar a transmissão.{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"CONTROL", payload:{ controlRecordType:"COMPLETED" } }
Bloquear registros resumidos
Um registro de resumo em bloco representa um bloco de diário no qual suas revisões de documentos são confirmadas. Um bloco é um objeto que é enviado ao seu QLDB diário durante uma transação.
A carga útil de um registro de resumo do bloco contém o endereço do bloco, a data e hora e outros metadados da transação que confirmou o bloqueio. Também inclui atributos resumidos das revisões no bloco e das declarações partiQL que as confirmaram. Veja a seguir um exemplo de um registro de resumo de bloco com dados de amostra.
nota
Este exemplo de resumo de bloco é fornecido apenas para fins informativos. Os hashes mostrados não são valores reais de hash calculados.
{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"BLOCK_SUMMARY", payload:{ blockAddress:{ strandId:"ElYL30RGoqrFCbbaQn3K6m", sequenceNo:60807 }, transactionId:"9RWohCo7My4GGkxRETAJ6M", blockTimestamp:2019-09-18T17:00:14.601000001Z, blockHash:{{6Pk9KDYJd38ci09oaHxx0D2grtgh4QBBqbDS6i9quX8=}}, entriesHash:{{r5YoH6+NXDXxgoRzPREGAWJfn73KlZE0eTfbTxZWUDU=}}, previousBlockHash:{{K3ti0Agk7DEponywKcQCPRYVHb5RuyxdmQFTfrloptA=}}, entriesHashList:[ {{pbzvz6ofJC7mD2jvgfyrY/VtR01zIZHoWy8T1VcxlGo=}}, {{k2brC23DLMercmiOWHiURaGwHu0mQtLzdNPuviE2rcs=}}, {{hvw1EV8k4oOkIO36kblO/+UUSFUQqCanKuDGr0aP9nQ=}}, {{ZrLbkyzDcpJ9KWsZMZqRuKUkG/czLIJ4US+K5E31b+Q=}} ], transactionInfo:{ statements:[ { statement:"SELECT * FROM Person WHERE GovId = ?", startTime:2019-09-18T17:00:14.587Z, statementDigest:{{p4Dn0DiuYD3Xm9UQQ75YLwmoMbSfJmopOmTfMnXs26M=}} }, { statement:"INSERT INTO Person ?", startTime:2019-09-18T17:00:14.594Z, statementDigest:{{klMLkLfa5VJqk6JUPtHkQpOsDdG4HmuUaq/VaApQflU=}} }, { statement:"INSERT INTO VehicleRegistration ?", startTime:2019-09-18T17:00:14.598Z, statementDigest:{{B0gO9BWVNrzRYFoe7t+GVLpJ6uZcLKf5t/chkfRhspI=}} } ], documents:{ '7z2OpEBgVCvCtwvx4a2JGn':{ tableName:"Person", tableId:"LSkFkQvkIOjCmpTZpkfpn9", statements:[1] }, 'K0FpsSLpydLDr7hi6KUzqk':{ tableName:"VehicleRegistration", tableId:"Ad3A07z0ZffC7Gpso7BXyO", statements:[2] } } }, revisionSummaries:[ { hash:{{uDthuiqSy4FwjZssyCiyFd90XoPSlIwomHBdF/OrmkE=}}, documentId:"7z2OpEBgVCvCtwvx4a2JGn" }, { hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}}, documentId:"K0FpsSLpydLDr7hi6KUzqk" } ] } }
No campo revisionSummaries
, algumas revisões podem não ter um documentId
. Essas são revisões de sistema somente internas que não contêm dados do usuário. Um QLDB stream inclui essas revisões em seus respectivos registros de resumo de blocos porque os hashes dessas revisões fazem parte da cadeia de hash completa do periódico. A cadeia de hash completa é necessária para a verificação criptográfica.
Somente as revisões que têm um ID de documento são publicadas em registros separados de detalhes da revisão, conforme descrito na seção a seguir.
Registros de detalhes da revisão
Um registro de detalhes da revisão representa uma revisão do documento que está comprometida com seu diário. A carga contém todos os atributos da visualização confirmada da revisão, junto com o nome da tabela associada e o ID da tabela. Veja a seguir um exemplo de um registro de revisão com dados de amostra.
{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"REVISION_DETAILS", payload:{ tableInfo:{ tableName:"VehicleRegistration", tableId:"Ad3A07z0ZffC7Gpso7BXyO" }, revision:{ blockAddress:{ strandId:"ElYL30RGoqrFCbbaQn3K6m", sequenceNo:60807 }, hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}}, data:{ VIN:"1N4AL11D75C109151", LicensePlateNumber:"LEWISR261LL", State:"WA", City:"Seattle", PendingPenaltyTicketAmount:90.25, ValidFromDate:2017-08-21, ValidToDate:2020-05-11, Owners:{ PrimaryOwner:{PersonId:"7z2OpEBgVCvCtwvx4a2JGn"}, SecondaryOwners:[] } }, metadata:{ id:"K0FpsSLpydLDr7hi6KUzqk", version:0, txTime:2019-09-18T17:00:14.602Z, txId:"9RWohCo7My4GGkxRETAJ6M" } } } }
Lidando com duplicatas e registros out-of-order
QLDBos streams podem publicar duplicatas e out-of-order registros no Kinesis Data Streams. Portanto, um aplicativo consumidor pode precisar implementar sua própria lógica para identificar e lidar com esses cenários. O resumo do bloco e os registros de detalhes da revisão incluem campos que você pode usar para essa finalidade. Combinados com os atributos dos serviços posteriores, esses campos podem indicar tanto uma identidade exclusiva quanto uma ordem estrita para os registros.
Por exemplo, considere um fluxo que se integra a QLDB um OpenSearch índice para fornecer recursos de pesquisa de texto completo em documentos. Nesse caso de uso, você precisa evitar a indexação de revisões obsoletas (out-of-order) de um documento. Para impor o pedido e a desduplicação, você pode usar os campos ID do documento e versão externa em OpenSearch, junto com os campos ID do documento e versão em um registro de detalhes da revisão.