Conservation des données avec la fonctionnalité temporelle et la prévention des défaillances

Ce document décrit les périodes de conservation des données des ensembles de données avec la fonctionnalité temporelle et la prévention des défaillances. Pendant les périodes de transit et de sécurité, les données que vous avez modifiées ou supprimées dans une table de l'ensemble de données continuent d'être stockées au cas où vous auriez besoin de les récupérer.

Fonctionnalité temporelle et conservation des données

Vous pouvez accéder aux données modifiées ou supprimées à partir de n'importe quel moment pendant la fenêtre de fonctionnalité temporelle, qui couvre les sept derniers jours par défaut. La fonctionnalité temporelle vous permet d'interroger des données mises à jour ou supprimées, de restaurer une table ou un ensemble de données supprimé ou de restaurer une table arrivée à expiration.

Vous pouvez définir la durée de la fenêtre de fonctionnalité temporelle comprise entre deux jours et sept jours au maximum. Une fenêtre de fonctionnalité temporelle plus longue est utile lorsqu'il est important de pouvoir récupérer les données mises à jour ou supprimées. Une fenêtre de fonctionnalité temporelle plus courte vous permet de réduire les coûts de stockage lorsque vous utilisez le modèle de facturation du stockage physique. Ces économies ne s'appliquent pas au modèle de facturation du stockage logique. Pour en savoir plus sur l'incidence du modèle de facturation du stockage sur les coûts, consultez la section Facturation.

Configurer la fenêtre de fonctionnalité temporelle

Vous définissez la fenêtre de fonctionnalité temporelle au niveau de l'ensemble de données ou du projet. Ces paramètres s'appliquent ensuite à tous les tableaux associés à l'ensemble de données ou au projet.

Définir la fenêtre de fonctionnalité temporelle au niveau du projet

Pour spécifier la fenêtre de fonctionnalité temporelle par défaut au niveau du projet, vous pouvez utiliser des instructions LDD (langage de définition de données). Pour savoir comment définir la période de trajet au niveau du projet, consultez Gérer les paramètres de configuration.

Définir la fenêtre de fonctionnalité temporelle au niveau de l'ensemble de données

Pour spécifier ou modifier la fenêtre de fonctionnalité temporelle d'un ensemble de données, vous pouvez utiliser la consoleTrusted Cloud , l'outil de ligne de commande bq ou l'API BigQuery.

Lorsque vous modifiez une fenêtre temporelle, si le code temporel spécifie une heure en dehors de la fenêtre temporelle ou avant la création de la table, la requête échoue et renvoie une erreur semblable à celle-ci :

Table ID was created at time which is
before its allowed time travel interval timestamp. Creation
time: timestamp

Fonctionnement des fonctionnalités temporelles

BigQuery utilise un format de stockage en colonnes. Cela signifie que les données sont organisées et stockées par colonne plutôt que par ligne. Lorsque vous avez un tableau comportant plusieurs colonnes, les valeurs de chaque colonne pour toutes les lignes sont stockées ensemble dans des blocs de stockage.

Lorsque vous modifiez une cellule dans une table BigQuery, vous modifiez une valeur spécifique dans une ligne et une colonne spécifiques. Étant donné que BigQuery stocke les colonnes ensemble, la modification d'une seule cellule d'une colonne nécessite généralement la lecture de l'intégralité du bloc de stockage contenant les données de cette colonne pour les lignes concernées, l'application de la modification, puis l'écriture d'une nouvelle version de ce bloc de stockage.

La fonctionnalité temporelle fonctionne en suivant les versions des blocs de stockage qui composent votre table. Lorsque vous mettez à jour des données, BigQuery ne se contente pas de modifier le bloc de stockage existant sur place. Au lieu de cela, il crée une nouvelle version des blocs de stockage concernés avec les données mises à jour. La version précédente est ensuite conservée pour les voyages temporels.

BigQuery utilise des tailles de fichiers et des blocs de stockage adaptatifs. La taille des blocs de stockage n'est pas fixe, mais peut varier en fonction de facteurs tels que la taille de la table et la distribution de ses données. Si vous modifiez une seule cellule d'un bloc de stockage, les données de la colonne correspondante sont modifiées, ce qui peut affecter de nombreuses lignes. Par conséquent, l'unité de données versionnée et envoyée à la fonctionnalité temporelle est souvent l'intégralité du bloc de stockage contenant les données modifiées de cette colonne, et non une seule cellule.

C'est pourquoi la modification d'une cellule peut entraîner l'envoi de plus de données à la fonctionnalité de voyage temporel que la taille de la modification.

Impact de la fenêtre de fonctionnalité temporelle sur la récupération des tables et des ensembles de données

Une table ou un ensemble de données supprimé utilise la durée de la fenêtre de fonctionnalité temporelle appliquée au moment de la suppression.

Par exemple, si vous disposez d'une durée de fenêtre de fonctionnalité temporelle de deux jours, puis que vous augmentez cette durée à sept jours, les tables supprimées avant cette modification ne peuvent toujours être récupérées que pendant deux jours. De même, si vous disposez d'une durée de fenêtre de fonctionnalité temporelle de cinq jours et que vous la réduisez à trois jours, toutes les tables supprimées avant la modification peuvent être récupérées pendant cinq jours.

Les fenêtres de fonctionnalité temporelle étant définies au niveau de l'ensemble de données, vous ne pouvez pas modifier la fenêtre temporelle d'un ensemble de données supprimé tant que la suppression n'est pas annulée.

