Suppressions
Ce document explique comment supprimer des données stockées dans des tables Bigtable, quand utiliser chaque approche et fournit des exemples. Avant de lire cette page, vous devez avoir consulté la présentation de Bigtable et comprendre les concepts liés à la conception de schémas.
Par souci de cohérence, les descriptions de cette page font référence aux méthodes d'API utilisées pour chaque type de requête. Toutefois, nous vous recommandons vivement d'utiliser systématiquement l'une des bibliothèques clientes Bigtable pour accéder aux API Bigtable au lieu d'utiliser REST ou RPC.
Les exemples de cette page utilisent des exemples de données semblables à celles que vous pourriez stocker dans Bigtable.
Pour connaître le nombre de fois que vous pouvez utiliser les opérations décrites sur cette page par jour, consultez Quotas et limites.
Comment Bigtable supprime les données
Lorsque vous envoyez une demande de suppression, les cellules sont marquées pour suppression et ne peuvent pas être lues. Les données sont supprimées jusqu'à une semaine plus tard lors de la compression, un processus en arrière-plan qui optimise en continu la table. Les métadonnées de suppression peuvent entraîner une légère augmentation de l'espace occupé par vos données (plusieurs Ko par ligne) pendant quelques jours après l'envoi d'une demande de suppression, jusqu'à la prochaine compaction.
Vous pouvez toujours envoyer une demande de suppression, même si votre cluster a dépassé la limite de stockage et que les lectures et les écritures sont bloquées.
Supprimer une plage de lignes
Si vous souhaitez supprimer une grande quantité de données stockées dans des lignes contiguës, utilisez dropRowRange
. Cette opération supprime toutes les lignes d'une plage de lignes identifiée par une ligne de début et de fin ou un préfixe de clé de ligne.
Les valeurs de clé de ligne que vous fournissez lorsque vous supprimez une plage de lignes sont traitées comme des données de service. Pour en savoir plus sur le traitement des données de service, consultez l'Avis de confidentialité deGoogle Cloud .
Une fois la suppression effectuée et la réponse reçue, vous pouvez écrire des données dans la même plage de lignes sans risque.
L'opération dropRowRange
est soumise aux restrictions suivantes :
- Vous ne pouvez pas supprimer une plage de lignes d'une vue autorisée.
- Vous ne pouvez pas appeler la méthode
dropRowRange
de manière asynchrone. Si vous envoyez une requêtedropRowRange
à une table alors qu'une autre requête est en cours, Bigtable renvoie une erreurUNAVAILABLE
avec le messageA DropRowRange operation is already ongoing
. Pour résoudre l'erreur, renvoyez la demande. - Avec les instances qui utilisent la réplication, sachez que Bigtable peut prendre beaucoup de temps pour effectuer l'opération en raison de l'augmentation de la latence de réplication et de l'utilisation du processeur. Pour supprimer des données d'une instance qui utilise la réplication, utilisez l'API Data pour lire, puis supprimer vos données.
Les exemples de code suivants montrent comment supprimer une plage de lignes commençant par le préfixe de clé de ligne phone#5c10102
:
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Supprimer des données à l'aide des méthodes de l'API Data
Si vous devez supprimer de petites quantités de données non contiguës, la meilleure option consiste souvent à utiliser une méthode qui appelle l'API Cloud Bigtable (API Data). Utilisez ces méthodes si vous supprimez des Mo, et non des Go, de données dans une requête. L'API Data est le seul moyen de supprimer des données d'une colonne (et non d'une famille de colonnes).
Les méthodes de l'API Data appellent MutateRows
avec l'un des trois types de mutation suivants :
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Une demande de suppression à l'aide de l'API Data est atomique : soit la demande aboutit et toutes les données sont supprimées, soit elle échoue et aucune donnée n'est supprimée.
Dans la plupart des cas, évitez d'utiliser les méthodes CheckAndMutate
pour supprimer des données. Dans le cas rare où vous avez besoin d'une cohérence forte, vous pouvez utiliser cette approche, mais sachez qu'elle est gourmande en ressources et que les performances peuvent en être affectées.
Pour utiliser MutateRows
afin de supprimer des données, vous devez envoyer une requête readRows
avec un filtre pour déterminer ce que vous souhaitez supprimer, puis envoyer la requête de suppression. Pour obtenir la liste des filtres disponibles, consultez Filtres.
Les exemples de cette section supposent que vous avez déjà déterminé les données à supprimer.
Supprimer des données d'une colonne
Les exemples de code suivants montrent comment supprimer toutes les cellules d'une colonne dans une ligne :
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python asyncio
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Supprimer des données d'une famille de colonnes
Les exemples de code suivants montrent comment supprimer des cellules d'une famille de colonnes dans une ligne :
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python asyncio
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Supprimer une ligne
Les extraits de code suivants montrent comment supprimer toutes les cellules d'une ligne :
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python asyncio
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Supprimer par flux et par lot
Le streaming et le traitement par lot de vos demandes de suppression sont souvent la meilleure façon de supprimer de grandes quantités de données. Cette stratégie peut être utile lorsque vos exigences en matière de conservation des données sont plus précises que celles autorisées par les règles de collecte des déchets.
Si votre application est écrite en Java, vous pouvez activer le contrôle du flux d'écriture par lot lorsque vous envoyez des suppressions par lot à Bigtable. Pour en savoir plus, consultez Contrôle du flux d'écriture par lot et Activer le contrôle du flux d'écriture par lot.
Les exemples de code suivants lancent un flux de données (lecture des lignes), les regroupent par lot, puis parcourent le lot et suppriment toutes les cellules de la colonne data_plan_01gb1
dans la famille de colonnes cell_plan
:
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python asyncio
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la section Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Supprimer des données dans une vue autorisée
Vous pouvez supprimer des données de table en envoyant une demande de suppression à une vue autorisée. Vous devez utiliser l'une des versions suivantes :
- CLI gcloud
- Client Bigtable pour Java
Lorsque vous supprimez des données d'une vue autorisée, vous devez fournir l'ID de la vue autorisée en plus de l'ID de la table.
Les données que vous pouvez supprimer d'une vue autorisée sont limitées par la définition de la vue autorisée. Vous ne pouvez supprimer que les données incluses dans la vue autorisée. Si vous essayez de supprimer des données qui ne font pas partie de la définition de la vue autorisée ou qui sont soumises aux règles suivantes, l'erreur PERMISSION_DENIED
s'affiche :
- La suppression d'une plage de lignes d'une vue autorisée à l'aide de
DropRowRange
dans l'API Admin n'est pas prise en charge. - Il n'est pas possible de supprimer des éléments d'une ligne.
- La suppression à partir d'une colonne est possible à condition qu'elle concerne des lignes de la vue autorisée.
- La suppression d'une famille de colonnes n'est autorisée que si la famille de colonnes spécifiée est configurée pour autoriser tous les préfixes de qualificatifs de colonne (
qualifier_prefixes=""
) dans la vue autorisée.
Par exemple, si vous essayez de supprimer des données d'une ligne spécifique et que cette ligne contient des colonnes de la table sous-jacente qui ne figurent pas dans votre vue autorisée, la requête échoue.