Cette page décrit les requêtes d'écriture par lot Spanner et explique comment les utiliser pour modifier vos données Spanner.
Vous pouvez utiliser l'écriture par lot Spanner pour insérer, mettre à jour ou supprimer plusieurs lignes dans vos tables Spanner. L'écriture par lot Spanner prend en charge les écritures à faible latence sans opération de lecture et renvoie des réponses lorsque les mutations sont appliquées par lot. Pour utiliser l'écriture par lot, vous regroupez les mutations associées, et toutes les mutations d'un groupe sont validées de manière atomique. Les mutations entre les groupes sont appliquées dans un ordre non spécifié et sont indépendantes les unes des autres (non atomiques). Spanner n'a pas besoin d'attendre que toutes les mutations soient appliquées avant d'envoyer une réponse, ce qui signifie que l'écriture par lot permet un échec partiel. Vous pouvez également exécuter plusieurs écritures par lot à la fois. Pour en savoir plus, consultez la section Utiliser l'écriture par lot.
Cas d'utilisation
L'écriture par lot Spanner est particulièrement utile si vous souhaitez valider un grand nombre d'écritures sans opération de lecture, mais que vous n'avez pas besoin d'une transaction atomique pour toutes vos mutations.
Si vous souhaitez regrouper vos requêtes LMD, utilisez le LMD par lot pour modifier vos données Spanner. Pour en savoir plus sur les différences entre le LMD et les mutations, consultez la section Comparer le LMD et les mutations.
Pour les requêtes de mutation unique, nous vous recommandons d'utiliser une transaction de lecture-écriture avec verrouillage.
Limites
L'écriture par lot Spanner est soumise aux limites suivantes :
L'écriture par lot Spanner n'est pas disponible à l'aide de la Google Cloud console ni de Google Cloud CLI. Elle n'est disponible qu'à l'aide des API REST et RPC, ainsi que des bibliothèques clientes Spanner.
La protection de réexécution n'est pas prise en charge avec l'écriture par lot. Il est possible que les mutations soient appliquées plusieurs fois, et une mutation appliquée plusieurs fois peut entraîner un échec. Par exemple, si une mutation d'insertion est réexécutée, elle peut générer une erreur indiquant qu'elle existe déjà. Si vous utilisez des clés générées ou basées sur un commit dans la mutation, cela peut entraîner l'ajout de lignes supplémentaires à la table. Nous vous recommandons de structurer vos écritures pour qu'elles soient idempotentes afin d'éviter ce problème.
Vous ne pouvez pas annuler une requête d'écriture par lot terminée. Vous pouvez annuler une requête d'écriture par lot en cours. Si vous annulez une écriture par lot en cours, les mutations des groupes non terminés sont annulées. Les mutations des groupes terminés sont validées dans la base de données.
La taille maximale d'une requête d'écriture par lot est la même que la limite d'une requête de validation. Pour en savoir plus, consultez la section Limites pour la création, la lecture, la mise à jour et la suppression de données.
Utiliser l'écriture par lot
Pour utiliser l'écriture par lot, vous devez disposer de l'autorisation spanner.databases.write sur la base de données que vous souhaitez modifier. Vous pouvez écrire des mutations par lot
de manière non atomique en un seul appel à l'aide d'une requête d'API REST
ou RPC.
Vous devez regrouper les types de mutation suivants lorsque vous utilisez l'écriture par lot :
- Insertion de lignes avec le même préfixe de clé primaire dans les tables parent et enfant.
- Insertion de lignes dans des tables avec une relation de clé étrangère entre les tables.
- Autres types de mutations associées en fonction du schéma de votre base de données et de la logique de votre application.
Vous pouvez également écrire par lot à l'aide des bibliothèques clientes Spanner.
L'exemple de code suivant met à jour la table Singers avec de nouvelles lignes.
Bibliothèques clientes
C++
C#
Go
Java
Nœud
PHP
Python
Ruby
Étape suivante
- En savoir plus sur les transactions Spanner.