Editar revisiones de documentos - Base de datos Amazon Quantum Ledger (AmazonQLDB)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Editar revisiones de documentos

importante

Aviso de fin de soporte: los clientes actuales podrán usar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte Migración de un Amazon QLDB Ledger a Amazon Aurora SQL Postgre.

En AmazonQLDB, una DELETE declaración solo elimina un documento de forma lógica al crear una nueva revisión que lo marca como eliminado. QLDBtambién admite una operación de redacción de datos que permite eliminar permanentemente las revisiones de documentos inactivas del historial de una tabla.

nota

Cualquier libro mayor que se haya creado antes del 22 de julio de 2021 actualmente no es apto para la edición. Puedes ver la hora de creación de tu libro mayor en la QLDB consola de Amazon.

La operación de edición elimina solo los datos de usuario de la revisión especificada, sin alterar la secuencia ni los metadatos del documento. Esto mantiene la integridad general de los datos del libro mayor.

Antes de empezar con la redacción de datosQLDB, asegúrate de revisar la referencia Condiciones y limitaciones de edición de Amazon QLDB PartiQL.

Procedimiento almacenado de edición

Puede utilizar el procedimiento almacenado REDACT_REVISION para eliminar permanentemente una revisión individual e inactiva de un libro mayor. Este procedimiento almacenado elimina todos los datos de usuario de la revisión especificada tanto en el almacenamiento indexado como en el del diario. Sin embargo, no modifica la secuencia del diario y los metadatos del documento, incluidos el identificador del documento y el hash. La operación es irreversible.

La revisión del documento especificada debe ser una revisión inactiva en el historial. La última revisión activa de un documento no es apta para ser editada.

Para editar varias revisiones, debe ejecutar el procedimiento almacenado una vez para cada revisión. Puede editar una revisión por transacción.

Sintaxis

EXEC REDACT_REVISION `block-address`, 'table-id', 'document-id'
Argumentos
`block-address`

La ubicación en el bloque del diario de la revisión del documento que se va a editar. La dirección es una estructura de Amazon Ion que consta de dos campos: strandId y sequenceNo.

Se trata de un valor literal de Ion que se indica con acentos graves. Por ejemplo:

`{strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17}`
'table-id'

El identificador único de la tabla cuya revisión del documento desea editar, indicado entre comillas simples.

'document-id'

El identificador único del documento cuya revisión desea editar, indicado entre comillas simples.

Comprobar si una edición está completa

Cuando envía una solicitud de redacción mediante el procedimiento almacenado, QLDB procesa la redacción de los datos de forma asíncrona. Al finalizar, los datos de usuario de la revisión (representados por la estructura data) se eliminan permanentemente. Para comprobar si una solicitud de edición se ha completado, puede utilizar una de las siguientes opciones:

Una vez finalizada la edición de una revisión, la estructura data de la revisión se sustituye por un campo dataHash nuevo. El valor de este campo es el hash de Ion de la estructura data eliminada, como muestra el siguiente ejemplo. Como resultado, el libro mayor mantiene la integridad general de sus datos y sigue siendo verificable criptográficamente mediante las operaciones de verificación existentes. API Para obtener más información sobre la verificación, consulte Verificación de datos en Amazon QLDB.

Ejemplo de edición

Tome el documento de registro del vehículo que revisó anteriormente en Consultar el historial de revisiones. Suponga que desea editar la segunda revisión (version:1). El siguiente ejemplo de consulta muestra esta revisión antes de la edición. En los resultados de la consulta, la data estructura que se redactará se resalta en red italics.

