Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:OceanBase

Son Güncelleme:Oct 04, 2026

OceanBase konektörü, Realtime Compute for Apache Flink ile yerel dağıtık hibrit işlem (HTAP) veritabanı olan OceanBase'i entegre eder. Değişiklik verisi yakalama (CDC) akışlarını okumak, boyut tablolarıyla birleştirmek ve sonuçları tekrar OceanBase'e yazmak için bu konektörü kullanın.

OceanBase konektörü genel önizleme aşamasındadır.

Arka plan bilgileri

OceanBase, yerel dağıtık hibrit işlem (HTAP) veritabanı yönetim sistemidir. Daha fazla bilgi için OceanBase web sitesini inceleyin. MySQL veya Oracle veritabanından geçiş yaparken iş sistemlerinizi yeniden yapılandırma maliyetlerini azaltmak için OceanBase iki uyumluluk modunu destekler: Oracle modu ve MySQL modu. Bu modlardaki veri türleri, SQL özellikleri ve iç görünümler MySQL veya Oracle ile tutarlıdır.

Desteklenen özellikler

Kategori Ayrıntılar
Tablo türleri Kaynak, boyut ve hedef tablolar
Çalışma zamanı modları Akış modu ve toplu iş modu
Veri biçimi Uygulanamaz
Belirli izleme ölçümleri Yok
API SQL
Hedef tablolarda güncellemeler ve silmeler Evet

Ön koşullar

Başlamadan önce aşağıdakilerin sağlandığından emin olun:

Sınırlamalar

  • Ververica Runtime (VVR) 8.0.1 veya sonraki bir sürüm gerektirir.

Anlamsal garantiler:

  • CDC kaynak tablolar: tam olarak bir kez semantiği. Tam geçmiş verilerden Binlog okumaya geçiş sırasında, bir arızadan sonra bile veri kaybolmaz veya yinelenmez.

  • Hedef tablolar: en az bir kez semantiği. Hedef tabloda bir birincil anahtar varsa, idempotentlik veri doğruluğunu garanti eder.

VVR 11.4.0 CDC mimari değişikliği

VVR 11.4.0 sürümünden itibaren OceanBase CDC konektörü yükseltildi:

  • OceanBase LogProxy hizmetine dayalı orijinal CDC konektörü kullanımdan kaldırıldı ve kaldırıldı.

  • Artımlı günlük yakalama artık OceanBase Binlog hizmetini gerektirir. OceanBase CDC konektörü, standart MySQL CDC konektörünü doğrudan bağlamaya kıyasla Binlog hizmetiyle daha iyi protokol uyumluluğu ve bağlantı kararlılığı sunar. Değişiklik takibi için standart MySQL CDC konektörünü OceanBase Binlog hizmetine bağlamanız önerilmez.

  • Oracle uyumluluk modunda artımlı değişiklik takibi artık desteklenmemektedir. Oracle modu CDC için OceanBase Enterprise Teknik Desteği ile iletişime geçin.

Söz dizimi

CREATE TABLE oceanbase_source (
   order_id     INT,
   order_date   TIMESTAMP(0),
   customer_name STRING,
   price        DECIMAL(10, 5),
   product_id   INT,
   order_status BOOLEAN,
   PRIMARY KEY(order_id) NOT ENFORCED
) WITH (
  'connector'  = 'oceanbase',
  'url'        = '<your-jdbc-url>',
  'tableName'  = '<your-table-name>',
  'userName'   = '<your-username>',
  'password'   = '<your-password>'
);

Hedef yazma davranışı:

Gelen her kayıt için konektör, hedef tablonun şemasına göre bir SQL deyimi oluşturur:

  • Birincil anahtar yok: INSERT INTO

  • Birincil anahtar var: UPSERT (veritabanı uyumluluk moduna bağlı olarak)

WITH parametreleri

Genel parametreler

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

