En esta página se describen las solicitudes 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 eliminar varias filas en tus tablas de Spanner. La escritura por lotes de Spanner admite escrituras de baja latencia sin una operación de lectura y devuelve respuestas a medida que se aplican las mutaciones por lotes. Para usar la escritura por lotes, agrupa las mutaciones relacionadas y todas las mutaciones de un grupo se confirman de forma atómica. Las mutaciones de los grupos se aplican en un orden no especificado y son independientes entre sí (no atómicas). Spanner no tiene que esperar a que se apliquen todas las mutaciones para enviar una respuesta, lo que significa que la escritura por lotes permite que se produzcan fallos parciales. También puedes ejecutar varias escrituras por lotes a la vez. Para obtener más información, consulta Cómo usar la escritura por lotes.
Casos prácticos
La escritura por lotes de Spanner es especialmente útil si quieres confirmar un gran número de escrituras sin una operación de lectura, pero no necesitas una transacción atómica para todas tus mutaciones.
Si quieres agrupar tus solicitudes de DML, usa DML por lotes para modificar tus datos de Spanner. Para obtener más información sobre las diferencias entre DML y mutaciones, consulta Comparar DMLs y mutaciones.
En el caso de las solicitudes de mutación únicas, te recomendamos que uses una transacción de lectura y escritura con bloqueo.
Limitaciones
La escritura por lotes de Spanner tiene las siguientes limitaciones:
La escritura por lotes de Spanner no está disponible en la consola deGoogle Cloud ni en la CLI de Google Cloud. Solo está disponible mediante las APIs REST y RPC, así como las bibliotecas de cliente de Spanner.
La protección contra repeticiones no se admite con la escritura por lotes. Es posible que las mutaciones se apliquen más de una vez, y una mutación que se aplique más de una vez puede provocar un error. Por ejemplo, si se vuelve a reproducir una mutación de inserción, puede que se produzca un error de que ya existe o, si usas claves basadas en marcas de tiempo generadas o de confirmación en la mutación, puede que se añadan filas adicionales a la tabla. Te recomendamos que estructures tus escrituras de forma que sean idempotentes para evitar este problema.
No puedes revertir una solicitud de escritura por lotes completada. Puedes cancelar una solicitud de escritura por lotes en curso. Si cancelas una escritura por lotes en curso, se revertirán las mutaciones de los grupos incompletos. 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 eliminar 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 quieras modificar. Puedes agrupar mutaciones de escritura de forma no atómica en una sola llamada mediante una solicitud de API REST o API RPC.
Debes agrupar los siguientes tipos de mutación al usar la escritura por lotes:
- Insertar filas con el mismo prefijo de clave principal en las tablas principal y secundaria.
- Insertar filas en tablas con una relación de clave externa entre las tablas.
- Otros tipos de mutaciones relacionadas en función del esquema de tu base de datos y de la lógica de la aplicación.
También puedes escribir por lotes con las bibliotecas de cliente de Spanner.
En el siguiente ejemplo de código se actualiza la tabla Singers
con nuevas filas.
Bibliotecas de cliente
Java
Go
Node
Python
C++
Siguientes pasos
- Consulta más información sobre las transacciones de Spanner.