Konektor MongoDB mengintegrasikan ApsaraDB for MongoDB dan MongoDB yang dikelola sendiri ke Realtime Compute for Apache Flink sebagai tabel sumber, dimensi, dan sink. Konektor ini menggunakan Change Stream API untuk menangkap event insert, update, replace, dan delete secara real time.
Kemampuan
|
Category |
Description |
|
Jenis tabel |
Sumber SQL, lookup (dimensi), dan sink Sumber Flink CDC Sumber DataStream |
|
Mode berjalan |
Streaming |
|
Jenis API |
DataStream API, SQL, Flink CDC |
|
Semantik penulisan sink |
Insert, update, dan delete (dengan primary key yang dideklarasikan) |
Metrik pemantauan
Tabel sumber:
numBytesIn, numBytesInPerSecond, numRecordsIn, numRecordsInPerSecond, numRecordsInErrors, currentFetchEventTimeLag, currentEmitEventTimeLag, watermarkLag, sourceIdleTime
Tabel dimensi dan sink tidak mengekspos metrik pemantauan.
Untuk definisi metrik, lihat Metrics.
Cara kerja
Konektor MongoDB membaca data dalam dua fase:
-
Snapshot penuh — membaca semua dokumen yang ada dari koleksi target secara paralel.
-
Pembacaan inkremental — secara otomatis beralih ke mengonsumsi oplog melalui Change Stream API setelah snapshot selesai.
Proses ini menyediakan semantik tepat-sekali (exactly-once semantics), memastikan tidak ada catatan duplikat atau hilang selama pemulihan kesalahan.
Konsep utama
Startup modes
Pilih startup mode berdasarkan kapan pipeline Anda perlu mulai mengonsumsi data:
|
Mode |
Behavior |
Use when |
|
|
Membaca snapshot saat pertama kali dijalankan, lalu beralih ke pembacaan inkremental |
Anda memerlukan salinan lengkap data yang ada |
|
|
Dimulai dari posisi oplog saat ini; tidak ada data historis |
Anda hanya memerlukan perubahan mulai sekarang |
|
|
Membaca event oplog dari timestamp tertentu; melewati snapshot |
Anda memerlukan perubahan mulai dari titik waktu tertentu (memerlukan MongoDB 4.0+) |
Dukungan changelog lengkap
Secara default, MongoDB tidak menyimpan status dokumen sebelum perubahan (versi sebelum MongoDB 6.0). Tanpa informasi ini, konektor hanya dapat menghasilkan event UPSERT — catatan UPDATE_BEFORE tidak tersedia.
Sebagai solusi, planner Flink SQL menyisipkan operator ChangelogNormalize yang menyimpan status dokumen di state backend Flink. Meskipun berfungsi, pendekatan ini mengonsumsi penyimpanan state yang signifikan.