SELECT * FROM history(VehicleRegistration) AS h WHERE h.metadata.id = 'ADR2Ll1fGsU4Jr4EqTdnQF' --replace with your id AND h.metadata.version = 1
{ 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" } }

Tome nota de blockAddress en los resultados de la consulta porque debe pasar este valor al procedimiento REDACT_REVISION almacenado. A continuación, busque el identificador único de la tabla VehicleRegistration consultando el catálogo del sistema, de la siguiente manera.

SELECT tableId FROM information_schema.user_tables WHERE name = 'VehicleRegistration'

Use este identificador de la tabla junto con el identificador del documento y la dirección de bloqueo para ejecutar REDACT_REVISION. El identificador de la tabla y el identificador del documento son literales de cadena que deben escribirse entre comillas simples, y la dirección de bloque es un literal de Ion entre acentos graves. Asegúrese de sustituir estos argumentos por sus propios valores, según proceda.

EXEC REDACT_REVISION `{strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17}`, '5PLf9SXwndd63lPaSIa0O6', 'ADR2Ll1fGsU4Jr4EqTdnQF'
sugerencia

Al utilizar la QLDB consola o el QLDB shell para consultar un identificador de tabla o documento (o cualquier valor literal de cadena), el valor devuelto aparece entre comillas dobles. Sin embargo, al especificar los argumentos del identificador de la tabla y el identificador del documento del procedimiento REDACT_REVISION almacenado, debe escribir los valores entre comillas simples.

Esto se debe a que escribe sentencias en formato PartiQL, pero QLDB devuelve los resultados en formato Amazon Ion. Para obtener más información sobre la sintaxis y la semántica de PartiQL QLDB in, consulte. Consulta de Ion con PartiQL

Una solicitud de edición válida devuelve una estructura de Ion que representa la revisión del documento que está editando, de la siguiente manera.

{ blockAddress: { strandId: "JdxjkR9bSYB5jMHWcI464T", sequenceNo: 17 }, tableId: "5PLf9SXwndd63lPaSIa0O6", documentId: "ADR2Ll1fGsU4Jr4EqTdnQF", version: 1 }

Al ejecutar este procedimiento almacenado, QLDB procesa la solicitud de redacción de forma asíncrona. Al finalizar la redacción, la data estructura se elimina permanentemente y se sustituye por una nueva dataHash . El valor de este campo es el hash de Ion de la estructura data eliminada, tal como se indica a continuación.

nota

Este ejemplo de dataHash se proporciona únicamente con fines informativos y no es un valor hash real calculado.

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17 }, hash:{{LGSFZ4iEYWZeMwmAqcxxNyT4wbCtuMOmFCj8pEd6Mp0=}}, dataHash: {{s83jd7sfhsdfhksj7hskjdfjfpIPP/DP2hvionas2d4=}}, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:1, txTime:2019-06-05T21:01:442d-3Z, txId:"9cArhIQV5xf5Tf5vtsPwPq" } }

Eliminar y editar una revisión activa

Las revisiones de documentos activos (es decir, las últimas revisiones no eliminadas de cada documento) no son aptas para la edición de datos. Para poder editar una revisión activa, primero debe actualizarla o eliminarla. Esto mueve la revisión previamente activa al historial y la habilita para su edición.

Si su caso de uso requiere que todo el documento se marque como eliminado, utilice primero una DELETEdeclaración. Por ejemplo, la siguiente declaración elimina de forma lógica el VehicleRegistration documento con un VIN de. 1HVBBAANXWH544237

DELETE FROM VehicleRegistration AS r WHERE r.VIN = '1HVBBAANXWH544237'

A continuación, edite la revisión anterior antes de eliminarla, tal y como se describió anteriormente. Si es necesario, también puede editar individualmente cualquier revisión anterior.

Si su caso de uso requiere que el documento permanezca activo, utilice primero una FROMinstrucción UPDATEo para ocultar o eliminar los campos que desee censurar. Este proceso se describe en las secciones siguientes.

Editar un campo concreto de una revisión

QLDBno admite la redacción de un campo concreto en la revisión de un documento. Para ello, puede utilizar primero una REMOVE sentencia UPDATE(REMOVEo FROM) para eliminar un campo existente de una revisión. Por ejemplo, la siguiente instrucción elimina el LicensePlateNumber campo del VehicleRegistration documento con un VIN de1HVBBAANXWH544237.

UPDATE VehicleRegistration AS r REMOVE r.LicensePlateNumber WHERE r.VIN = '1HVBBAANXWH544237'

A continuación, edite la revisión anterior antes de eliminarla, tal y como se describió anteriormente. Si es necesario, también puede editar individualmente cualquier revisión anterior que incluya este campo ahora eliminado.

Para obtener información sobre cómo optimizar sus consultas, continúe con Optimización del rendimiento de las consultas.