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 borrar 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 en lotes. Para usar la escritura por lotes, debes agrupar las mutaciones relacionadas y todas las mutaciones de un grupo se confirman de forma atómica. Las mutaciones en los grupos se aplican en un orden no especificado y son independientes entre sí (no atómicas). 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 varias escrituras por lotes 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 especialmente útil si deseas confirmar una gran cantidad de escrituras sin una operación de lectura, pero no necesitas una transacción atómica para todas tus mutaciones.
Si deseas procesar por lotes 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 Comparación entre DML y mutaciones.
Para las solicitudes de mutación única, te recomendamos que uses una transacción de lectura y escritura de bloqueo.
Limitaciones
La escritura por lotes de Spanner tiene las siguientes limitaciones:
La escritura por lotes de Spanner no está disponible con la Google Cloud consola ni Google Cloud CLI. Solo está disponible con las APIs de REST y RPC, y las bibliotecas cliente de Spanner.
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 reproduce una mutación de inserción, es posible que se produzca un error de ya existe 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 que estructures tus escrituras para que sean idempotentes y evites 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 revierten las mutaciones en grupos incompletos. Las mutaciones en grupos completados se confirman en la base de datos.
El tamaño máximo para una solicitud de escritura por lotes es el mismo que el límite para 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 deseas modificar. Puedes escribir mutaciones por lotes
de forma no atómica en una sola llamada con una llamada de solicitud de API de REST
o RPC.
Debes agrupar los siguientes tipos de mutación cuando uses la escritura por lotes:
- Insertar filas con el mismo prefijo de clave primaria en las tablas superiores y secundarias.
- Insertar filas en tablas con una relación de clave externa entre las tablas.
- Otros tipos de mutaciones relacionadas según el esquema de tu base de datos y la lógica de la aplicación.
También puedes escribir por lotes con las bibliotecas cliente de Spanner.
En el siguiente ejemplo de código, se actualiza la tabla Singers con filas nuevas.
Bibliotecas cliente
C++
C#
Go
Java
Nodo
PHP
Python
Ruby
¿Qué sigue?
- Obtén más información sobre las transacciones de Spanner.