MongoDB 6.0+ mendukung pencatatan preimage dan postimage. Saat diaktifkan, MongoDB mencatat status dokumen lengkap sebelum dan sesudah setiap perubahan. Mengatur scan.full-changelog ke true memberi tahu konektor untuk menggunakan catatan ini guna menghasilkan aliran changelog lengkap — menghilangkan operator ChangelogNormalize dan overhead state-nya.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Instans ApsaraDB for MongoDB (replica set atau kluster sharded), atau kluster MongoDB 3.6+ yang dikelola sendiri dengan mode replica set diaktifkan. Lihat Replication.
-
Jika autentikasi diaktifkan, pengguna MongoDB dengan izin berikut:
splitVector,listDatabases,listCollections,collStats,find,changeStream, serta akses baca keconfig.collectionsdanconfig.chunks. -
Alamat IP kluster Flink ditambahkan ke daftar IP yang diizinkan MongoDB.
-
Database dan koleksi target telah dibuat sebelum menjalankan pekerjaan.
Batasan
Sumber SQL
-
Pembacaan snapshot paralel memerlukan MongoDB 4.0 atau versi lebih baru. Aktifkan dengan mengatur
scan.incremental.snapshot.enabledketrue. -
Database
admin,local, danconfigserta semua koleksi sistem tidak dapat dipantau. Ini merupakan batasan Change Stream MongoDB. Lihat Change Streams dalam dokumentasi MongoDB. -
Saat membuat tabel sumber SQL, deklarasikan kolom
_id STRINGdan tetapkan sebagai primary key.
Sink SQL
-
VVR 8.0.4 dan versi sebelumnya: hanya insert.
-
VVR 8.0.5 dan versi lebih baru dengan primary key yang dideklarasikan: insert, update, dan delete.
-
VVR 8.0.5 dan versi lebih baru tanpa primary key: hanya insert.
-
Pengiriman tepat-sekali (exactly-once delivery) tidak didukung. Opsi
sink.delivery-guaranteemenerima nilainoneatauat-least-once.
Lookup SQL (dimensi)
-
Didukung di VVR 8.0.5 dan versi lebih baru.
-
VVR 8.0.9 dan versi lebih baru: join lookup mendukung pembacaan field bawaan
_idbertipe ObjectId.
SQL
Sintaksis
CREATE TABLE tableName(
_id STRING,
[columnName dataType,]*
PRIMARY KEY(_id) NOT ENFORCED
) WITH (
'connector' = 'mongodb',
'hosts' = 'localhost:27017',
'username' = 'mongouser',
'password' = '${secret_values.password}',
'database' = 'testdb',
'collection' = 'testcoll'
)
Deklarasikan kolom _id STRING dan tentukan sebagai primary key saat membuat tabel sumber CDC.
Opsi konektor
Umum
|
Option |
Type |
Required |
Default |
Description |
|
|
String |
Yes |
— |
Identifier konektor. Tabel sumber: |
|
|
String |
No |
— |
URI koneksi MongoDB. Tentukan salah satu dari |
|
|
String |
No |
— |
Hostname server MongoDB. Pisahkan beberapa host dengan koma ( |
|
|
String |
No |
|
Protokol koneksi. Nilai valid: |
|
|
String |
No |
— |
Username MongoDB. Diperlukan saat autentikasi diaktifkan. |
|
|
String |
No |
— |
Password MongoDB. Diperlukan saat autentikasi diaktifkan. Gunakan variabel alih-alih hardcoding kredensial. |
|
|
String |
No |
— |
Nama database MongoDB. Mendukung ekspresi reguler untuk tabel sumber. Jika tidak diatur, semua database dipantau. Tidak dapat memantau database |
|
|
String |
No |
— |
Nama koleksi MongoDB. Mendukung ekspresi reguler untuk tabel sumber. Catatan:
|
|
|
String |
No |
— |
Opsi koneksi tambahan sebagai pasangan Secara default, konektor tidak mengatur timeout koneksi socket, yang dapat menyebabkan gangguan panjang selama fluktuasi jaringan. Atur |
Sumber
|
Option |
Type |
Required |
Default |
Description |
|
|
String |
No |
|
Startup mode. Nilai valid: |
|
|
Long |
Conditional |
— |
Timestamp awal dalam milidetik sejak epoch UNIX. Diperlukan saat |
|
|
Integer |
No |
|
Ukuran maksimum antrian selama fase snapshot awal. Hanya berlaku saat |
|
|
Integer |
No |
|
Ukuran batch kursor. |
|
|
Integer |
No |
|
Jumlah maksimum dokumen perubahan yang ditarik per batch selama pembacaan stream. Nilai yang lebih besar mengalokasikan buffer internal yang lebih besar. |
|
|
Integer |
No |
|
Interval antara permintaan tarik data, dalam milidetik. |
|
|
Integer |
No |
|
Interval heartbeat dalam milidetik. Konektor mengirim heartbeat untuk melacak posisi oplog terbaru. Mengatur nilai ini ke |
|
|
Boolean |
No |
|
Mengaktifkan pembacaan snapshot paralel. Fitur eksperimental. Memerlukan MongoDB 4.0 atau versi lebih baru. |
|
|
Integer |
No |
|
Ukuran chunk untuk pembacaan snapshot paralel, dalam MB. Fitur eksperimental. Hanya berlaku saat pembacaan snapshot paralel diaktifkan. |
|
|
Boolean |
No |
|
Menghasilkan aliran changelog lengkap menggunakan catatan preimage dan postimage MongoDB. Fitur eksperimental. Memerlukan MongoDB 6.0 atau versi lebih baru dengan fitur preimage dan postimage diaktifkan. |
|
|
Boolean |
No |
|
Mengurai field yang dipisahkan oleh |
|
|
Boolean |
No |
|
Mengurai semua tipe primitif BSON sebagai STRING. Didukung di VVR 8.0.5 dan versi lebih baru. |
|
|
Boolean |
No |
|
Mengabaikan semua event DELETE (-D), termasuk yang dihasilkan selama pengarsipan data MongoDB. Didukung di VVR 11.1 dan versi lebih baru. |
|
|
Boolean |
No |
|
Nilai valid:
Backfill hanya berlaku selama kueri snapshot satu chunk dan tidak mencakup seluruh fase pembacaan penuh. Saat backfill dilewati, kueri snapshot setiap chunk membaca data terbaru pada saat itu; pembaruan yang terjadi pada chunk setelah dibaca tidak digabung selama fase pembacaan penuh dan dibaca dari OpLog setelah memasuki fase inkremental. Misalnya, pembaruan pada chunk5 yang terjadi saat chunk5 sedang di-snapshot tercermin langsung dalam snapshot chunk5; jika chunk5 diperbarui setelah pembaca maju ke chunk80, pembaruan tersebut diterapkan kemudian dari OpLog selama fase inkremental. Penting
Saat diaktifkan, perubahan yang terjadi selama atau setelah pemindaian chunk tetap dikirimkan dari OpLog pada fase inkremental dan mungkin diduplikasi. Hanya semantik at-least-once yang dijamin. Aktifkan ini hanya jika sink downstream mendukung penulisan idempoten berdasarkan primary key. Catatan
Hanya didukung di VVR 11.1 dan versi lebih baru. |
|
|
String |
No |
— |
Operasi pipeline agregasi MongoDB yang diterapkan selama pembacaan snapshot untuk memfilter data. Tentukan sebagai array JSON, misalnya: |
|
|
Integer |
No |
— |
Jumlah thread untuk replikasi snapshot. Hanya berlaku saat |
|
|
Integer |
No |
|
Ukuran antrian untuk snapshot awal. Hanya berlaku saat |
|
|
Integer |
No |
|
Jumlah pembaca konkuren untuk Change Stream. Hanya berlaku saat |
|
|
Integer |
No |
|
Ukuran antrian pesan untuk langganan change stream konkuren. Hanya berlaku saat |
Lookup (dimensi)
|
Option |
Type |
Required |
Default |
Description |
|
|
String |
No |
|
Kebijakan cache. Nilai valid: |
|
|
Integer |
No |
|
Retries maksimum saat lookup gagal. |
|
|
Duration |
No |
|
Interval antar retries saat lookup gagal. |
|
|
Duration |
No |
— |
Waktu maksimum entri cache bertahan setelah akses terakhir. Unit yang didukung: |
|
|
Duration |
No |
— |
Waktu maksimum entri cache bertahan setelah ditulis. Memerlukan |
|
|
Long |
No |
— |
Jumlah maksimum baris dalam cache. Entri terlama dihapus saat batas tercapai. Memerlukan |
|
|
Boolean |
No |
|
Menyimpan entri null saat kunci lookup tidak memiliki catatan yang cocok. Memerlukan |
Sink
|
Option |
Type |
Required |
Default |
Description |
|
|
Integer |
No |
|
Jumlah maksimum catatan yang ditulis per batch. |
|
|
Duration |
No |
|
Interval flush. |
|
|
String |
No |
|
Semantik pengiriman tulis. Nilai valid: |
|
|
Integer |
No |
|
Retries maksimum saat penulisan gagal. |
|
|
Duration |
No |
|
Interval antar retries saat penulisan gagal. |
|
|
Integer |
No |
— |
Paralelisme sink kustom. |
|
|
String |
No |
|
Strategi untuk menangani event -D dan -U. Nilai valid: |
Pemetaan tipe data
Sumber
|
BSON type |
Flink SQL |
|
Int32 |
INT |
|
Int64 |
BIGINT |
|
Double |
DOUBLE |
|
Decimal128 |
DECIMAL(p, s) |
|
Boolean |
BOOLEAN |
|
Date Timestamp |
DATE |
|
Date Timestamp |
TIME |
|
DateTime |
TIMESTAMP(3), TIMESTAMP_LTZ(3) |
|
Timestamp |
TIMESTAMP(0), TIMESTAMP_LTZ(0) |
|
String, ObjectId, UUID, Symbol, MD5, JavaScript, Regex |
STRING |
|
Binary |
BYTES |
|
Object |
ROW |
|
Array |
ARRAY |
|
DBPointer |
ROW\<$ref STRING, $id STRING\> |
|
GeoJSON Point |
ROW\<type STRING, coordinates ARRAY\<DOUBLE\>\> |
|
GeoJSON Line |
ROW\<type STRING, coordinates ARRAY\<ARRAY\<DOUBLE\>\>\> |
Lookup (dimensi) dan sink
|
BSON type |
Flink SQL type |
|
Int32 |
INT |
|
Int64 |
BIGINT |
|
Double |
DOUBLE |
|
Decimal128 |
DECIMAL |
|
Boolean |
BOOLEAN |
|
DateTime |
TIMESTAMP_LTZ(3) |
|
Timestamp |
TIMESTAMP_LTZ(0) |
|
String, ObjectId |
STRING |
|
Binary |
BYTES |
|
Object |
ROW |
|
Array |
ARRAY |
Kolom metadata
Sumber SQL mendukung kolom metadata berikut:
|
Metadata column |
Type |
Description |
|
|
STRING NOT NULL |
Database yang berisi dokumen. |
|
|
STRING NOT NULL |
Koleksi yang berisi dokumen. |
|
|
TIMESTAMP_LTZ(3) NOT NULL |
Waktu saat dokumen berubah. Mengembalikan |
|
|
STRING NOT NULL |
Jenis event perubahan: |
Contoh
Sumber
Contoh berikut membaca dari tabel sumber MongoDB dengan pembacaan snapshot paralel dan changelog lengkap diaktifkan, lalu menulis field yang dipilih ke sink print.
-- Tabel sumber CDC: membaca data produk dari MongoDB
-- _id harus dideklarasikan dan ditetapkan sebagai primary key
CREATE TEMPORARY TABLE mongo_source (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>,
db_name STRING METADATA FROM 'database_name' VIRTUAL,
collection_name STRING METADATA VIRTUAL,
op_ts TIMESTAMP_LTZ(3) METADATA VIRTUAL,
PRIMARY KEY(_id) NOT ENFORCED
) WITH (
'connector' = 'mongodb',
'hosts' = 'dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,',
'username' = 'root',
'password' = '${secret_values.password}',
'database' = 'flinktest',
'collection' = 'flinkcollection',
'scan.incremental.snapshot.enabled' = 'true', -- Aktifkan pembacaan snapshot paralel (memerlukan MongoDB 4.0+)
'scan.full-changelog' = 'true' -- Aktifkan changelog lengkap (memerlukan MongoDB 6.0+ dengan preimage/postimage)
);
CREATE TEMPORARY TABLE productssink (
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price_amount DECIMAL,
suppliers_name STRING,
db_name STRING,
collection_name STRING,
op_ts TIMESTAMP_LTZ(3)
) WITH (
'connector' = 'print',
'logger' = 'true'
);
INSERT INTO productssink
SELECT
name,
weight,
tags,
price.amount,
suppliers[1].name,
db_name,
collection_name,
op_ts
FROM mongo_source;
Lookup (dimensi)
Contoh berikut melakukan join antara stream generator data dengan tabel dimensi MongoDB menggunakan temporal join.
CREATE TEMPORARY TABLE datagen_source (
id STRING,
a INT,
b BIGINT,
`proctime` AS PROCTIME()
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE mongo_dim (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>,
PRIMARY KEY(_id) NOT ENFORCED
) WITH (
'connector' = 'mongodb',
'hosts' = 'dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,',
'username' = 'root',
'password' = '${secret_values.password}',
'database' = 'flinktest',
'collection' = 'flinkcollection',
'lookup.cache' = 'PARTIAL', -- Cache hasil lookup untuk performa lebih baik
'lookup.partial-cache.expire-after-access' = '10min', -- Hapus entri cache setelah 10 menit tidak aktif
'lookup.partial-cache.expire-after-write' = '10min', -- Hapus entri cache 10 menit setelah ditulis
'lookup.partial-cache.max-rows' = '100' -- Maksimal 100 baris dalam cache
);
CREATE TEMPORARY TABLE print_sink (
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price_amount DECIMAL,
suppliers_name STRING
) WITH (
'connector' = 'print',
'logger' = 'true'
);
INSERT INTO print_sink
SELECT
T.id,
T.a,
T.b,
H.name
FROM datagen_source AS T
JOIN mongo_dim FOR SYSTEM_TIME AS OF T.`proctime` AS H ON T.id = H._id;
Sink
Contoh berikut menulis data dari generator data ke tabel sink MongoDB. Primary key dideklarasikan untuk mendukung operasi insert, update, dan delete.
CREATE TEMPORARY TABLE datagen_source (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE mongo_sink (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>,
PRIMARY KEY(_id) NOT ENFORCED -- Deklarasikan primary key untuk mengaktifkan update dan delete
) WITH (
'connector' = 'mongodb',
'hosts' = 'dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,',
'username' = 'root',
'password' = '${secret_values.password}',
'database' = 'flinktest',
'collection' = 'flinkcollection'
);
INSERT INTO mongo_sink SELECT * FROM datagen_source;
Flink CDC (pratinjau publik)
Flink CDC memungkinkan Anda menyinkronkan data MongoDB ke penyimpanan downstream menggunakan pipeline berbasis skrip YAML, tanpa menulis DDL SQL. Fitur ini memerlukan VVR 11.1 dan versi lebih baru.
Sintaksis
source:
type: mongodb
name: MongoDB Source
hosts: localhost:33076
username: ${mongo.username}
password: ${mongo.password}
database: foo_db
collection: foo_col_.*
sink:
type: ...
Opsi konfigurasi
|
Option |
Required |
Type |
Default |
Description |
|
|
Yes |
STRING |
— |
Konektor. Atur ke |
|
|
No |
STRING |
|
Protokol koneksi. Nilai valid: |
|
|
Yes |
STRING |
— |
Hostname server MongoDB. Pisahkan beberapa host dengan koma. |
|
|
No |
STRING |
— |
Username MongoDB. |
|
|
No |
STRING |
— |
Password MongoDB. |
|
|
Yes |
STRING |
— |
Nama database MongoDB yang akan ditangkap. Ekspresi reguler didukung. |
|
|
Yes |
STRING |
— |
Nama koleksi MongoDB yang akan ditangkap. Ekspresi reguler didukung. Gunakan namespace berkualifikasi penuh |
|
|
No |
STRING |
— |
Opsi koneksi tambahan sebagai pasangan |
|
|
No |
STRING |
|
Strategi inferensi skema. |
|
|
No |
INT |
|
Jumlah maksimum catatan yang disampel per koleksi selama inferensi skema awal. |
|
|
No |
STRING |
|
Startup mode. Nilai valid: |
|
|
No |
LONG |
— |
Timestamp awal dalam milidetik. Diperlukan saat |
|
|
No |
INT |
|
Ukuran maksimum chunk metadata. |
|
|
No |
BOOLEAN |
|
Menutup pembaca sumber yang idle setelah beralih ke pembacaan inkremental. |
|
|
No |
BOOLEAN |
|
Nilai valid:
Backfill hanya berlaku selama kueri snapshot satu chunk dan tidak mencakup seluruh fase pembacaan penuh. Saat backfill dilewati, kueri snapshot setiap chunk membaca data terbaru pada saat itu; pembaruan yang terjadi pada chunk setelah dibaca tidak digabung selama fase pembacaan penuh dan dibaca dari OpLog setelah memasuki fase inkremental. Misalnya, pembaruan pada chunk5 yang terjadi saat chunk5 sedang di-snapshot tercermin langsung dalam snapshot chunk5; jika chunk5 diperbarui setelah pembaca maju ke chunk80, pembaruan tersebut diterapkan kemudian dari OpLog selama fase inkremental. Penting
Saat diaktifkan, perubahan yang terjadi selama atau setelah pemindaian chunk tetap dikirimkan dari OpLog pada fase inkremental dan mungkin diduplikasi. Hanya semantik at-least-once yang dijamin. Aktifkan ini hanya jika sink downstream mendukung penulisan idempoten berdasarkan primary key. |
|
|
No |
BOOLEAN |
|
Membaca chunk tak terbatas terlebih dahulu. Mengurangi risiko kehabisan memori untuk koleksi yang sering diperbarui. |
|
|
No |
INT |
|
Ukuran batch kursor. |
|
|
No |
INT |
|
Jumlah maksimum entri per permintaan tarik Change Stream. |
|
|
No |
INT |
|
Waktu tunggu minimum antara permintaan tarik Change Stream, dalam milidetik. |
|
|
No |
INT |
|
Interval heartbeat dalam milidetik. Atur ini untuk koleksi yang jarang diperbarui. Mengatur ke |
|
|
No |
INT |
|
Ukuran chunk selama snapshotting, dalam MB. |
|
|
No |
INT |
|
Jumlah sampel yang digunakan untuk memperkirakan ukuran koleksi selama snapshotting. |
|
|
No |
BOOLEAN |
|
Menghasilkan event changelog lengkap menggunakan catatan preimage dan postimage. Memerlukan MongoDB 6.0 atau versi lebih baru dengan preimage dan postimage diaktifkan. |
|
|
No |
BOOLEAN |
|
Menonaktifkan timeout kursor. Secara default, MongoDB menutup kursor idle setelah 10 menit. |
|
|
No |
BOOLEAN |
|
Mengabaikan event delete dari MongoDB. |
|
|
No |
BOOLEAN |
|
Meratakan dokumen BSON bersarang. Misalnya, |
|
|
No |
BOOLEAN |
|
Menginferensi semua tipe primitif sebagai STRING. Mengurangi event perubahan skema saat tipe upstream tidak konsisten. |
|
|
No |
STRING |
— |
Daftar field metadata yang dipisahkan koma untuk dikirimkan ke downstream. Nilai yang didukung: |
Pemetaan tipe data
|
MongoDB BSON |
Flink CDC |
Notes |
|
STRING |
VARCHAR |
— |
|
INT32 |
INT |
— |
|
INT64 |
BIGINT |
— |
|
DECIMAL128 |
DECIMAL |
— |
|
DOUBLE |
DOUBLE |
— |
|
BOOLEAN |
BOOLEAN |
— |
|
TIMESTAMP |
TIMESTAMP |
— |
|
DATETIME |
LOCALZONEDTIMESTAMP |
— |
|
BINARY |
VARBINARY |
— |
|
DOCUMENT |
MAP |
Tipe kunci dan nilai diinferensi. |
|
ARRAY |
ARRAY |
Tipe elemen diinferensi. |
|
OBJECTID |
VARCHAR |
Direpresentasikan sebagai string heksadesimal. |
|
SYMBOL, REGULAREXPRESSION, JAVASCRIPT, JAVASCRIPTWITHSCOPE |
VARCHAR |
Direpresentasikan sebagai string. |
Kolom metadata
Flink CDC mendukung kolom metadata berikut untuk konektor MongoDB:
|
Metadata column |
Type |
Description |
|
|
BIGINT NOT NULL |
Waktu saat dokumen berubah (timestamp OpLog). Mengembalikan |
Gunakan kolom metadata generik modul Transform untuk mengakses database_name, collection_name, dan row_kind.
DataStream API
Untuk menggunakan DataStream API, siapkan konektor DataStream untuk pekerjaan Anda. Lihat DataStream connector usage.
Tambahkan dependensi Maven
Repositori Maven Central menyediakan konektor MongoDB VVR.
<dependency>
<groupId>com.alibaba.ververica</groupId>
<artifactId>flink-connector-mongodb</artifactId>
<version>${vvr.version}</version>
</dependency>
Buat MongoDBSource
Gunakan MongoDBSource.builder() untuk membuat sumber:
-
Untuk mengaktifkan pembacaan snapshot inkremental, gunakan builder dari
com.ververica.cdc.connectors.mongodb.source. -
Jika tidak, gunakan builder dari
com.ververica.cdc.connectors.mongodb.
MongoDBSource.builder()
.hosts("mongo.example.com:27017")
.username("mongouser")
.password("mongopasswd")
.databaseList("testdb") // Mendukung ekspresi reguler; gunakan .* untuk mencocokkan semua database
.collectionList("testcoll") // Mendukung ekspresi reguler; gunakan .* untuk mencocokkan semua koleksi
.startupOptions(StartupOptions.initial()) // StartupOptions.latest-offset(), StartupOptions.timestamp()
.deserializer(new JsonDebeziumDeserializationSchema())
.build();
Parameter MongoDBSource
|
Parameter |
Description |
|
|
Hostname server MongoDB. |
|
|
Username MongoDB. Abaikan jika autentikasi tidak diaktifkan. |
|
|
Password MongoDB. Abaikan jika autentikasi tidak diaktifkan. |
|
|
Nama database yang akan dipantau. Mendukung ekspresi reguler. Gunakan |
|
|
Nama koleksi yang akan dipantau. Mendukung ekspresi reguler. Gunakan |
|
|
Mode startup. Nilai yang valid: |
|
|
Deserializer untuk mengonversi objek |
Referensi
-
Pernyataan CREATE TABLE AS (CTAS) (Akan dihentikan) — Menyinkronkan data dan perubahan skema MongoDB ke tabel downstream (VVR 8.0.6 dan versi lebih baru, memerlukan preimage dan postimage).
-
Pernyataan CREATE DATABASE AS (CDAS) — Menyinkronkan seluruh database MongoDB ke tabel downstream (VVR 8.0.6 dan versi lebih baru, memerlukan preimage dan postimage).
-
Metrics — Memantau performa tabel sumber.