Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:AnalyticDB for PostgreSQL connector

Son Güncelleme:Oct 04, 2026

AnalyticDB for PostgreSQL connector, Realtime Compute for Apache Flink SQL işlerinde AnalyticDB for PostgreSQL hizmetini kaynak (beta), boyut veya havuz tablosu olarak kullanmanıza olanak tanır. AnalyticDB for PostgreSQL, büyük ölçekli çevrimiçi analitik için tasarlanmış yüksek derecede paralel işleme (MPP) özellikli bir veri ambarıdır.

Desteklenenler: Kaynak (beta) · Boyut · Havuz | Akış · Toplu İş | SQL API | Havuz güncellemeleri ve silme işlemlerini destekler

Kaynak tablodan veri okumak için Flink CDC aracılığıyla yapılandırılmış özel bir connector gerekir. Kurulum talimatları için bkz. Use Flink CDC to subscribe to full and incremental data in real time .

Önkoşullar

Başlamadan önce aşağıdakileri tamamladığınızdan emin olun:

Sınırlamalar

  • AnalyticDB for PostgreSQL V7.0, VVR 8.0.1 veya sonraki bir sürümü gerektirir.

  • Kendi kendine yönetilen PostgreSQL veritabanları desteklenmez.

Söz dizimi

Boyut ve havuz tabloları için connector='adbpg' parametresini, kaynak tabloları için ise connector='adbpg-cdc' parametresini kullanın.

CREATE TEMPORARY TABLE adbpg_table (
  id      INT,
  len     INT,
  content VARCHAR,
  PRIMARY KEY (id)
) WITH (
  'connector'  = 'adbpg',
  'url'        = 'jdbc:postgresql://<host>:<port>/<database>',
  'tableName'  = '<table>',
  'userName'   = '<username>',
  'password'   = '<password>'
);

Connector seçenekleri

Genel

Bu seçenekler tüm tablo türleri için geçerlidir.

Seçenek Zorunlu Varsayılan Tür Açıklama
connector Evet — STRING Kaynak tablolar için adbpg-cdc değerini, boyut ve havuz tabloları için adbpg değerini ayarlayın.
url Evet — STRING jdbc:postgresql://<host>:<port>/<database> biçimindeki Java Database Connectivity (JDBC) URL'si.
tableName Evet — STRING Veritabanındaki tablonun adı.
userName Evet — STRING AnalyticDB for PostgreSQL veritabanı kullanıcı adı.
password Evet — STRING AnalyticDB for PostgreSQL veritabanı parolası.
maxRetryTimes Hayır 3 INTEGER Yazma işlemi başarısız olduğunda denenecek maksimum yeniden deneme sayısı.
targetSchema Hayır public STRING Veritabanı şemasının adı.
caseSensitive Hayır false STRING Tanımlayıcıların büyük/küçük harfe duyarlı olup olmadığını belirtir. Geçerli değerler: true, false.
connectionMaxActive Hayır 5 INTEGER Bağlantı havuzundaki maksimum bağlantı sayısı. Connector, boşta kalan bağlantıları otomatik olarak serbest bırakır. Bu değerin çok yüksek ayarlanması sunucudaki bağlantı sayısının anormal hale gelmesine neden olabilir.

Kaynağa özgü (beta)

Bu seçenekler yalnızca kaynak tablolar (connector='adbpg-cdc') için geçerlidir.

Seçenek Zorunlu Varsayılan Tür Açıklama
schema-name Evet — STRING Şema adı. Birden fazla şemaya aynı anda abone olmak için normal ifadeleri destekler.
port Evet 5432 INTEGER AnalyticDB for PostgreSQL örneğinin bağlantı noktası.
decoding.plugin.name Evet pgoutput STRING PostgreSQL mantıksal kod çözme eklentisi. pgoutput olarak ayarlayın.
slot.name Evet — STRING Mantıksal kod çözme yuvasının adı. Bkz. Yuva adı rehberi.
debezium.* Evet — STRING Debezium istemci yapılandırma özellikleri. Örneğin, ilk anlık görüntüyü atlamak için 'debezium.snapshot.mode' = 'never' ayarını yapın. Bkz. Connector properties.
scan.incremental.snapshot.enabled Hayır false BOOLEAN Artımlı anlık görüntünün etkinleştirilip etkinleştirilmeyeceğini belirtir. Geçerli değerler: true, false.
scan.startup.mode Hayır initial STRING Veri tüketimi için başlangıç modu. Bkz. Başlangıç modları.
changelog-mode Hayır ALL STRING Değişiklik olaylarının değişiklik akışında nasıl kodlandığını belirtir. Geçerli değerler: ALL, UPSERT.
heartbeat.interval.ms Hayır 30 saniye DURATION Milisaniye cinsinden kalp atışı paketlerinin gönderilme aralığı. Bkz. Kalp atışı ve WAL saklama.
scan.incremental.snapshot.chunk.key-column Hayır İlk birincil anahtar sütunu STRING Anlık görüntü okumaları sırasında parça anahtarı olarak kullanılan sütun.

