Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Cette section contient des informations sur les éléments suivants :
Comportement de Datastream concernant les données extraites d'une base de données PostgreSQL source
Versions de la base de données PostgreSQL compatibles avec Datastream
Présentation de la configuration d'une base de données PostgreSQL source afin que les données puissent être diffusées en streaming vers une destination
Limites connues de l'utilisation de la base de données PostgreSQL en tant que source
Comportement
La base de données PostgreSQL source s'appuie sur sa fonctionnalité de décodage logique. Le décodage logique expose toutes les modifications validées dans la base de données et permet de les consommer et de les traiter dans un format convivial à l'aide d'un plug-in de sortie. Datastream utilise le plug-in pgoutput, qui est le plug-in de décodage logique PostgreSQL standard pour PostgreSQL 10 et versions ultérieures.
Vous pouvez sélectionner tous les schémas ou des schémas spécifiques d'une source PostgreSQL donnée, ainsi que toutes les tables des schémas ou des tables spécifiques.
Toutes les données historiques sont répliquées.
Toutes les modifications du langage de manipulation de données (LMD), telles que les insertions, les mises à jour et les suppressions des bases de données et des tables spécifiées, sont répliquées.
Seules les modifications validées sont répliquées.
Si vous définissez une IDENTITÉ REPLICA sur une table, Datastream traite les colonnes spécifiées comme clés primaires.
Versions
Datastream est compatible avec PostgreSQL version 10 et ultérieures.
Datastream est compatible avec les types de base de données PostgreSQL suivants:
PostgreSQL auto-hébergé
Cloud SQL pour PostgreSQL
AlloyDB pour PostgreSQL
AlloyDB Omni
Amazon RDS pour PostgreSQL
Amazon Aurora PostgreSQL
Limitations connues
Les limites connues d'utilisation de Datastream avec une base de données PostgreSQL en tant que source incluent les suivantes:
Les flux sont limités à 10 000 tables.
Une table contenant plus de 500 millions de lignes ne peut pas être remplie, sauf si les conditions suivantes sont remplies :
Aucune des colonnes de l'index ne peut être laissée vide.
Toutes les colonnes de l'index sont triées par ordre croissant ou décroissant.
Toutes les colonnes de l'index sont incluses dans le flux.
Les tables sans clé primaire doivent comporter une IDENTITÉ DU REPLIQUE. Sinon, seuls les événements INSERT sont répliqués sur la destination.
Pour les tables avec des clés primaires, la valeur REPLICA IDENTITY ne peut pas être définie sur FULL ou NOTHING. Il doit être défini sur DEFAULT.
Datastream ne peut pas se répliquer à partir d'une instance de réplication avec accès en lecture, car PostgreSQL n'est pas compatible avec le décodage logique dans les instances répliquées avec accès en lecture.
Certaines modifications apportées au schéma source ne peuvent pas être détectées automatiquement, ce qui peut provoquer une corruption des données. Les modifications de schéma suivantes peuvent entraîner une corruption des données ou l'échec du traitement des événements en aval :
Supprimer des colonnes
Ajout de colonnes au milieu d'une table
Modifier le type de données d'une colonne.
Réorganiser les colonnes
Suppression de tables (pertinente si la même table est ensuite recréée avec de nouvelles données ajoutées).
Datastream n'est pas compatible avec les colonnes des types de données geometric.
Datastream n'est pas compatible avec les colonnes des types de données range.
Datastream n'est pas compatible avec les tableaux de types de données non acceptés, les tableaux de types de données définis par l'utilisateur (y compris ENUM) ni les tableaux de types de données DATE, TIMESTAMP ou TIMESTAMP WITH TIME ZONE. Ces colonnes sont ignorées.
Datastream ne permet pas de répliquer les événements UPDATE pour les lignes qui incluent des valeurs TOAST dans les colonnes qui font partie de l'identité du réplica de la table. Ces événements sont supprimés.
Datastream ne permet pas de répliquer des lignes qui incluent des valeurs JSON ou JSONB avec plus de 2 950 objets imbriqués. Les événements contenant de telles valeurs JSON ou JSONB ne sont pas répliqués dans la base de données de destination.
Datastream ne permet pas de répliquer les lignes qui incluent des valeurs NaN dans les colonnes NUMERIC (precision, scale). Les valeurs de ces colonnes sont remplacées par des valeurs NULL.
Datastream n'est pas compatible avec la réplication des colonnes du type de données hstore. Les valeurs de ces colonnes sont remplacées par des valeurs NULL.
Datastream ne permet pas de répliquer les enregistrements non ASCII à partir d'une base de données source encodée en SQL_ASCII. Ces enregistrements sont supprimés.
Datastream ne permet pas de répliquer des tables avec des règles de sécurité au niveau des lignes définies.
Pour savoir comment contourner cette limitation, consultez la section Comportement et limites des sources PostgreSQL.
Datastream ne capture pas les modifications apportées aux colonnes générées.
Datastream peut cesser de fonctionner ou ne pas capturer de nouveaux événements lors d'une mise à niveau de la version majeure de PostgreSQL sur la base de données. Nous vous suggérons de supprimer les emplacements de réplication avant la mise à niveau, puis de mettre à niveau la base de données, puis de recréer les emplacements de réplication. Si les flux échouent, récupérez-les en spécifiant le nouveau nom de l'emplacement de réplication, puis effectuez un remplissage en arrière si la cohérence des données est requise.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eDatastream uses PostgreSQL's logical decoding feature and the \u003ccode\u003epgoutput\u003c/code\u003e plugin to replicate committed data changes, including historical data and DML operations like inserts, updates, and deletes, from the source database.\u003c/p\u003e\n"],["\u003cp\u003eDatastream supports PostgreSQL version 10 and later, along with various PostgreSQL database types such as self-hosted, Cloud SQL, AlloyDB, Amazon RDS, and Amazon Aurora.\u003c/p\u003e\n"],["\u003cp\u003eThere is a limitation of 10,000 tables per stream, and tables with over 500 million rows have specific backfill requirements, such as having a unique B-tree index with non-nullable columns.\u003c/p\u003e\n"],["\u003cp\u003eTables without primary keys must have a \u003ccode\u003eREPLICA IDENTITY\u003c/code\u003e defined; otherwise, only \u003ccode\u003eINSERT\u003c/code\u003e events are replicated, and Datastream cannot replicate from a read replica instance.\u003c/p\u003e\n"],["\u003cp\u003eSpecific schema changes like dropping columns or changing data types, as well as unsupported data types like geometric or range data types, can cause data corruption or failure, and certain data like \u003ccode\u003eJSON\u003c/code\u003e or \u003ccode\u003eJSONB\u003c/code\u003e values with excessive nesting also have replication limitations.\u003c/p\u003e\n"]]],[],null,["# Source PostgreSQL database\n\nThis section contains information about:\n\n- The behavior of how Datastream handles data that's being pulled from a source PostgreSQL database\n- The versions of PostgreSQL database that Datastream supports\n- An overview of how to setup a source PostgreSQL database so that data can be streamed from it to a destination\n- Known limitations for using PostgreSQL database as a source\n\nBehavior\n--------\n\nThe source PostgreSQL database relies upon its [logical decoding](https://www.postgresql.org/docs/current/logicaldecoding-explanation.html) feature. Logical decoding exposes all changes committed to the database and allows consuming and processing these changes in a user-friendly format using an output plugin. Datastream uses the `pgoutput` plugin, which is the standard PostgreSQL logical decoding plugin for PostgreSQL 10 and later.\n\n- All schemas or specific schemas from a given PostgreSQL source, as well as all tables from the schema or specific tables, can be selected.\n- All historical data is replicated.\n- All data manipulation language (DML) changes, such as inserts, updates, and deletes from the specified databases and tables, are replicated.\n- Only committed changes are replicated.\n- If you define a [REPLICA IDENTITY](https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-REPLICA-IDENTITY) on a table, Datastream treats the specified columns as primary keys.\n\nVersions\n--------\n\nDatastream supports PostgreSQL version 10 and later.\n\nDatastream supports the following types of PostgreSQL database:\n\n- Self-hosted PostgreSQL\n- Cloud SQL for PostgreSQL\n- AlloyDB for PostgreSQL\n- AlloyDB Omni\n- Amazon RDS for PostgreSQL\n- Amazon Aurora PostgreSQL\n\nKnown limitations\n-----------------\n\n| **Note:** This section describes limitations for using Datastream with a PostgreSQL database as a source. In addition to these limitations, you need to familiarize yourself with PostgreSQL logical replication limitations, because they also affect how Datastream streams data from a PostgreSQL source. To learn about limitations of PostgreSQL logical replication, see [logical replication restrictions](https://www.postgresql.org/docs/10/logical-replication-restrictions.html).\n\nKnown limitations for using Datastream with a PostgreSQL database as a source include:\n\n- Streams are limited to 10,000 tables.\n- A table that has more than 500 million rows can't be backfilled unless the following conditions are met:\n 1. The table has a unique B-tree index.\n 2. The index doesn't include columns of the following types: `DOUBLE`, `FLOAT`, `MONEY`, `REAL`, `JSON`, `JSONB`, `BYTEA`, `TXID`, `XML`, [composite data types](https://www.postgresql.org/docs/current/rowtypes.html#ROWTYPES) or [geometric data types](https://www.postgresql.org/docs/current/datatype-geometric.html).\n 3. None of the columns of the index are nullable.\n 4. All columns of the index are in ascending order, or all columns of the index are in descending order.\n 5. All columns of the index are included in the stream.\n- Tables without primary keys must have a [REPLICA IDENTITY](https://www.postgresql.org/docs/current/sql-altertable.html#SQL-CREATETABLE-REPLICA-IDENTITY). Otherwise, only `INSERT` events are replicated to the destination.\n- Tables with primary keys can't have the [REPLICA IDENTITY](https://www.postgresql.org/docs/current/sql-altertable.html#SQL-CREATETABLE-REPLICA-IDENTITY) set to `FULL` or `NOTHING`. It has to be set to `DEFAULT`.\n- Datastream can't replicate from a read replica instance, because PostgreSQL doesn't support logical decoding in read replicas.\n- Not all changes to the source schema can be detected automatically, in which case data corruption may occur. The following schema changes may cause data corruption or failure to process the events downstream:\n - Dropping columns.\n - Adding columns to the middle of a table.\n - Changing the data type of a column.\n - Reordering columns.\n - Dropping tables (relevant if the same table is then recreated with new data added).\n- Datastream doesn't support columns of the [`geometric`](https://www.postgresql.org/docs/current/datatype-geometric.html) data types.\n- Datastream doesn't support columns of the [`range`](https://www.postgresql.org/docs/current/rangetypes.html) data types.\n- Datastream doesn't support arrays of unsupported data types, arrays of [user-defined](https://www.postgresql.org/docs/15/xtypes.html) data types (including `ENUM`) or arrays of `DATE`, `TIMESTAMP` or `TIMESTAMP WITH TIME ZONE` data types. Such columns are ignored.\n- Datastream doesn't support replicating `UPDATE` events for rows which include [`TOAST`](https://www.postgresql.org/docs/current/storage-toast.html) values in columns that are part of the table's replica identity. Such events are discarded.\n- Datastream doesn't support replicating rows which include `JSON` or `JSONB` values with more than 2950 nested objects. Events containing such `JSON` or `JSONB` values aren't replicated to the destination database.\n- Datastream doesn't support replicating rows which include `NaN` values in `NUMERIC (precision, scale)` columns. The values in such columns are replaced with `NULL` values.\n- Datastream doesn't support replicating columns of the [hstore](https://www.postgresql.org/docs/current/hstore.html) data type. The values in such columns are replaced with `NULL` values.\n- Datastream doesn't support replicating non-ASCII records from a SQL_ASCII encoded source database. Such records are discarded.\n- Datastream doesn't support replicating tables with Row-Level Security (RLS) policies defined. For information about how to bypass this limitation, see [PostgreSQL source behavior and limitations](/datastream/docs/faq#postgresql-source).\n- Datastream doesn't capture changes made to [generated columns](https://www.postgresql.org/docs/current/ddl-generated-columns.html).\n- Datastream might stop working or not capture any new events when a PostgreSQL major version upgrade is performed on the database. We suggest you to drop the replication slots before the upgrade, then upgrade the database, and then recreate the replication slots. If the streams fail, recover the stream by specifying the new replication slot name, and perform a backfill if data consistency is required.\n\nWhat's next\n-----------\n\n- Learn how to [configure a PostgreSQL source](/datastream/docs/configure-your-source-postgresql-database) for use with Datastream."]]