Suppressions
Ce document explique comment supprimer les données stockées dans des tables Bigtable, indique quand utiliser chaque approche et fournit des exemples. Avant de lire cette page, vous devez vous familiariser avec la Bigtable présentation et comprendre les concepts impliqués dans le schéma conception.
Par souci de cohérence, les descriptions sur cette page font référence aux méthodes d'API utilisée pour chaque type de requête. Toutefois, nous vous conseillons vivement de toujours utilisez l'un des clients Bigtable bibliothèques pour accéder aux API Bigtable plutôt que d'utiliser REST ou RPC.
Les exemples de cette page utilisent échantillons de données à celles que vous pouvez 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 la section Quotas et limites.
Comment Bigtable supprime-t-il les données ?
Lorsque vous envoyez une requête 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 compaction, un processus en arrière-plan qui optimise en continu la table. La suppression des métadonnées peut entraîner des problèmes un peu plus d'espace (plusieurs ko par ligne) pendant quelques jours après l'envoi d'un de suppression, jusqu'au compactage suivant.
Vous pouvez toujours envoyer une requête 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é de Google Cloud.
Une fois la suppression terminée et que vous avez reçu une réponse, vous pouvez écrire des données en toute sécurité dans la même plage de lignes.
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 undropRowRange
vers 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, envoyez le demande à nouveau. - 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 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 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 suppression de données à l'aide d'une méthode qui appelle l'API Cloud Bigtable (API Data) est souvent le meilleur choix. Utilisez ces méthodes si vous supprimez des Mo, et non des Go, de données dans une requête. L'utilisation de l'API Data est le seul moyen de supprimer des données d'une colonne (et non d'une colonne) famille).
Les méthodes de l'API Data appellent MutateRows
avec l'un des trois types de mutations suivants:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Une requête de suppression à l'aide de l'API Data est atomique : soit la requête 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 envisager d'utiliser cette approche. Toutefois, sachez qu'elle est gourmande en ressources et que les performances peuvent être affectées.
Pour utiliser MutateRows
pour supprimer des données, vous envoyez une requête readRows
avec un filtre pour déterminer ce que vous souhaitez supprimer, puis vous envoyez la requête de suppression. Pour obtenir la liste des filtres disponibles, consultez
Filtres :
Les exemples de cette section partent du principe que vous avez déjà déterminé quelles données supprimer.
Supprimer d'une colonne
Les exemples de code suivants montrent comment supprimer toutes les cellules d'une colonne à la suite:
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 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 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 d'une famille de colonnes
Les exemples de code suivants montrent comment supprimer des cellules d'une famille de colonnes à la suite:
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez 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 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 à partir d'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 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 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
La diffusion et le traitement par lot des requêtes de suppression constituent souvent le meilleur moyen de supprimer de grandes quantités de données. Cette stratégie peut s'avérer utile lorsque vous disposez les exigences de conservation des données par rapport aux stratégies de récupération de mémoire.
Les extraits de code suivants démarrent un flux de données (en lisant les lignes), les regroupent par lot, puis parcourent le lot et suppriment toutes les cellules de la colonne data_plan_01gb1
de la famille de colonnes cell_plan
:
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez 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 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 les données d'une table en envoyant une demande de suppression à un 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 fournissez 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 d'une 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 sont pas incluses dans la définition de la vue autorisée ou qui sont soumises aux règles suivantes, une erreur PERMISSION_DENIED
est renvoyée :
- 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 données d'une ligne.
- La suppression d'une colonne est possible tant que cela concerne les lignes situées dans vue autorisée.
- La suppression d'un élément d'une famille de colonnes n'est autorisée que si la famille de colonnes spécifiée
est configuré pour autoriser tous les préfixes des qualificatifs de colonne (
qualifier_prefixes=""
). dans la vue autorisée.
Par exemple, si vous essayez de supprimer une ligne spécifiée et que cette ligne contient des colonnes dans la table sous-jacente qui ne figurent pas dans votre vue autorisée, la requête échoue.