Cette page explique comment créer, modifier et afficher des flux de modifications Spanner pour les bases de données en dialecte GoogleSQL et en dialecte PostgreSQL. Pour en savoir plus sur les flux de modifications, consultez la section À propos des flux de modifications.
Étant donné que les flux de modifications sont des objets de schéma, vous les créez et les gérez via les mêmes mises à jour de schéma basées sur le langage de définition de données (DDL) que pour tout autre type de travail de définition de base de données, comme la création de tables ou l'ajout d'index.
Spanner lance une opération de longue durée après l'envoi d'une instruction DDL modifiant le schéma, y compris celles utilisées pour créer, modifier ou supprimer des flux de modifications. Un flux de modifications nouveau ou modifié commence à surveiller les colonnes ou les tables spécifiées par sa nouvelle configuration à la fin de cette opération de longue durée.
Créer un flux de modifications
Pour créer un flux de modifications, vous devez indiquer son nom et les objets de schéma qu'il surveille: soit la base de données entière, soit une liste de tables et de colonnes spécifiques. Vous pouvez éventuellement configurer un flux de modifications avec l'une des options suivantes:
- Spécifiez la période de conservation des données pour remplacer la période de conservation par défaut d'un jour.
- Spécifiez le type de capture de valeur pour remplacer le type de capture de valeur par défaut
OLD_AND_NEW_VALUES
. - Appliquez un filtre de suppression basé sur le TTL pour filtrer les suppressions basées sur le TTL de vos flux de modifications.
- Appliquez un filtre de modifications de table pour exclure toutes les modifications de table
INSERT
,UPDATE
ouDELETE
. Activez une exclusion d'enregistrements au niveau des transactions pour exclure certaines transactions de vos flux de modifications.
La syntaxe DDL permettant de créer un flux de modifications à l'aide de GoogleSQL se présente comme suit:
CREATE CHANGE STREAM CHANGE_STREAM_NAME
[FOR column_or_table_watching_definition [, ... ] ]
[
OPTIONS (
retention_period = timespan,
value_capture_type = type,
exclude_ttl_deletes = boolean,
exclude_insert = boolean,
exclude_update = boolean,
exclude_delete = boolean,
allow_txn_exclusion = boolean
)
]
La syntaxe DDL pour créer un flux de modifications à l'aide de PostgreSQL se présente comme suit:
CREATE CHANGE STREAM CHANGE_STREAM_NAME
[FOR column_or_table_watching_definition [, ... ] ]
[
WITH (
retention_period = timespan,
value_capture_type = type,
exclude_ttl_deletes = boolean,
exclude_insert = boolean,
exclude_update = boolean,
exclude_delete = boolean,
allow_txn_exclusion = boolean
)
]
Un nouveau flux de modifications commence à surveiller les objets de schéma qui lui sont attribués dès que l'opération de longue durée qui l'a créé est terminée.
Les exemples suivants illustrent la création de flux de modifications avec différentes configurations.
Regarder une base de données entière
Pour créer un flux de modifications qui surveille chaque modification de données effectuée dans les tables d'une base de données, utilisez le mot clé ALL
:
CREATE CHANGE STREAM EverythingStream
FOR ALL;
La configuration ALL
inclut implicitement toutes les futures tables et colonnes de données de la base de données, dès qu'elles sont créées. Il n'inclut pas les vues, les tables de schéma d'informations ni d'autres objets, à l'exception des tables de données normales.
Regarder des tables spécifiques
Pour limiter la portée d'un flux de modifications à des tables spécifiques plutôt qu'à une base de données entière, spécifiez une liste d'une ou de plusieurs tables:
CREATE CHANGE STREAM SingerAlbumStream
FOR Singers, Albums;
Spanner met automatiquement à jour les flux de modifications qui surveillent des tables entières pour refléter les modifications de schéma affectant ces tables, telles que les colonnes ajoutées ou supprimées.
Afficher des colonnes spécifiques
Utilisez la syntaxe table(column_1[, column_2,
...])
pour surveiller les modifications apportées à une ou plusieurs colonnes non clés spécifiques dans les tables que vous nommez:
CREATE CHANGE STREAM NamesAndTitles
FOR Singers(FirstName, LastName), Albums(Title);
Vous ne pouvez pas spécifier de colonnes de clé primaire ici, car chaque flux de modifications suit toujours les clés primaires de chaque table qu'il surveille. Cela permet à chaque enregistrement de modification de données d'identifier la ligne modifiée par sa clé primaire.
Afficher des tableaux et des colonnes dans un seul flux
Vous pouvez combiner la syntaxe de surveillance des tables et des colonnes des deux exemples précédents dans un seul flux de modifications:
CREATE CHANGE STREAM NamesAndAlbums
FOR Singers(FirstName, LastName), Albums;
Spécifier une durée de conservation plus longue
Pour spécifier une durée de conservation des données du flux de modifications supérieure à la durée par défaut d'une journée, définissez retention_period
sur une période maximale d'une semaine, exprimée en heures (h
) ou en jours (d
).
Voici deux exemples:
CREATE CHANGE STREAM LongerDataRetention
FOR ALL
OPTIONS ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
OPTIONS ( retention_period = '7d' );
CREATE CHANGE STREAM LongerDataRetention
FOR ALL
WITH ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
WITH ( retention_period = '7d' );
Spécifier un autre type de capture de valeur
Pour spécifier un type de capture de valeur de flux de modifications autre que OLD_AND_NEW_VALUES
, définissez value_capture_type
sur NEW_VALUES
ou NEW_ROW
, comme indiqué dans les exemples suivants:
CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_VALUES' );
CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_VALUES' );
Filtrer les suppressions basées sur la valeur TTL
Vous pouvez filtrer les suppressions basées sur le TTL de la portée de votre flux de modifications à l'aide du filtre exclude_ttl_deletes
.
Pour en savoir plus sur le fonctionnement de ce filtre, consultez la section Filtre de suppression basé sur le délai avant expiration.
Pour créer un flux de modifications avec le filtre de suppression basé sur le TTL, exécutez l'exemple suivant:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (exclude_ttl_deletes = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre nouveau flux de modifications
L'exemple suivant crée un flux de modifications appelé NewFilterChangeStream
qui exclut toutes les suppressions basées sur le TTL:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_ttl_deletes = true)
Pour créer un flux de modifications avec le filtre de suppression basé sur le TTL, exécutez l'exemple suivant:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (exclude_ttl_deletes = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre nouveau flux de modifications
L'exemple suivant crée un flux de modifications appelé NewFilterChangeStream
qui exclut toutes les suppressions basées sur le TTL:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_ttl_deletes = true)
Pour ajouter ou supprimer le filtre de suppression basé sur le TTL d'un flux de modifications existant, consultez Modifier le filtre de suppression basé sur le TTL. Vous pouvez confirmer vos filtres de flux de modifications en affichant les définitions du flux de modifications sous forme de LDD.
Filtrer par type de modification de tableau
Filtrez une ou plusieurs de ces modifications de table de la portée de votre flux de modifications à l'aide des options de filtrage disponibles suivantes:
exclude_insert
: excluez toutes les modifications de la tableINSERT
.exclude_update
: excluez toutes les modifications de la tableUPDATE
.exclude_delete
: excluez toutes les modifications de la tableDELETE
.
Pour en savoir plus sur le fonctionnement de ces filtres, consultez la section Filtres de type de modification de table.
Pour créer un flux de modifications avec un ou plusieurs filtres de type de modification de table, exécutez ce qui suit:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (MOD_TYPE_FILTER_NAME = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre nouveau flux de modifications
- MOD_TYPE_FILTER_NAME: filtre que vous souhaitez ajouter:
exclude_insert
,exclude_update
ouexclude_delete
. Si vous ajoutez plusieurs filtres à la fois, séparez-les par une virgule.
L'exemple suivant crée un flux de modifications appelé NewFilterChangeStream
qui exclut les types de modifications de table INSERT
et UPDATE
:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_insert = true, exclude_update = true)
Pour créer un flux de modifications avec un ou plusieurs filtres de type de modification de table, exécutez ce qui suit:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (MOD_TYPE_FILTER_NAME = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre nouveau flux de modifications
- MOD_TYPE_FILTER_NAME: filtre que vous souhaitez ajouter:
exclude_insert
,exclude_update
ouexclude_delete
. Si vous ajoutez plusieurs filtres à la fois, séparez-les par une virgule.
L'exemple suivant crée un flux de modifications appelé NewFilterChangeStream
qui exclut les types de modification de table INSERT
et UPDATE
:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_insert = true, exclude_update = true)
Pour ajouter ou supprimer un filtre de type de modification de table à un flux de modifications existant, consultez la section Modifier le filtre par type de modification de table. Vous pouvez vérifier les filtres de type de modification de table qui existent pour votre flux de modifications en affichant les définitions du flux de modifications en tant que LDD.
Activer l'exclusion des enregistrements au niveau de la transaction
Vous pouvez activer vos flux de modifications pour exclure des enregistrements des transactions d'écriture spécifiées en définissant l'option allow_txn_exclusion
lorsque vous créez un flux de modifications ou en modifiant un flux de modifications existant.
Pour en savoir plus sur le fonctionnement de cette option, consultez la section Exclusion d'enregistrements au niveau des transactions.
Pour créer un flux de modifications pouvant exclure des enregistrements des transactions d'écriture spécifiées, exécutez la commande suivante:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (allow_txn_exclusion = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom du nouveau flux de modifications
L'exemple suivant crée un flux de modifications nommé NewChangeStream
pouvant exclure des enregistrements des transactions d'écriture spécifiées:
CREATE CHANGE STREAM NewChangeStream FOR ALL
OPTIONS (allow_txn_exclusion = true)
Pour créer un flux de modifications pouvant exclure des enregistrements des transactions d'écriture spécifiées, exécutez la commande suivante:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (allow_txn_exclusion = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom du nouveau flux de modifications
L'exemple suivant crée un flux de modifications nommé NewChangeStream
pouvant exclure des enregistrements des transactions d'écriture spécifiées :
CREATE CHANGE STREAM NewChangeStream FOR ALL
WITH (allow_txn_exclusion = true)
Pour activer ou désactiver l'exclusion des enregistrements au niveau de la transaction à partir d'un flux de modifications existant, consultez Modifier l'exclusion des enregistrements au niveau de la transaction. Pour vérifier le paramètre de cette option, consultez la section Afficher les définitions des flux de modifications sous forme de DDL.
Spécifier une transaction d'écriture à exclure des flux de modifications
Pour spécifier une transaction d'écriture à exclure des flux de modifications, vous devez définir le paramètre exclude_txn_from_change_streams
sur true
. Les exemples de code suivants montrent comment spécifier une transaction d'écriture à exclure des flux de modifications à l'aide de la bibliothèque cliente.
Modifier un flux de modifications
Pour modifier la configuration d'un flux de modifications, utilisez une instruction DDL ALTER CHANGE STREAM
. Il utilise une syntaxe semblable à celle de CREATE CHANGE STREAM
. Vous pouvez modifier les colonnes qu'un flux surveille ou la durée de sa période de conservation des données. Vous pouvez également suspendre complètement la surveillance tout en conservant les enregistrements de modification des données.
Modifier ce qu'un flux de modifications surveille
Cet exemple ajoute l'ensemble du tableau Songs
au flux de modifications NamesAndAlbums
configuré précédemment:
ALTER CHANGE STREAM NamesAndAlbums
SET FOR Singers(FirstName, LastName), Albums, Songs;
Spanner remplace le comportement du flux de modifications nommé par la nouvelle configuration à la fin de l'opération de longue durée qui met à jour la définition du flux de modifications dans le schéma de la base de données.
Modifier la durée de conservation des données d'un flux de modifications
Pour modifier la durée pendant laquelle un flux de modifications conserve ses enregistrements internes, définissez retention_period
dans une instruction LDD ALTER CHANGE STREAM
.
Cet exemple ajuste la durée de conservation des données au flux de modifications NamesAndAlbums
créé précédemment:
ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( retention_period = '36h' );
ALTER CHANGE STREAM NamesAndAlbums
SET ( retention_period = '36h' );
Modifier le type de capture de valeur d'un flux de modifications
Pour modifier le type de capture de valeur d'un flux de modifications, définissez la clause value_capture_type
dans une instruction LDD ALTER CHANGE STREAM
.
Cet exemple ajuste le type de capture de valeur sur NEW_VALUES
.
ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( value_capture_type = 'NEW_VALUES' );
ALTER CHANGE STREAM NamesAndAlbums
SET ( value_capture_type = 'NEW_VALUES' );
Modifier le filtre de suppression basé sur le TTL
Pour modifier le filtre Suppressions basées sur le TTL d'un flux de modifications, définissez le filtre exclude_ttl_deletes
dans une instruction DDL ALTER CHANGE STREAM
. Vous pouvez l'utiliser pour ajouter ou supprimer le filtre de vos flux de modifications existants.
Pour en savoir plus sur le fonctionnement de ces filtres, consultez la section Filtre de suppression basé sur la durée de vie.
Ajouter le filtre de suppression basé sur le TTL à un flux de modifications existant
Pour ajouter le filtre de suppression basé sur le TTL à un flux de modifications existant, exécutez la commande suivante pour définir le filtre sur true
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre flux de modifications existant
Dans l'exemple suivant, le filtre exclude_ttl_deletes
est ajouté à un flux de modifications existant appelé NewFilterChangeStream
qui exclut toutes les suppressions basées sur le TTL:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
Cela exclut toutes les suppressions futures basées sur le TTL du flux de modifications.
Pour ajouter le filtre de suppression basé sur le TTL à un flux de modifications existant, exécutez la commande suivante pour définir le filtre sur true
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre flux de modifications existant
Dans l'exemple suivant, le filtre exclude_ttl_deletes
est ajouté à un flux de modifications existant appelé NewFilterChangeStream
qui exclut toutes les suppressions basées sur le TTL:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = true)
Cela exclut toutes les suppressions futures basées sur le TTL du flux de modifications.
Supprimer le filtre de suppression basé sur le TTL d'un flux de modifications existant
Pour supprimer le filtre de suppression basé sur le TTL d'un flux de modifications existant, exécutez la commande suivante pour définir le filtre sur false
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre nouveau flux de modifications
Dans l'exemple suivant, le filtre exclude_ttl_deletes
est supprimé d'un flux de modifications existant appelé NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
Cela inclut toutes les suppressions futures basées sur le TTL dans le flux de modifications.
Vous pouvez également définir le filtre sur null
pour supprimer le filtre de suppression basé sur le TTL.
Pour supprimer le filtre de suppression basé sur le TTL d'un flux de modifications existant, exécutez la commande suivante pour définir le filtre sur false
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = false)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre nouveau flux de modifications
Dans l'exemple suivant, le filtre exclude_ttl_deletes
est supprimé d'un flux de modifications existant appelé NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = false)
Cela inclut toutes les suppressions futures basées sur le TTL dans le flux de modifications.
Vous pouvez également définir le filtre sur null
pour supprimer le filtre de suppression basé sur le TTL.
Modifier le filtre par type de modification de tableau
Pour modifier les filtres de type de modification de table pour un flux de modifications, définissez le type de filtre dans une instruction DDL ALTER CHANGE STREAM
. Vous pouvez l'utiliser pour ajouter un filtre à votre flux de modifications ou en supprimer un.
Ajouter un filtre de type de modification de table à un flux de modifications existant
Pour ajouter un ou plusieurs filtres de type de modification de table à un flux de modifications existant, exécutez la commande suivante pour définir le filtre sur true
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: remplacez cette valeur par le nom de votre flux de modifications existant.
- MOD_TYPE_FILTER_NAME: remplacez par le filtre que vous souhaitez ajouter:
exclude_insert
,exclude_update
ouexclude_delete
. Si vous ajoutez plusieurs filtres à la fois, séparez-les par une virgule.
Dans l'exemple suivant, le filtre exclude_delete
est ajouté à un flux de modifications existant appelé NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = true)
Pour ajouter un ou plusieurs filtres de type de modification de table à un flux de modifications existant, exécutez la commande suivante pour définir le filtre sur true
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: remplacez cette valeur par le nom de votre flux de modifications existant.
- MOD_TYPE_FILTER_NAME: remplacez par le filtre que vous souhaitez ajouter:
exclude_insert
,exclude_update
ouexclude_delete
. Si vous ajoutez plusieurs filtres à la fois, séparez-les par une virgule.
Dans l'exemple suivant, le filtre exclude_delete
est ajouté à un flux de modifications existant appelé NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = true)
Supprimer un filtre de type de modification de table d'un flux de modifications existant
Pour supprimer un ou plusieurs filtres de type de modification de table existants dans le flux de modifications, exécutez la commande suivante pour définir le filtre sur false
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = false)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: remplacez cette valeur par le nom de votre flux de modifications existant.
- MOD_TYPE_FILTER_NAME: remplacez par le filtre que vous souhaitez supprimer:
exclude_insert
,exclude_update
ouexclude_delete
. Si vous supprimez plusieurs filtres à la fois, séparez-les par une virgule.
Dans l'exemple suivant, le filtre exclude_delete
est supprimé d'un flux de modifications existant appelé NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = false)
Vous pouvez également supprimer un filtre de modification de table en rétablissant sa valeur par défaut. Pour ce faire, définissez la valeur du filtre sur null
.
Pour supprimer un ou plusieurs filtres de type de modification de table existants dans le flux de modifications, exécutez la commande suivante pour définir le filtre sur false
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = false)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: remplacez cette valeur par le nom de votre flux de modifications existant.
- MOD_TYPE_FILTER_NAME: remplacez par le filtre que vous souhaitez supprimer:
exclude_insert
,exclude_update
ouexclude_delete
. Si vous supprimez plusieurs filtres à la fois, séparez-les par une virgule.
Dans l'exemple suivant, le filtre exclude_delete
est supprimé d'un flux de modifications existant appelé NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = false)
Vous pouvez également supprimer un filtre de modification de tableau en rétablissant sa valeur par défaut. Pour ce faire, définissez la valeur du filtre sur null
.
Modifier le flux de modifications pour autoriser l'exclusion des enregistrements au niveau de la transaction
Vous pouvez modifier votre flux de modifications pour lui permettre d'exclure les enregistrements des transactions d'écriture spécifiées. Pour ce faire, définissez l'option allow_txn_exclusion
sur true
dans une instruction DDL ALTER CHANGE STREAM
. Si vous ne définissez pas cette option ou si vous la définissez sur false
, le flux de modifications surveille toutes les transactions d'écriture.
Pour en savoir plus sur le fonctionnement de cette option, consultez la section Exclusion d'enregistrements au niveau des transactions.
Activer l'exclusion des enregistrements au niveau de la transaction pour un flux de modifications existant
Pour activer l'exclusion d'enregistrements au niveau des transactions pour un flux de modifications existant, exécutez la commande suivante:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (allow_txn_exclusion = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre flux de modifications existant
Dans l'exemple suivant, l'option allow_txn_exclusion
est activée sur un flux de modifications existant, NewAllowedChangeStream
:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = true)
Cela permet au flux de modifications d'exclure les enregistrements des transactions d'écriture spécifiées.
Pour activer l'exclusion des enregistrements au niveau des transactions pour un flux de modifications existant, exécutez la commande suivante:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (allow_txn_exclusion = true)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre flux de modifications existant
Dans l'exemple suivant, l'option allow_txn_exclusion
est activée sur un flux de modifications existant, NewAllowedChangeStream
:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = true)
Cela permet au flux de modifications d'exclure les enregistrements des transactions d'écriture spécifiées.
Désactiver l'exclusion des enregistrements au niveau de la transaction pour un flux de modifications existant
Pour désactiver l'exclusion des enregistrements au niveau de la transaction sur un flux de modifications existant, exécutez la commande suivante:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (allow_txn_exclusion = false)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre flux de modifications
Dans l'exemple suivant, l'option allow_txn_exclusion
est désactivée sur un flux de modifications existant appelé NewAllowedChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = false)
Le flux de modifications surveille toutes les transactions d'écriture.
Pour désactiver l'exclusion des enregistrements au niveau de la transaction sur un flux de modifications existant, exécutez la commande suivante:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (allow_txn_exclusion = false)
Remplacez les éléments suivants :
- CHANGE_STREAM_NAME: nom de votre flux de modifications
Dans l'exemple suivant, l'option allow_txn_exclusion
est désactivée sur un flux de modifications existant appelé NewAllowedChangeStream
:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = false)
Le flux de modifications surveille toutes les transactions d'écriture.
Suspendre un flux de modifications
Si vous souhaitez qu'un flux de modifications arrête son activité, mais conserve ses enregistrements internes (au moins pendant la durée de sa période de conservation des données), vous pouvez le modifier pour qu'il ne surveille rien.
Pour ce faire, émettez une instruction DDL ALTER CHANGE STREAM
qui remplace la définition du flux de modifications par l'expression spéciale DROP FOR ALL
.
Exemple :
ALTER CHANGE STREAM MyStream DROP FOR ALL;
Le flux continue d'exister dans la base de données, mais ne surveille aucun objet et ne génère aucun autre enregistrement de modification de données. Ses enregistrements de modifications existants restent intacts, sous réserve des règles de conservation des données du flux.
Pour reprendre un flux suspendu, émettez une autre instruction ALTER CHANGE STREAM
avec sa configuration précédente.
Supprimer un flux de modifications
Pour supprimer définitivement un flux de modifications, émettez une instruction DROP CHANGE STREAM
incluant le nom du flux:
DROP CHANGE STREAM NamesAndAlbums;
Spanner arrête immédiatement le flux, le supprime du schéma de la base de données et supprime ses enregistrements de modification des données.
Lister et afficher les flux de modifications
La console Google Cloud fournit une interface Web permettant de lister et d'examiner les définitions de flux de modifications d'une base de données. Vous pouvez également afficher la structure des flux de modifications sous la forme d'instructions LDD équivalentes ou en interrogeant le schéma d'informations de la base de données.
Afficher les flux de modifications avec la console Google Cloud
Pour afficher la liste des flux de modifications d'une base de données et consulter leurs définitions:
Accédez à la page "Instances Spanner" de la console Google Cloud.
Accédez à l'instance et à la base de données appropriées.
Cliquez sur Flux de modifications dans le menu de navigation.
Une liste de tous les flux de modifications de cette base de données s'affiche, et la configuration de chacun d'eux est résumée. Cliquez sur le nom d'un flux pour afficher plus de détails sur les tables et les colonnes qu'il surveille.
Afficher les définitions des flux de modifications au format DDL
L'affichage du schéma d'une base de données sous forme de DDL inclut des descriptions de tous ses flux de modifications, où ils apparaissent sous forme d'instructions CREATE CHANGE STREAM
.
Pour ce faire depuis la console, cliquez sur le lien Afficher la syntaxe DDL équivalente sur la page de la base de données dans la console Google Cloud.
Pour ce faire à partir de la ligne de commande, utilisez la commande
ddl describe
de la Google Cloud CLI.
Interroger le schéma d'informations sur les flux de modifications
Vous pouvez interroger directement le schéma d'informations d'une base de données sur ses flux de modifications. Les tableaux suivants contiennent les métadonnées qui définissent les noms des flux de modifications, les tables et les colonnes qu'ils surveillent, ainsi que leurs périodes de conservation:
Bonnes pratiques concernant les flux de modifications
Voici quelques bonnes pratiques pour configurer et gérer les flux de modifications.
Envisager une base de données de métadonnées distincte
Les flux de modifications utilisent une base de données de métadonnées pour gérer l'état interne. La base de données de métadonnées peut être identique ou différente de la base de données contenant les flux de modifications. Nous vous recommandons de créer une base de données distincte pour le stockage des métadonnées.
Le connecteur de flux de modifications Spanner a besoin d'autorisations en lecture-écriture pour la base de données de métadonnées. Vous n'avez pas besoin de préparer cette base de données avec un schéma. Le connecteur s'en occupe.
L'utilisation d'une base de données de métadonnées distincte élimine les complexités qui pourraient découler de l'autorisation du connecteur à écrire directement dans la base de données de votre application:
En séparant la base de données de métadonnées de la base de données de production avec le flux de modifications, le connecteur n'a besoin que d'autorisations de lecture pour la base de données de production.
En limitant le trafic du connecteur à une base de données de métadonnées distincte, les écritures effectuées par le connecteur lui-même ne sont pas incluses dans les flux de modifications de production. Cela est particulièrement pertinent pour les flux de modifications qui surveillent l'ensemble de la base de données.
Si aucune base de données distincte n'est utilisée pour stocker les métadonnées, nous vous recommandons de surveiller l'impact du processeur du connecteur de flux de modifications sur ses instances.
Évaluer les nouveaux flux de modifications et les redimensionner si nécessaire
Avant d'ajouter des flux de modifications à votre instance de production, envisagez de comparer une charge de travail réaliste sur une instance de préproduction avec les flux de modifications activés. Cela vous permet de déterminer si vous devez ajouter des nœuds à votre instance afin d'augmenter ses capacités de calcul et de stockage.
Exécutez ces tests jusqu'à ce que les métriques de processeur et de stockage se stabilisent. Dans l'idéal, l'utilisation du processeur de l'instance doit rester inférieure aux valeurs maximales recommandées, et son utilisation du stockage ne doit pas dépasser la limite de stockage de l'instance.
Utiliser différentes régions pour l'équilibrage de charge
Lorsque vous utilisez des flux de modifications dans une configuration d'instance multirégionale, envisagez d'exécuter leurs pipelines de traitement dans une région différente de la région principale par défaut. Cela permet de répartir la charge de streaming entre les réplicas non leaders. Toutefois, si vous devez donner la priorité au délai de streaming le plus faible possible par rapport à l'équilibrage de charge, exécutez la charge de streaming dans la région leader.
Étape suivante
Utilisez des modèles pour connecter rapidement un flux de modifications à BigQuery, Cloud Storage ou Pub/Sub.