En esta página, se describen las solicitudes de operaciones de escritura por lotes de Spanner y cómo puedes usarlas para modificar tus datos de Spanner.
Puedes usar la escritura por lotes de Spanner para insertar, actualizar o borrar varias filas en tus tablas de Spanner. La escritura en lotes de Spanner admite operaciones de escritura de baja latencia sin una operación de lectura y muestra respuestas a medida que se aplican mutaciones en lotes. Para usar la escritura por lotes, debes agrupar de mutaciones relacionadas entre sí, y todas las mutaciones de un grupo se confirman de forma atómica. Las mutaciones entre los grupos se aplican en un orden no especificado. son independientes entre sí (no atómicos). Spanner no necesita esperar a que se apliquen todas las mutaciones antes de enviar una respuesta, lo que significa que la escritura por lotes permite fallas parciales. También puedes ejecutar múltiples lotes escribe a la vez. Para obtener más información, consulta Cómo usar la escritura por lotes.
Casos de uso
La escritura por lotes de Spanner es muy útil si quieres confirmar un grandes cantidades de operaciones de escritura sin una operación de lectura, pero que no requieren una de todas tus mutaciones.
Si deseas realizar solicitudes de DML por lotes, usa DML por lotes para modificar tus datos de Spanner. Para obtener más información sobre las diferencias entre DML y mutaciones, consulta Compara DML y mutaciones.
Para solicitudes de mutación únicas, te recomendamos que uses una transacción de bloqueo de lectura y escritura.
Limitaciones
La operación de escritura por lotes de Spanner tiene las siguientes limitaciones:
La escritura por lotes de Spanner no está disponible si se usa La consola de Google Cloud o Google Cloud CLI. Solo está disponible con las APIs de REST y RPC, y la biblioteca cliente de Spanner para Java.
La protección de reproducción no es compatible con la escritura por lotes. Es posible que las mutaciones se apliquen más de una vez, y una mutación que se aplica más de una vez podría provocar un error. Por ejemplo, si se vuelve a reproducir una mutación de inserción, es posible que se genere un error de elemento ya existente o, si usas claves generadas o basadas en marcas de tiempo de confirmación en la mutación, es posible que se agreguen filas adicionales a la tabla. Te recomendamos estructurar las escrituras para que sean idempotentes. evitar este problema.
No puedes revertir una solicitud de escritura por lotes completada. Puedes cancelar un solicitud de escritura por lotes en curso. Si cancelas una operación de escritura por lotes en curso, se revertirán las mutaciones en los grupos no completados. Las mutaciones de los grupos completados se confirman en la base de datos.
El tamaño máximo de una solicitud de escritura por lotes es el mismo que el límite de una solicitud de confirmación. Para obtener más información, consulta Límites para crear, leer, actualizar y borrar datos.
Cómo usar la escritura por lotes
Para usar la escritura por lotes, debes tener el permiso spanner.databases.write
en
la base de datos que quieres modificar. Puedes escribir mutaciones por lotes de forma no atómica en una sola llamada con una llamada de solicitud REST o API de RPC.
Cuando uses la escritura por lotes, debes agrupar los siguientes tipos de mutación:
- Insertar filas con el mismo prefijo de clave primaria en el elemento superior y el secundario tablas.
- Insertar filas en tablas con una relación de clave externa entre ellas
- Otros tipos de mutaciones relacionadas según el esquema de la base de datos y la lógica de la aplicación
También puedes realizar operaciones de escritura por lotes con la biblioteca cliente de Java de Spanner.
En el siguiente ejemplo de código, se actualiza la tabla Singers
con filas nuevas.
Java
¿Qué sigue?
- Obtén más información sobre las transacciones de Spanner.