Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Bagian ini berisi informasi tentang:
Perilaku cara Datastream menangani data yang diambil dari database PostgreSQL sumber
Versi database PostgreSQL yang didukung Datastream
Ringkasan cara menyiapkan database PostgreSQL sumber agar data dapat di-streaming dari database tersebut ke tujuan
Batasan yang diketahui untuk menggunakan database PostgreSQL sebagai sumber
Perilaku
Database PostgreSQL sumber mengandalkan fitur decoding logis. Decoding logis mengekspos semua perubahan yang di-commit ke database dan memungkinkan penggunaan serta pemrosesan perubahan ini dalam format yang mudah digunakan menggunakan plugin output. Datastream menggunakan plugin pgoutput, yang merupakan plugin decoding logis PostgreSQL standar untuk PostgreSQL 10 dan yang lebih baru.
Semua skema atau skema tertentu dari sumber PostgreSQL tertentu, serta semua tabel dari skema atau tabel tertentu, dapat dipilih.
Semua data historis direplikasi.
Semua perubahan bahasa manipulasi data (DML), seperti penyisipan, pembaruan, dan penghapusan dari database dan tabel yang ditentukan, direplikasi.
Hanya perubahan yang di-commit yang direplikasi.
Jika Anda menentukan REPLICA IDENTITY pada tabel, Datastream akan memperlakukan kolom yang ditentukan sebagai kunci utama.
Versi
Datastream mendukung PostgreSQL versi 10 dan yang lebih baru.
Datastream mendukung jenis database PostgreSQL berikut:
PostgreSQL yang dihosting sendiri
Cloud SQL untuk PostgreSQL
AlloyDB untuk PostgreSQL
AlloyDB Omni
Amazon RDS for PostgreSQL
Amazon Aurora PostgreSQL
Batasan umum
Batasan yang diketahui untuk menggunakan Datastream dengan database PostgreSQL sebagai sumber meliputi:
Aliran data dibatasi hingga 10.000 tabel.
Tabel yang memiliki lebih dari 500 juta baris tidak dapat diisi ulang kecuali jika kondisi berikut terpenuhi:
Tabel memiliki indeks B-tree yang unik.
Indeks tidak menyertakan kolom dari jenis berikut:
DOUBLE, FLOAT, MONEY, REAL, JSON, JSONB, BYTEA, TXID, XML,
jenis data komposit
atau jenis data geometris.
Tidak ada kolom indeks yang nullable.
Semua kolom indeks dalam urutan menaik, atau semua kolom indeks dalam urutan menurun.
Semua kolom indeks disertakan dalam aliran data.
Tabel tanpa kunci utama harus memiliki REPLICA IDENTITY. Jika tidak, hanya peristiwa INSERT yang direplikasi ke tujuan.
Tabel dengan kunci utama tidak boleh memiliki REPLICA IDENTITY yang ditetapkan ke FULL atau NOTHING. Nilai ini harus ditetapkan ke DEFAULT.
Datastream tidak dapat direplikasi dari instance replika baca, karena PostgreSQL tidak mendukung decoding logis dalam replika baca.
Tidak semua perubahan pada skema sumber dapat dideteksi secara otomatis. Jika demikian, kerusakan data dapat terjadi. Perubahan skema berikut dapat menyebabkan kerusakan data atau kegagalan untuk memproses peristiwa di downstream:
Menghapus kolom.
Menambahkan kolom ke tengah tabel.
Mengubah jenis data kolom.
Mengurutkan ulang kolom.
Menghapus tabel (relevan jika tabel yang sama kemudian dibuat ulang dengan data baru yang ditambahkan).
Datastream tidak mendukung kolom jenis data geometric.
Datastream tidak mendukung kolom jenis data range.
Datastream tidak mendukung array jenis data yang tidak didukung, array jenis data yang ditentukan pengguna (termasuk ENUM) atau array jenis data DATE, TIMESTAMP, atau TIMESTAMP WITH TIME ZONE. Kolom tersebut akan diabaikan.
Datastream tidak mendukung replikasi peristiwa UPDATE untuk baris yang menyertakan nilai TOAST di kolom yang merupakan bagian dari identitas replika tabel. Peristiwa tersebut akan dihapus.
Datastream tidak mendukung replikasi baris yang menyertakan nilai JSON atau JSONB dengan lebih dari 2.950 objek bertingkat. Peristiwa yang berisi nilai JSON atau JSONB tersebut tidak direplikasi ke database tujuan.
Datastream tidak mendukung replikasi baris yang menyertakan nilai NaN di kolom NUMERIC (precision, scale). Nilai dalam kolom tersebut diganti dengan nilai NULL.
Datastream tidak mendukung replikasi kolom jenis data hstore. Nilai dalam kolom tersebut diganti dengan nilai NULL.
Datastream tidak mendukung replikasi data non-ASCII dari database sumber yang dienkode SQL_ASCII. Data tersebut akan dihapus.
Datastream tidak mendukung replikasi tabel dengan kebijakan Keamanan Tingkat Baris (RLS) yang ditentukan.
Untuk informasi tentang cara mengabaikan batasan ini, lihat Perilaku dan batasan sumber PostgreSQL.
Datastream mungkin berhenti berfungsi atau tidak merekam peristiwa baru saat upgrade versi utama PostgreSQL dilakukan pada database. Sebaiknya hapus slot replikasi sebelum upgrade, lalu upgrade database, lalu buat ulang slot replikasi. Jika streaming gagal, pulihkan streaming dengan menentukan nama slot replikasi baru, dan lakukan pengisian ulang jika konsistensi data diperlukan.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-12 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."]]