Si vous réduisez la durée de la fenêtre de fonctionnalité temporelle, supprimez une table, puis réalisez que vous avez besoin de plus de récupération pour ces données, vous pouvez créer un instantané de la table à partir d'un moment antérieur à la suppression de la table. Vous devez le faire pendant que la table supprimée est toujours récupérable. Pour en savoir plus, consultez la page Créer un instantané de table à l'aide des fonctionnalités temporelles.

Déplacements temporels et accès au niveau des lignes

Si une table dispose ou a eu des règles d'accès au niveau des lignes, seul un administrateur de table peut accéder aux données historiques de la table.

L'autorisation IAM (Identity and Access Management) suivante est requise :

Autorisation Ressource
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions Table dont les données historiques sont accessibles

Le rôle BigQuery suivant fournit l'autorisation requise :

Rôle Ressource
roles/bigquery.admin Table dont les données historiques sont accessibles

L'autorisation bigquery.rowAccessPolicies.overrideTimeTravelRestrictions ne peut pas être ajoutée à un rôle personnalisé.

  • Exécutez la commande suivante pour obtenir l'epoch Unix équivalent :

    date -d '2023-08-04 16:00:34.456789Z' +%s000
  • Remplacez l'heure selon l'epoch UNIX 1691164834000 renvoyée par la commande précédente dans l'outil de ligne de commande bq. Exécutez la commande suivante pour restaurer une copie de la table supprimée deletedTableID dans une autre table restoredTable de l'ensemble de données myDatasetID :

    bq cp myProjectID:myDatasetID.deletedTableID@1691164834000 myProjectID:myDatasetID.restoredTable

Prévention des défaillances

BigQuery prévoit une période de sécurité. Pendant cette période, les données supprimées sont automatiquement conservées pendant sept jours supplémentaires après la fenêtre de fonctionnalité temporelle, afin que les données soient disponibles pour la récupération d'urgence. Les données peuvent être récupérées au niveau de la table. Les données d'une table sont récupérées à partir du moment représenté par le code temporel de la suppression de cette table. La période de sécurité n'est pas configurable.

Vous ne pouvez pas interroger ou récupérer directement des données dans un espace de stockage sécurisé. Pour récupérer des données à partir d'un espace de stockage sécurisé, contactez Cloud Customer Care.

Facturation

Si vous définissez votre modèle de facturation du stockage pour qu'il utilise des octets physiques, les octets utilisés pour le stockage temporel et de sécurité vous sont facturés séparément. Le stockage temporel et le stockage sécurisé sont facturés au tarif de stockage physique actif. Vous pouvez configurer la fenêtre de fonctionnalité temporelle pour équilibrer les coûts de stockage et vos besoins en termes de conservation des données.

Si vous choisissez d'utiliser des octets logiques dans votre modèle de facturation du stockage, les coûts de stockage totaux pour le stockage temporel et de sécurité sont inclus dans le tarif de base qui vous est facturé.

Le tableau suivant compare les coûts de stockage physique et logique :

Modèle de facturation Que payez-vous ?
Stockage physique (compressé)
  • Vous payez pour les octets actifs
  • Vous payez pour le stockage à long terme
  • Vous payez pour le stockage des fonctionnalités temporelles
  • Vous payez pour un stockage infaillible
Stockage logique (non compressé) (paramètre par défaut)
  • Vous payez pour le stockage actif
  • Vous payez pour le stockage à long terme
  • Vous ne payez pas le stockage de la fonctionnalité Time Travel
  • Vous ne payez pas pour le stockage sécurisé

Si vous utilisez le stockage physique, vous pouvez voir les octets utilisés par la fonctionnalité temporelle et la prévention des défaillances en consultant les colonnes TIME_TRAVEL_PHYSICAL_BYTES et FAIL_SAFE_PHYSICAL_BYTES dans les vues TABLE_STORAGE et TABLE_STORAGE_BY_ORGANIZATION. Pour obtenir un exemple d'utilisation de l'une de ces vues pour estimer vos coûts, consultez Prévoir la facturation du stockage.

Les coûts de stockage s'appliquent aux données avec la fonctionnalité temporelle et la prévention des défaillances, mais vous ne serez facturé que si les frais de stockage des données ne s'appliquent pas ailleurs dans BigQuery. Les informations suivantes s'appliquent :

  • Lorsqu'une table est créée, il n'y a aucun coût de stockage lié à la fonctionnalité temporelle ou à la prévention des défaillances.
  • Si des données sont modifiées ou supprimées, le stockage des données modifiées ou supprimées enregistrées par la fonctionnalité temporelle vous sera facturé pendant la période de fonctionnalité temporelle et la période de prévention des défaillances. Cela ressemble aux tarifs de stockage des instantanés et des clones de tables.

Exemple de conservation des données

Le tableau suivant montre comment les données supprimées ou modifiées sont transférées entre les périodes de conservation du stockage. Cet exemple montre une situation dans laquelle le stockage total actif est de 200 Gio, et 50 Gio sont supprimés avec une fenêtre de fonctionnalité temporelle de sept jours :

Jour 0 Jour 1 Jour 2 Jour 3 Jour 4 Jour 5 Jour 6 Jour 7 Jour 8 Jour 9 Jour 10 Jour 11 Jour 12 Jour 13 Jour 14 Jour 15
Stockage actif 200 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150
Stockage de la fonctionnalité temporelle 50 50 50 50 50 50 50
Stockage à sécurité intégrée 50 50 50 50 50 50 50

La suppression des données d'un espace de stockage physique à long terme fonctionne de la même manière.

Limites

La récupération de données avec la fonctionnalité de voyage temporel est soumise aux limitations suivantes :

Étapes suivantes