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.
Temas
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
ysequenceNo
.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:
-
Función de historial – Nota: Una vez completada una edición en el diario, puede pasar algún tiempo antes de que las consultas del historial muestren el resultado de la edición. Es posible que vea algunas revisiones editadas antes que otras a medida que se completa la edición asíncrona, pero las consultas del historial acabarán mostrando los resultados finalizados.
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
. El valor de este campo es el hash de Ion de la estructura dataHash
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.