Parametre Açıklama Gerekli Tür Varsayılan
connector oceanbase olarak ayarlayın. Evet STRING —
password Veritabanı parolası. Evet STRING —

Kaynak tablo parametreleri

Önemli

VVR 11.4.0 sürümünden itibaren OceanBase CDC konektörü, artımlı günlük yakalama için OceanBase Binlog hizmetini kullanır. LogProxy tabanlı konektör kaldırıldı. VVR 11.4.0 sürümünden itibaren Oracle uyumluluk modu CDC desteklenmemektedir.

Parametre Açıklama Gerekli Tür Varsayılan Notlar
hostname OceanBase veritabanının IP adresi veya ana bilgisayar adı. Mümkün olduğunda sanal özel cloud (VPC) adresi kullanın. Evet STRING — OceanBase ve Realtime Compute for Apache Flink farklı VPC'lerdeyse, VPC'ler arası bağlantı kurun veya genel uç nokta kullanın. Bkz. Çalışma alanı yönetimi ve Flink kümeleri için internet erişimi.
username OceanBase veritabanı kullanıcı adı. Evet STRING — —
database-name OceanBase veritabanı adı. Birden çok veritabanından okumak için düzenli ifadeleri destekler. ^ ve $ sabitlerinden kaçının. Evet STRING — Konektör, tam yol düzenli ifadesi oluşturmak için database-name ve table-name değerlerini \\. (VVR 8.0.1+) veya . (önceki sürümler) ile birleştirir. Örneğin, db_.* + tb_.+ ifadesi db_.*\\.tb_.+ haline gelir.
table-name OceanBase tablo adı. Birden çok tablodan okumak için düzenli ifadeleri destekler. ^ ve $ sabitlerinden kaçının. Evet STRING — Yukarıdaki database-name notuna bakın.
port OceanBase veritabanı bağlantı noktası. Hayır INTEGER 3306 —
server-id Veritabanı istemcisi için sayısal kimlik. Küresel olarak benzersiz olmalıdır. Eşzamanlı okuyuculara farklı kimlikler atamak için 5400-5408 gibi bir aralık destekler. Hayır STRING 5400 ile 6400 arasında rastgele değer Aynı veritabanına bağlanan her iş için farklı bir kimlik kullanın. Bkz. Sunucu kimliği kullanımı.
scan.incremental.snapshot.chunk.size Artımlı anlık görüntü okuma sırasında parça başına satır sayısı. Her parçadaki veriler tamamen okunmadan önce bellekte arabelleğe alınır. Daha küçük parçalar hata kurtarma granülerliğini iyileştirir ancak bellek yetersizliği (OOM) hatalarına neden olabilir ve aktarım hızını düşürebilir. Hayır INTEGER 8096 Parça boyutunu bellek ve aktarım hızı gereksinimlerine göre dengeleyin.
scan.snapshot.fetch.size Tam tablo okumaları sırasında çekme başına alınan maksimum kayıt sayısı. Hayır INTEGER 1024 —
scan.startup.mode Veri tüketimi için başlangıç modu. Hayır STRING initial Geçerli değerler: initial (tam geçmişi tarar, ardından Binlog'u okur), latest-offset (yalnızca Binlog sonu), earliest-offset (en eski kullanılabilir Binlog), specific-offset (scan.startup.specific-offset.* parametreleri aracılığıyla ayarlanır), timestamp (scan.startup.timestamp-millis aracılığıyla ayarlanır).
Önemli

earliest-offset, specific-offset ve timestamp modları için belirtilen Binlog konumu ile iş başlatma arasında tablo şeması değişmemelidir.

scan.startup.specific-offset.file Başlangıç ofseti için Binlog dosya adı. Örnek: mysql-bin.000003. Hayır STRING — scan.startup.mode=specific-offset gerektirir.
scan.startup.specific-offset.pos Belirtilen Binlog dosyasındaki bayt ofseti. Hayır INTEGER — scan.startup.mode=specific-offset gerektirir.
scan.startup.specific-offset.gtid-set Başlangıç ofseti için GTID kümesi. Örnek: 24DA167-0C0C-11E8-8442-00059A3C7B00:1-19. Hayır STRING — scan.startup.mode=specific-offset gerektirir.
scan.startup.timestamp-millis Milisaniye cinsinden başlangıç zaman damgası. OceanBase CDC, bu zaman damgasıyla eşleşen dosyayı bulmak için her Binlog dosyasının ilk olayını okur. Binlog dosyası temizlenmemiş olmalıdır. Hayır LONG — scan.startup.mode=timestamp gerektirir.
server-time-zone Veritabanı tarafından kullanılan oturum saat dilimi. TIMESTAMP türlerinin STRING türüne nasıl dönüştürüleceğini kontrol eder. Bkz. Debezium zamansal türleri. Örnek: Asia/Shanghai. Hayır STRING Flink işi çalışma zamanı saat dilimi —
debezium.min.row.count.to.stream.results Konektörün tam okumadan (tüm tabloyu belleğe alma) toplu okumaya (satırları toplu olarak akışa alma) geçtiği satır sayısı eşiği. Tam okuma daha hızlıdır; toplu okuma büyük tablolar için OOM'u önler. Hayır INTEGER 1000 —
connect.timeout Zaman aşımına uğramış bir bağlantıyı yeniden denemeden önceki maksimum bekleme süresi. Hayır DURATION 30s —
connect.max-retries Başarısızlıktan sonraki maksimum bağlantı yeniden deneme sayısı. Hayır INTEGER 3 —
connection.pool.size Veritabanı bağlantı havuzu boyutu. Bağlantıları yeniden kullanmak toplam açık bağlantı sayısını azaltır. Hayır INTEGER 20 —
jdbc.properties.* Özel JDBC URL bağlantı parametreleri. Örnek: 'jdbc.properties.useSSL' = 'false'. Bkz. MySQL yapılandırma özellikleri. Hayır STRING — —
debezium.* Binlog okuma için özel Debezium parametreleri. Örnek: 'debezium.event.deserialization.failure.handling.mode' = 'ignore'. Hayır STRING — —
heartbeat.interval Kaynağın Binlog ofsetini ilerletmek için kalp atışı olayları yayınladığı aralık. Nadiren güncellenen tablolarda Binlog ofsetinin süresinin dolmasını önler. Süresi dolmuş bir ofset işin başarısız olmasına neden olur ve durumsuz bir yeniden başlatma gerektirir. Hayır DURATION 30s —
scan.incremental.snapshot.chunk.key-column Anlık görüntü aşamasında verileri bölmek için parça anahtarı olarak kullanılan sütun. Koşullu STRING — Birincil anahtarı olmayan tablolar için gereklidir (NOT NULL olmalıdır). Birincil anahtarı olan tablolar için isteğe bağlıdır (birincil anahtardan bir sütun seçin).
scan.incremental.close-idle-reader.enabled Anlık görüntü aşaması tamamlandıktan sonra boşta kalan okuyucuların kapatılıp kapatılmayacağını belirtir. Hayır BOOLEAN false VVR 8.0.1+. Ayrıca execution.checkpointing.checkpoints-after-tasks-finish.enabled=true gerektirir.
scan.read-changelog-as-append-only.enabled Değişiklik günlüğü akışının yalnızca ekleme yapılabilen bir akışa dönüştürülüp dönüştürülmeyeceğini belirtir. true olduğunda tüm mesaj türleri (INSERT, DELETE, UPDATE_BEFORE, UPDATE_AFTER) INSERT türüne dönüştürülür. Yalnızca yukarı akış tablosundan silme mesajlarını korumak gibi özel senaryolarda etkinleştirin. Hayır BOOLEAN false VVR 8.0.8+.
scan.only.deserialize.captured.tables.changelog.enabled Artımlı aşamada yalnızca yakalanan tablolar için değişiklik olaylarının serileştirilip serileştirilmeyeceğini belirtir. true olarak ayarlamak Binlog okumayı hızlandırır. Hayır BOOLEAN false (VVR 8.x), true (VVR 11.1+) VVR 8.0.7+. VVR 8.0.8 ve önceki sürümlerde debezium.scan.only.deserialize.captured.tables.changelog.enable parametre adını kullanın.
scan.parse.online.schema.changes.enabled Artımlı aşamada ApsaraDB RDS kilitsiz değişiklikler için DDL olaylarının ayrıştırılıp ayrıştırılmayacağını belirtir. Deneysel özellik. Çevrimiçi kilitsiz şema değişiklikleri gerçekleştirmeden önce bir Flink işi anlık görüntüsü alın. Hayır BOOLEAN false VVR 11.1+.
scan.incremental.snapshot.backfill.skip Anlık görüntü aşamasında geri doldurmanın atlanıp atlanmayacağını belirtir. Geri doldurma yalnızca tek bir parçanın anlık görüntü sorgusu sırasında uygulanır ve tüm tam okuma aşamasını kapsamaz. Geri doldurma atlandığında, her parçanın anlık görüntü sorgusu o anda en güncel tablo verilerini okur; bir parça okunduktan sonra gerçekleşen güncellemeler tam okuma aşamasında birleştirilmez ve artımlı aşamaya girildikten sonra Binlog'dan okunur. Örneğin, chunk5'anlık görüntülenirken oluşan bir güncelleme doğrudan chunk5'ın anlık görüntüsünde yansıtılır; okuyucu chunk80'e ilerledikten sonra chunk5 güncellenirse, güncelleme artımlı aşamada Binlog'dan daha sonra uygulanır. Önemli: Etkinleştirildiğinde, bir parçanın taraması sırasında veya sonrasında oluşan değişiklikler yine de artımlı aşamada Binlog'dan iletilir ve yinelenebilir; yalnızca en az bir kez semantiği garanti edilir. Bunu yalnızca aşağı akış hedefi birincil anahtara göre idempotent yazmaları desteklediğinde etkinleştirin. Hayır BOOLEAN false VVR 11.1+.
scan.incremental.snapshot.unbounded-chunk-first.enabled Anlık görüntü aşamasında sınırsız parçanın önce dağıtılıp dağıtılmayacağını belirtir. Bir TaskManager'in son parçayı işlemesi durumunda OOM riskini azaltır. Deneysel özellik. İş ilk kez başlamadan önce bu parametreyi ekleyin. Hayır BOOLEAN false VVR 11.1+.

Boyut tablosu parametreleri

Parametre Açıklama Gerekli Tür Varsayılan Notlar
url JDBC URL'si. MySQL veritabanı adını veya Oracle hizmet adını içermelidir. Evet STRING — —
userName Veritabanı kullanıcı adı. Evet STRING — —
cache Boyut tablosu aramaları için önbellek ilkesi. Hayır STRING ALL ALL: İş başlamadan önce tüm verileri yükler; süresi dolduktan sonra yeniden yükler. Çok sayıda arama hatası olan küçük tablolar için uygundur. Asenkron yüklemeyi desteklemek için birleştirme düğümü belleğini en az tablo boyutunun iki katına çıkarın. LRU: Satırların bir alt kümesini önbelleğe alır; cacheSize gerektirir. None: Önbelleğe alma yok.
cacheSize Maksimum önbelleğe alınmış girdi sayısı. Hayır INTEGER 100000 cache=LRU olduğunda gereklidir. cache=ALL olduğunda yoksayılır.
cacheTTLMs Milisaniye cinsinden önbellek zaman aşımı. Davranış cache ayarına bağlıdır: LRU için girdiler bu süreden sonra süresi dolar (varsayılan olarak süre dolmaz); ALL için tam önbellek bu süreden sonra yeniden yüklenir (varsayılan olarak yeniden yükleme yoktur); None için bu parametrenin etkisi yoktur. Hayır LONG Long.MAX_VALUE —
maxRetryTimeout Maksimum yeniden deneme süresi. Hayır DURATION 60s —

Hedef tablo parametreleri (JDBC)

Parametre Açıklama Gerekli Tür Varsayılan Notlar
url JDBC URL'si. MySQL veritabanı adını veya Oracle hizmet adını içermelidir. Evet STRING — —
userName Veritabanı kullanıcı adı. Evet STRING — —
tableName Hedef tablo adı. Evet STRING — —
sink.mode Yazma modu. Standart yazmalar için jdbc olarak ayarlayın; bypass import için direct-load olarak ayarlayın. Evet STRING jdbc —
compatibleMode OceanBase uyumluluk modu. Geçerli değerler: mysql, oracle. Hayır STRING mysql OceanBase'e özel parametre.
maxRetryTimes Maksimum yazma yeniden deneme sayısı. Hayır INTEGER 3 —
poolInitialSize Başlangıç bağlantı havuzu boyutu. Hayır INTEGER 1 —
poolMaxActive Havuzdaki maksimum etkin bağlantı sayısı. Hayır INTEGER 8 —
poolMaxWait Havuzdan bir bağlantı almak için maksimum bekleme süresi (ms). Hayır INTEGER 2000 —
poolMinIdle Havuzdaki minimum boşta bağlantı sayısı. Hayır INTEGER 1 —
connectionProperties k1=v1;k2=v2 biçiminde JDBC bağlantı özellikleri. Hayır STRING — —
ignoreDelete Silme işlemlerinin yoksayılıp yoksayılmayacağını belirtir. Hayır BOOLEAN false —
excludeUpdateColumns Güncellemelerden hariç tutulacak sütunlar, virgülle ayrılmış (örneğin, column1,column2). Birincil anahtar sütunları, bu ayardan bağımsız olarak her zaman hariç tutulur. Hayır STRING — —
partitionKey Bölümleme anahtarı. Ayarlandığında, veriler modRule uygulanmadan önce bu anahtara göre gruplandırılır. Hayır STRING — —
modRule column_name mod number biçimindeki gruplama kuralı (örneğin, user_id mod 8). Sütun sayısal olmalıdır. Veriler önce partitionKey ile bölümlenir, ardından her bölüm içinde bu kurala göre gruplandırılır. Hayır STRING — —
bufferSize Veri arabelleği boyutu (kayıt sayısı). Hayır INTEGER 1000 —
flushIntervalMs Arabellek temizleme aralığı (ms). Arabellek bu aralık içinde çıkış koşulunu karşılamazsa, arabelleğe alınan tüm veriler otomatik olarak temizlenir. Hayır LONG 1000 —
retryIntervalMs Yeniden deneme aralığı (ms). Hayır INTEGER 5000 —

Hedef tablo parametreleri (bypass import)

Bypass import, OceanBase'de toplu veri yüklemesi için yüksek aktarım hızına sahip bir yazma yöntemidir. VVR 11.5 ve sonraki sürümlerde kullanılabilir.

Bypass import kullanmadan önce aşağıdaki kısıtlamaları kontrol edin:

  • Yalnızca sınırlı akışlar: Veri kaynağı sınırlı bir akış olmalıdır. En iyi performans için Flink toplu iş modunu kullanın.

  • İçe aktarma sırasında tablo kilitleme: Hedef tablo içe aktarma boyunca kilitlenir. DML yazmaları ve DDL değişiklikleri engellenir; okuma sorguları etkilenmez.

  • Gerçek zamanlı yazmalar için uygun değildir: Akış veya gerçek zamanlı yazmalar için bunun yerine JDBC hedefini kullanın.

Parametre Açıklama Gerekli Tür Varsayılan Notlar
sink.mode Bypass import kullanmak için direct-load olarak ayarlayın. Hayır STRING jdbc —
host OceanBase veritabanının IP adresi veya ana bilgisayar adı. Evet STRING — —
port OceanBase veritabanının RPC bağlantı noktası. Hayır INTEGER 2882 —
username Veritabanı kullanıcı adı. Evet STRING — —
tenant-name OceanBase kiracı adı. Evet STRING — —
schema-name MySQL kiracıları için: veritabanı adı. Oracle kiracıları için: sahip adı. Evet STRING — —
table-name Hedef tablo adı. Evet STRING — —
parallel İçe aktarma görevi için sunucu tarafı eşzamanlılığı. Sunucu, hata döndürmeden kiracı CPU teknik özelliklerine göre gerçek paralellik derecesini sınırlar. Formül: MIN(tenant_cores × 2, parallel) × partition_nodes. Örneğin, 2 CPU çekirdeği, parallel=10 ve 2 bölüm düğümü ile: MIN(4, 10) × 2 = 8. Hayır INTEGER 8 —
buffer-size OceanBase'e tek bir yazmadan önce arabelleğe alınan kayıt sayısı. Hayır INTEGER 1024 —
dup-action Yinelenen birincil anahtarlarla karşılaşıldığında davranış. STOP_ON_DUP: içe aktarmayı başarısız kılar. REPLACE: mevcut satırı üzerine yazar. IGNORE: gelen satırı atar. Hayır STRING REPLACE —
load-method İçe aktarma modu. full: standart bypass import. inc: artımlı mod, birincil anahtar çakışmalarını kontrol eder (observer 4.3.2+, dup-action=REPLACE desteklenmez). inc_replace: artımlı üzerine yazma modu, çakışma kontrolleri olmadan mevcut satırları doğrudan üzerine yazar (observer 4.3.2+, dup-action yoksayılır). Hayır STRING full —
max-error-rows Tolere edilen maksimum hata satırı sayısı. Hata satırları şunları içerir: dup-action=STOP_ON_DUP olduğunda yinelenen birincil anahtarlar, eşleşmeyen sütun sayıları ve tür dönüşümünün başarısız olduğu satırlar. Hayır LONG 0 —
timeout Bypass import görevi için genel zaman aşımı. Hayır DURATION 7d —
heartbeat-timeout İstemci tarafı kalp atışı zaman aşımı. Hayır DURATION 60s —
heartbeat-interval İstemci tarafı kalp atışı aralığı. Hayır DURATION 10s —

Tür eşlemesi

MySQL uyumlu mod

OceanBase türü Flink türü
TINYINT TINYINT
SMALLINT, TINYINT UNSIGNED SMALLINT
INT, MEDIUMINT, SMALLINT UNSIGNED INT
BIGINT, INT UNSIGNED BIGINT
BIGINT UNSIGNED DECIMAL(20, 0)
REAL, FLOAT FLOAT
DOUBLE DOUBLE
NUMERIC(p, s), DECIMAL(p, s) DECIMAL(p, s) (p ≤ 38)
BOOLEAN, TINYINT(1) BOOLEAN
DATE DATE
TIME [(p)] TIME [(p)] [WITHOUT TIME ZONE]
DATETIME [(p)], TIMESTAMP [(p)] TIMESTAMP [(p)] [WITHOUT TIME ZONE]
CHAR(n) CHAR(n)
VARCHAR(n) VARCHAR(n)
BIT(n) BINARY(⌈n/8⌉)
BINARY(n) BINARY(n)
VARBINARY(N) VARBINARY(N)
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT STRING
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB BYTES (maks. 2.147.483.647 bayt)

Oracle uyumlu mod

OceanBase türü Flink türü
NUMBER(p, s≤0), p−s < 3 TINYINT
NUMBER(p, s≤0), p−s < 5 SMALLINT
NUMBER(p, s≤0), p−s < 10 INT
NUMBER(p, s≤0), p−s < 19 BIGINT
NUMBER(p, s≤0), 19 ≤ p−s ≤ 38 DECIMAL(p−s, 0)
NUMBER(p, s>0) DECIMAL(p, s)
NUMBER(p, s≤0), p−s > 38 STRING
FLOAT, BINARY_FLOAT FLOAT
BINARY_DOUBLE DOUBLE
NUMBER(1) BOOLEAN
DATE, TIMESTAMP [(p)] TIMESTAMP [(p)] [WITHOUT TIME ZONE]
CHAR(n), NCHAR(n), NVARCHAR2(n), VARCHAR(n), VARCHAR2(n), CLOB STRING
BLOB, ROWID BYTES

Örnekler

Kaynak tablo ve hedef tablo

Aşağıdaki örnek, bir OceanBase kaynak tablosundan CDC verilerini okur ve bunları bir JDBC hedef tablosuna yazar. Referans olması amacıyla bir bypass import hedef tablo tanımı da dahil edilmiştir.

Üç tablonun tümü 'connector' = 'oceanbase' kullanır. Kaynak ve JDBC hedefi farklı parametre kümeleri kullanır; direct-load hedefi sink.mode = 'direct-load' ayarlar ve RPC bağlantı noktası üzerinden bağlanır.

-- OceanBase CDC source table (reads full history, then Binlog)
CREATE TEMPORARY TABLE oceanbase_source (
  a INT,
  b VARCHAR,
  c VARCHAR
) WITH (
  'connector'     = 'oceanbase',
  'hostname'      = '<your-hostname>',
  'port'          = '3306',
  'username'      = '<your-username>',
  'password'      = '<your-password>',
  'database-name' = '<your-database-name>',
  'table-name'    = '<your-table-name>'
);

-- OceanBase JDBC sink table (for real-time streaming writes)
CREATE TEMPORARY TABLE oceanbase_sink (
  a INT,
  b VARCHAR,
  c VARCHAR
) WITH (
  'connector' = 'oceanbase',
  'url'       = '<your-jdbc-url>',
  'userName'  = '<your-username>',
  'password'  = '<your-password>',
  'tableName' = '<your-table-name>'
);

-- OceanBase bypass import sink table (for high-throughput batch writes)
-- Requires a bounded data source; set Flink to batch mode for best performance
CREATE TEMPORARY TABLE oceanbase_directload_sink (
  a INT,
  b VARCHAR,
  c VARCHAR
) WITH (
  'connector'   = 'oceanbase',
  'sink.mode'   = 'direct-load',
  'host'        = '<your-host>',
  'port'        = '<your-rpc-port>',
  'tenant-name' = '<your-tenant-name>',
  'schema-name' = '<your-schema-name>',
  'table-name'  = '<your-table-name>',
  'username'    = '<your-username>',
  'password'    = '<your-password>'
);

BEGIN STATEMENT SET;
INSERT INTO oceanbase_sink
SELECT * FROM oceanbase_source;
END;

Boyut tablosu

Aşağıdaki örnek, bir Datagen kaynağını zamansal birleştirme kullanarak bir OceanBase boyut tablosuyla birleştirir. ALL önbellek ilkesi, iş başlamadan önce tüm boyut tablosunu belleğe yükler.

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

-- OceanBase dimension table with ALL cache policy
-- ALL cache loads the full table at startup — suitable for small, stable tables
CREATE TEMPORARY TABLE oceanbase_dim (
  a INT,
  b VARCHAR,
  c VARCHAR
) WITH (
  'connector' = 'oceanbase',
  'url'       = '<your-jdbc-url>',
  'userName'  = '<your-username>',
  'password'  = '${secret_values.password}',
  'tableName' = '<your-table-name>'
);

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

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

Sonraki adımlar