Başlangıç modları

Değer Davranış
initial (varsayılan) İlk başlatmada tam geçmiş veri taraması gerçekleştirir, ardından en son Write-Ahead Logging (WAL) konumundan okumaya devam eder.
latest-offset Geçmiş veri taramasını atlar ve yalnızca WAL'in mevcut sonundan okur.
snapshot Tam geçmiş veri taraması gerçekleştirir ve bu tarama sırasında oluşturulan WAL verilerini yakalar. Tarama tamamlandıktan sonra durur.

Değişiklik günlüğü modları

Değer Yakalanan olaylar
ALL (varsayılan) INSERT, DELETE, UPDATE_BEFORE, UPDATE_AFTER
UPSERT INSERT, DELETE, UPDATE_AFTER

Yuva adı rehberi

Çakışmaları önlemek için çoğaltma yuvalarının dikkatlice yönetilmesi gerekir:

  • Tek bir Flink işi içinde: İş içindeki tüm kaynak tablolar için aynı slot.name değerini kullanın.

  • Farklı Flink işleri arasında: Her iş için benzersiz bir slot.name değeri atayın. Farklı işlerde aynı yuva adının yeniden kullanılması PSQLException: ERROR: replication slot "debezium" is active for PID 974 hatasına neden olur.

Kalp atışı ve WAL saklama

Bir kaynak tablodaki güncellemeler seyrek olduğunda, connector çoğaltma yuvası ofsetini ilerletmeyebilir. Veritabanı, yuva ofseti ilgili dosyaların üzerine gelene kadar WAL dosyalarını tuttuğu için bu durum AnalyticDB for PostgreSQL'in WAL disk alanını geri kazanmasını engeller. Periyodik kalp atışı göndermek, yuva ofsetinin ileriye doğru hareket etmesini sağlayarak eski WAL dosyalarının serbest bırakılmasına olanak tanır. Tablo değişikliklerinin seyrek olduğu durumlarda heartbeat.interval.ms değerini güncelleme sıklığınıza uygun olacak şekilde ayarlayın.

Havuza özgü

Bu seçenekler yalnızca havuz tabloları (connector='adbpg') için geçerlidir.

Seçenek Zorunlu Varsayılan Tür Açıklama
writeMode Hayır insert STRING İlk yazma denemesi için yazma stratejisi. Bkz. Yazma modları ve çakışma çözümü.
conflictMode Hayır strict STRING Birincil anahtar veya dizin çakışmalarının nasıl ele alınacağını belirtir. Bkz. Yazma modları ve çakışma çözümü.
batchSize Hayır 500 INTEGER Parti başına yazılan kayıt sayısı.
flushIntervalMs Hayır — INTEGER Connector'un önbelleğe alınan kayıtları flush etmeden önce bekleyeceği maksimum süre (milisaniye). Arabellek bu süre içinde batchSize değerine ulaşmazsa arabellekteki tüm kayıtlar hemen yazılır.
retryWaitTime Hayır 100 INTEGER Yeniden deneme girişimleri arasındaki aralık (milisaniye).

Yazma modları ve çakışma çözümü

writeMode ve conflictMode parametreleri, kayıtların nasıl yazılacağını ve çakışmaların nasıl ele alınacağını kontrol etmek için birlikte çalışır.

**writeMode** Açıklama Notlar
insert (varsayılan) Kayıtları doğrudan ekler. Çakışma işleme yöntemi conflictMode tarafından belirlenir. Çoğu kullanım senaryosu için uygundur.
upsert Çakışma durumunda mevcut kayıtları otomatik olarak günceller. Birincil anahtar gerektirir.
copy Kayıtları PostgreSQL COPY komutunu kullanarak ekler. VVR 11.1 veya sonraki bir sürüm gerektirir.
**conflictMode** Çakışma durumunda davranış Notlar
strict (varsayılan) Hata bildirir.
ignore Çakışan kaydı sessizce atar.
update Çakışan kaydı günceller. Birincil anahtarı olmayan tablolar için uygundur. Yazma aktarım hızını azaltır.
upsert Çakışan kaydı günceller. Birincil anahtar gerektirir. Anahtarlı tablolar için update modundan daha verimlidir.

Boyut tablosuna özgü

Bu seçenekler yalnızca boyut tabloları (connector='adbpg' ile FOR SYSTEM_TIME AS OF kullanılarak JOIN yapılan tablolar) için geçerlidir.

Seçenek Zorunlu Varsayılan Tür Açıklama
cache Hayır ALL STRING Boyut tablosu aramaları için önbellek ilkesi. Bkz. Önbellek ilkeleri.
cacheSize Hayır 100000 LONG Önbellekte tutulacak maksimum satır sayısı. Yalnızca cache=LRU olduğunda etkili olur.
cacheTTLMs Hayır Long.MAX_VALUE LONG Milisaniye cinsinden önbellek girdisinin yaşam süresi. Davranış cache ayarına bağlıdır. Bkz. Önbellek ilkeleri.
maxJoinRows Hayır 1024 INTEGER Giriş kaydı başına join yapılacak maksimum satır sayısı.

Önbellek ilkeleri

Doğru önbellek ilkesini seçmek, sorgu aktarım hızı ile veri güncelliği arasında denge kurmanızı sağlar.

**cache değeri** Davranış Ne zaman kullanılır
ALL (varsayılan) İş başlamadan önce boyut tablosunun tamamını belleğe yükler. Tüm aramalar önbelleğe isabet eder. Önbellek süresi dolduğunda (cacheTTLMs), tabloyu tamamen yeniden yükler. Join anahtarı önbellekte bulunamazsa, veri yok demektir. Periyodik yeniden yüklemelere tolerans gösterilebilen küçük ve orta ölçekli boyut tabloları için.
LRU Satırların bir alt kümesini önbelleğe alır. Önbellek isabeti olmadığında veritabanından getirir ve önbelleği günceller. Önbellek cacheSize sınırına ulaştığında en uzun süredir kullanılmayan girdileri temizler. cacheTTLMs girdi başına son kullanma süresini kontrol eder. Her şeyi önbelleğe almanın mümkün olmadığı büyük boyut tabloları veya düşük gecikmeli kısmi önbelleklemenin kabul edilebilir olduğu durumlar için.
None Önbellek yok. Her arama veritabanına gider. Verilerin her zaman veritabanından taze olarak okunması gerektiğinde.

Veri türü eşlemeleri

AnalyticDB for PostgreSQL türü Flink SQL türü
BOOLEAN BOOLEAN
SMALLINT INT
INT INT
BIGINT BIGINT
FLOAT DOUBLE
VARCHAR VARCHAR
TEXT VARCHAR
TIMESTAMP TIMESTAMP
DATE DATE

Örnekler

Havuz tablosu

Bu örnek, bir datagen kaynağından veri okur ve bir AnalyticDB for PostgreSQL havuz tablosuna yazar.

CREATE TEMPORARY TABLE datagen_source (
  `name` VARCHAR,
  `age`  INT
)
COMMENT 'datagen source table'
WITH (
  'connector' = 'datagen'
);

CREATE TEMPORARY TABLE adbpg_sink (
  name VARCHAR,
  age  INT
) WITH (
  'connector' = 'adbpg',
  'url'       = 'jdbc:postgresql://<host>:<port>/<database>',
  'tableName' = '<table>',
  'userName'  = '<username>',
  'password'  = '<password>'
);

INSERT INTO adbpg_sink
SELECT * FROM datagen_source;

Boyut tablosu

Bu örnek, bir datagen akışını geçici bir join kullanarak bir AnalyticDB for PostgreSQL boyut tablosuyla birleştirir.

CREATE TEMPORARY TABLE datagen_source (
  a         INT,
  b         BIGINT,
  c         STRING,
  `proctime` AS PROCTIME()
)
COMMENT 'datagen source table'
WITH (
  'connector' = 'datagen'
);

CREATE TEMPORARY TABLE adbpg_dim (
  a INT,
  b VARCHAR,
  c VARCHAR
) WITH (
  'connector' = 'adbpg',
  'url'       = 'jdbc:postgresql://<host>:<port>/<database>',
  'tableName' = '<table>',
  'userName'  = '<username>',
  'password'  = '<password>'
);

CREATE TEMPORARY TABLE blackhole_sink (
  a INT,
  b STRING
)
COMMENT 'blackhole sink table'
WITH (
  'connector' = 'blackhole'
);

INSERT INTO blackhole_sink
SELECT T.a, H.b
FROM datagen_source AS T
JOIN adbpg_dim FOR SYSTEM_TIME AS OF T.proctime AS H
  ON T.a = H.a;

Kaynak tablosu (beta)

Kaynak tablosu yapılandırması ve örnekleri için bkz. Use Flink CDC to subscribe to full and incremental data in real time.

Metrikler

Havuz tablosu metrikleri Realtime Compute for Apache Flink konsolunda kullanılabilir. Boyut tabloları metrikleri dışa açmaz. Metrik tanımları için bkz. Metrics.

Metrik Açıklama
numRecordsOut Havuza yazılan toplam kayıt sayısı.
numRecordsOutPerSecond Saniye başına yazılan kayıt sayısı.
numBytesOut Havuza yazılan toplam bayt sayısı.
numBytesOutPerSecond Saniye başına yazılan bayt sayısı.
currentSendTime En son yazma işleminin gerçekleşme süresi.

Sonraki adımlar