SelectDB bağlayıcısı, Realtime Compute for Apache Flink ile Alibaba Cloud üzerinde tamamen yönetilen ve Apache Doris uyumlu bir gerçek zamanlı veri ambarı olan ApsaraDB for SelectDB'yi entegre eder. Bu bağlayıcıyı; SelectDB'den veri okumak, SelectDB'ye veri yazmak veya SelectDB'de arama yapmak üzere gerçek zamanlı işlem hatları oluşturmak ve YAML tabanlı veri alımı işlerinde tam veritabanı senkronizasyonu çalıştırmak için kullanın.
Desteklenen yetenekler:
| Kategori | Ayrıntılar |
|---|---|
| Tablo türleri | Kaynak tablosu, hedef tablosu, boyut tablosu, veri alımı hedefi |
| Çalıştırma modu | Akış ve toplu iş |
| Veri biçimi | JSON ve CSV |
| API türü | DataStream, SQL ve veri alımı YAML işleri |
| Güncelleme/Silme desteği | Evet |
| İzleme ölçümleri | Yok |
Temel özellikler:
Tam veritabanı veri senkronizasyonu
İki aşamalı commit (2PC) aracılığıyla tam olarak bir kez semantiği — yinelenen veya kayıp kayıt yok
Apache Doris 1.0 ve sonraki sürümlerle uyumlu
Ön koşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
Ververica Runtime (VVR) 8.0.10 veya sonraki bir sürümü içeren Realtime Compute for Apache Flink
Bir ApsaraDB for SelectDB örneği. Bkz. Örnek oluşturma.
Örnek üzerinde yapılandırılmış bir IP adresi izin listesi. Bkz. İzin listesi yapılandırma.
Bağlayıcıyı kurma
SelectDB bağlayıcısı VVR 11.1 ve sonraki sürümlere dahildir — manuel kurulum gerekmez.
VVR 8.0.10 ile 11.0 arasında bir sürüm kullanıyorsanız bağlayıcıyı manuel olarak yükleyin:
JAR paketini Maven Central adresinden indirin (Flink sürümleri 1,15–1,17).
JAR dosyasını Realtime Compute for Apache Flink geliştirme konsoluna yükleyin. Bkz. Özel bağlayıcıları yönetme.
SQL işinizde bağlayıcıya
'connector' = 'doris'kullanarak başvurun.
SQL
Söz dizimi
Kaynak, hedef ve boyut olmak üzere üç tablo türünün tümü aynı DDL söz dizimini paylaşır. Tablo rolünü, dahil ettiğiniz parametreler aracılığıyla belirtin.
SelectDB'yi kaynak tablosu olarak kullanmak için önce doğrudan küme bağlantısını etkinleştirin. ApsaraDB for SelectDB konsolunda şuraya gidin: Instance Details > Network Information ve tıklayın Enable Direct Cluster Connection . Bu işlem, yüksek aktarım hızında paralel okuma işlemleri için Arrow Flight SQL protokolünü etkinleştirir.
CREATE TABLE selectdb_source (
order_id BIGINT,
user_id BIGINT,
total_amount DECIMAL(10, 2),
order_status TINYINT,
create_time TIMESTAMP(3),
product_name STRING
) WITH (
'connector' = 'doris',
'fenodes' = 'selectdb-cn-*******.selectdbfe.rds.aliyuncs.com:8080',
'table.identifier' = 'shop_db.orders',
'username' = 'admin',
'password' = '****'
);
Parametreler
Genel
| Parametre | Gerekli | Varsayılan | Açıklama |
|---|---|---|---|
connector |
Evet | — | Değer doris olarak sabittir. |
fenodes |
Evet | — | SelectDB örneğinin HTTP uç noktası: <VPC Address or Public Address>:<HTTP Protocol Port>. Her iki değeri de SelectDB konsolundaki Instance Details > Network Information bölümünden alın. Örnek: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080. |
jdbc-url |
Hayır | — | Boyut tablosu aramaları ve meta veri sorguları için Java Database Connectivity (JDBC) bağlantı dizesi: jdbc:mysql://<VPC Address or Public Address>:<MySQL Protocol Port>. Örnek: jdbc:mysql://selectdb-cn-***.selectdbfe.rds.aliyuncs.com:9030. |
table.identifier |
Evet | — | <database>.<table> biçimindeki hedef tablo. Örnek: db.tbl. |
username |
Evet | — | Veritabanı kullanıcı adı. Gerekirse parolayı Instance Details sayfasının sağ üst köşesinden sıfırlayın. |
password |
Evet | — | Veritabanı kullanıcı adı parolası. |
doris.request.retries |
Hayır | 3 |
Başarısız istekler için yeniden deneme sayısı. |
doris.request.connect.timeout |
Hayır | 30s |
Bağlantı zaman aşımı. |
doris.request.read.timeout |
Hayır | 30s |
Okuma zaman aşımı. |
Kaynak tablosu
| Parametre | Gerekli | Varsayılan | Açıklama |
|---|---|---|---|
doris.request.query.timeout |
Hayır | 21600s |
Sorgu zaman aşımı (varsayılan olarak 6 saat). |
doris.request.tablet.size |
Hayır | 1 |
Bölüm başına tablet sayısı. Daha düşük değerler Flink paralelliğini artırır ancak veritabanındaki yükü de arttırır. |
doris.batch.size |
Hayır | 4064 |
İstek başına bir Backend (BE) düğümünden okunan maksimum satır sayısı. Bağlantı ek yükünü ve ağ gecikme süresini azaltmak için bu değeri artırın. |
doris.exec.mem.limit |
Hayır | 8192mb |
Sorgu başına bellek sınırı (bayt cinsinden, varsayılan olarak 8 GB). |
source.use-flight-sql |
Hayır | false |
Yapılandırma gerekmez — SelectDB konsolunda Direct Cluster Connection özelliğini etkinleştirmek Arrow Flight SQL'i otomatik olarak açar. |
source.flight-sql-port |
Hayır | — | Frontend (FE) düğümünün Arrow Flight SQL bağlantı noktası (arrow_flight_sql_port). |
Hedef tablosu
Yazma modu, teslim garantilerini ve boşaltma davranışını etkiler. Tutarlılık gereksinimlerinize göre seçim yapın:
| Akış yazma | Toplu iş yazma | |
|---|---|---|
| Tetikleme koşulu | Flink kontrol noktası aralıklarını izler | Veri hacmi veya süre eşiğine göre periyodik boşaltma |
| Teslim garantisi | Tam olarak bir kez (2PC aracılığıyla) | En az bir kez; Benzersiz model ile değişmezlik sağlanır |
| Gecikme süresi | Kontrol noktası aralığı ile sınırlıdır | Esnektir, kontrol noktalarından bağımsızdır |
| Hata toleransı | Tam Flink durum kurtarma | Benzersiz model çoğaltma kaldırma özelliğine dayanır |
| Parametre | Gerekli | Varsayılan | Açıklama |
|---|---|---|---|
sink.label-prefix |
Hayır | — | Stream Load içe aktarmaları için etiket ön eki. Tüm işlerde genel olarak benzersiz olmalıdır — aynı etiket yalnızca bir kez commit edilebilir. İş yeniden başlatmalarında tam olarak bir kez semantiğini garanti etmek için gereklidir. |
sink.properties.* |
Hayır | — | Doğrudan SelectDB Stream Load API'sine iletilen Stream Load içe aktarma parametreleri. Aşağıdaki örneklere bakın. |
sink.enable-delete |
Hayır | true |
DELETE işlemlerini yayılır. Doris tablosunda toplu silme özelliğinin etkinleştirilmiş olmasını gerektirir ve yalnızca Benzersiz model ile çalışır. |
sink.enable-2pc |
Hayır | true |
Tam olarak bir kez semantiği için iki aşamalı commit (2PC) özelliğini etkinleştirin. Bkz. Explicit Transaction Operations. |
sink.buffer-size |
Hayır | 1 MB |
Yazma önbelleği arabellek boyutu (bayt cinsinden). Varsayılan değeri koruyun. |
sink.buffer-count |
Hayır | 3 |
Yazma önbelleği arabellek sayısı. Varsayılan değeri koruyun. |
sink.max-retries |
Hayır | 3 |
Commit başarısızlığı sonrasında maksimum yeniden deneme sayısı. |
sink.enable.batch-mode |
Hayır | false |
Toplu iş yazma moduna geçiş yapın. Boşaltma işlemi, kontrol noktaları yerine aşağıdaki üç sink.buffer-flush.* parametresi tarafından kontrol edilir. Tam olarak bir kez garantisi verilmez; değişmezlik için Benzersiz modeli kullanın. |
sink.flush.queue-size |
Hayır | 2 |
Toplu iş modunda önbellek kuyruk boyutu. |
sink.buffer-flush.max-rows |
Hayır | 500000 |
Toplu iş modunda boşaltma başına maksimum satır sayısı. |
sink.buffer-flush.max-bytes |
Hayır | 100 MB |
Toplu iş modunda boşaltma başına maksimum bayt sayısı. |
sink.buffer-flush.interval |
Hayır | 10s |
Toplu iş modunda boşaltma aralığı. |
sink.ignore.update-before |
Hayır | true |
Flink CDC'den gelen update-before olaylarını yoksayın. |
**sink.properties.* örnekleri:**
CSV biçimi:
'sink.properties.column_separator' = ','
-- If values may contain commas, use a non-printable separator:
-- 'sink.properties.column_separator' = '\x01'
JSON biçimi:
'sink.properties.format' = 'json',
'sink.properties.read_json_by_line' = 'true'
-- Alternatively: 'sink.properties.strip_outer_array' = 'true'
Boyut tablosu
| Parametre | Gerekli | Varsayılan | Açıklama |
|---|---|---|---|
lookup.cache.max-rows |
Hayır | -1 |
Arama önbelleğindeki maksimum satır sayısı. -1 değeri önbelleğe almayı devre dışı bırakır. |
lookup.cache.ttl |
Hayır | 10s |
Önbellek girdisi yaşam süresi (TTL). |
lookup.max-retries |
Hayır | 1 |
Arama sorgusu başarısız olduktan sonraki yeniden deneme sayısı. |
lookup.jdbc.async |
Hayır | false |
Eşzamansız aramayı etkinleştirin. |
lookup.jdbc.read.batch.size |
Hayır | 128 |
Eşzamansız arama modunda sorgu başına maksimum toplu iş boyutu. |
lookup.jdbc.read.batch.queue-size |
Hayır | 256 |
Eşzamansız arama modunda ara arabellek kuyruk boyutu. |
lookup.jdbc.read.thread-size |
Hayır | 3 |
Eşzamansız arama modunda görev başına JDBC arama iş parçacığı sayısı. |
Örnekler
Kaynak tablosu
CREATE TEMPORARY TABLE selectdb_source (
order_id BIGINT,
user_id BIGINT,
total_amount DECIMAL(10, 2),
order_status TINYINT,
create_time TIMESTAMP(3),
product_name STRING
) WITH (
'connector' = 'doris',
'fenodes' = 'selectdb-cn-*******.selectdbfe.rds.aliyuncs.com:8080',
'table.identifier' = 'shop_db.orders',
'username' = 'admin',
'password' = '****'
);
Hedef tablosu
CREATE TEMPORARY TABLE selectdb_sink (
order_id BIGINT,
user_id BIGINT,
total_amount DECIMAL(10, 2),
order_status TINYINT,
create_time TIMESTAMP(3),
product_name STRING
) WITH (
'connector' = 'doris',
'fenodes' = 'selectdb-cn-*******.selectdbfe.rds.aliyuncs.com:8080',
'table.identifier' = 'shop_db.orders',
'username' = 'admin',
'password' = '****',
'sink.label-prefix' = 'flink_orders' -- Must be globally unique across jobs
);
Boyut tablosu
SelectDB, akıştaki olgu tablosuyla birleştirilen bir arama boyut tablosu olarak işlev görür.
-- Fact table from Kafka
CREATE TEMPORARY TABLE fact_table (
`id` BIGINT,
`name` STRING,
`city` STRING,
`process_time` AS proctime()
) WITH (
'connector' = 'kafka',
...
);
-- Dimension table from SelectDB
CREATE TEMPORARY TABLE dim_city (
`city` STRING,
`level` INT,
`province` STRING,
`country` STRING
) WITH (
'connector' = 'doris',
'fenodes' = 'selectdb-cn-*******.selectdbfe.rds.aliyuncs.com:8080',
'jdbc-url' = 'jdbc:mysql://selectdb-cn-***.selectdbfe.rds.aliyuncs.com:9030',
'table.identifier' = 'dim.dim_city',
'username' = 'admin',
'password' = '****'
);
-- Temporal join
SELECT a.id, a.name, a.city, c.province, c.country, c.level
FROM fact_table a
LEFT JOIN dim_city FOR SYSTEM_TIME AS OF a.process_time AS c
ON a.city = c.city;
Veri alımı
Tam veritabanı senkronizasyonu için YAML tabanlı veri alımı işlerinde hedef olarak SelectDB bağlayıcısını kullanın.
Söz dizimi
source:
type: <source-type>
sink:
type: doris
name: Doris Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
username: root
password: ""
Parametreler
| Parametre | Gerekli | Varsayılan | Açıklama |
|---|---|---|---|
type |
Evet | — | Değer doris olarak sabittir. |
name |
Hayır | — | Hedef için açıklayıcı ad. |
fenodes |
Evet | — | HTTP uç noktası: <VPC Address or Public Address>:<HTTP Protocol Port>. Her iki değeri de SelectDB konsolundaki Instance Details > Network Information bölümünden alın. Örnek: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080. |
jdbc-url |
Hayır | — | JDBC bağlantı dizesi. Örnek: jdbc:mysql://selectdb-cn-***.selectdbfe.rds.aliyuncs.com:9030. |
username |
Evet | — | Veritabanı kullanıcı adı. |
password |
Evet | — | Veritabanı kullanıcı adı parolası. |
sink.enable.batch-mode |
Hayır | true |
Veri alımı işlerinde toplu iş modu varsayılan olarak etkindir. Boşaltma işlemi üç sink.buffer-flush.* parametresi tarafından kontrol edilir. Tam olarak bir kez garantisi verilmez; değişmezlik için Benzersiz modeli kullanın. |
sink.flush.queue-size |
Hayır | 2 |
Önbellek kuyruk boyutu. |
sink.buffer-flush.max-rows |
Hayır | 500000 |
Boşaltma başına maksimum satır sayısı. |
sink.buffer-flush.max-bytes |
Hayır | 100 MB |
Boşaltma başına maksimum bayt sayısı. |
sink.buffer-flush.interval |
Hayır | 10s |
Boşaltma aralığı. Minimum: 1s. |
sink.properties.* |
Hayır | — | Stream Load içe aktarma parametreleri. |
**sink.properties.* örnekleri:**
CSV biçimi:
sink.properties.column_separator: ','
# If values may contain commas, use a non-printable separator:
# sink.properties.column_separator: '\x01'
JSON biçimi:
sink.properties.format: 'json'
sink.properties.read_json_by_line: 'true'
Örnekler
Aşağıdaki örnekler yaygın veri alımı senaryolarını kapsar. Yer tutucu uç noktaları, kullanıcı adlarını ve parolaları kendi gerçek değerlerinizle değiştirin.
${secret_values.variable_name} ifadesi, çalışma alanınızda oluşturulan bir gizli değişkeni referans alır. Daha fazla bilgi için bkz. Değişkenleri yönetme. Kaynak parametrelerinin tam açıklaması için bkz. MySQL YAML bağlayıcısı ve Postgres CDC bağlayıcısı.
Bağlayıcı hedef veritabanlarını oluşturmaz. Başlamadan önce aşağıdaki örneklerde kullanılan hedef veritabanlarını ApsaraDB for SelectDB örneğinizde oluşturun. Hedef tablolar yoksa otomatik olarak oluşturulur.
Tek tablo senkronizasyonu
Tek bir MySQL tablosunu SelectDB'ye senkronize edin. Hedef tablo yoksa otomatik olarak oluşturulur.
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: ${secret_values.mysql_username}
password: ${secret_values.mysql_password}
tables: test_db.test_source_table
server-id: 5401-5499
# (Optional) Synchronize the existing full data first, and then the incremental data.
scan.startup.mode: initial
sink:
type: doris
name: SelectDB Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
jdbc-url: jdbc:mysql://selectdb-cn-****.selectdbfe.rds.aliyuncs.com:9030
username: ${secret_values.selectdb_username}
password: ${secret_values.selectdb_password}
pipeline:
name: MySQL to SelectDB Pipeline
Tam veritabanı senkronizasyonu
Bir MySQL veritabanındaki tüm tabloları SelectDB'ye senkronize edin. Aşağı yönlü veritabanı ve tablo adları yukarı yönlü olanlarla aynıdır. Hedef tablolar yoksa otomatik olarak oluşturulur.
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: ${secret_values.mysql_username}
password: ${secret_values.mysql_password}
# Matches all tables in the test_db database.
tables: test_db.\.*
server-id: 5401-5499
scan.startup.mode: initial
# (Optional) Synchronize tables that are created during the incremental phase without restarting the job.
scan.binlog.newly-added-table.enabled: true
sink:
type: doris
name: SelectDB Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
jdbc-url: jdbc:mysql://selectdb-cn-****.selectdbfe.rds.aliyuncs.com:9030
username: ${secret_values.selectdb_username}
password: ${secret_values.selectdb_password}
# (Optional) The flush interval for batch writing. Lower this value for small workloads so that data is not held in the buffer for too long.
sink.buffer-flush.interval: 10s
pipeline:
name: MySQL to SelectDB Pipeline
Tam veritabanı senkronizasyonundan tabloları hariç tutma
Geçici tablolar ve günlük tabloları gibi senkronize etmek istemediğiniz tabloları atlayın. Bir yönlendirme modülü olmadan veriler, kaynak tabloyla aynı ada sahip hedef tabloya yazılır.
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: ${secret_values.mysql_username}
password: ${secret_values.mysql_password}
tables: test_db.\.*
# Tables that match this regular expression are not synchronized. Separate multiple regular expressions with commas (,).
tables.exclude: test_db.tmp_\.*, test_db.log_\.*
server-id: 5401-5499
scan.startup.mode: initial
sink:
type: doris
name: SelectDB Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
jdbc-url: jdbc:mysql://selectdb-cn-****.selectdbfe.rds.aliyuncs.com:9030
username: ${secret_values.selectdb_username}
password: ${secret_values.selectdb_password}
pipeline:
name: MySQL to SelectDB Pipeline
Belirtilen veritabanlarına ve tablolara senkronizasyon
Aşağı yönlü veritabanı veya tablo adları yukarı yönlü olanlardan farklıysa hedefleri yeniden adlandırmak için yönlendirme modülünü kullanın. Aşağıdaki örnek, test_db içindeki tabloları ods_db veritabanına senkronize eder ve her tablo adına ods_ ön ekini ekler. Örneğin, test_db.orders tablosu ods_db.ods_orders tablosuna senkronize edilir.
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: ${secret_values.mysql_username}
password: ${secret_values.mysql_password}
tables: test_db.\.*
server-id: 5401-5499
scan.startup.mode: initial
sink:
type: doris
name: SelectDB Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
jdbc-url: jdbc:mysql://selectdb-cn-****.selectdbfe.rds.aliyuncs.com:9030
username: ${secret_values.selectdb_username}
password: ${secret_values.selectdb_password}
route:
# <> is a placeholder that is replaced with the matched source table name.
- source-table: test_db.\.*
sink-table: ods_db.ods_<>
replace-symbol: <>
pipeline:
name: MySQL to SelectDB Pipeline
Parçalı tabloları birleştirme
Şeması aynı olan birden çok parça tablosunu tek bir SelectDB tablosunda birleştirin. Aşağıdaki örnek, dönüştürme modülünü kullanarak kaynak veritabanını ve tabloyu tanımlayan bir sütun ekler ve ardından birleştirilen verilerin kaynağını izleyebilmeniz için bu sütunu iş birincil anahtarıyla birlikte bileşik birincil anahtar olarak kullanır.
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: ${secret_values.mysql_username}
password: ${secret_values.mysql_password}
# Matches all shards, such as order_db_1.orders_1 and order_db_2.orders_2.
tables: order_db_\d+.orders_\d+
server-id: 5401-5499
scan.startup.mode: initial
sink:
type: doris
name: SelectDB Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
jdbc-url: jdbc:mysql://selectdb-cn-****.selectdbfe.rds.aliyuncs.com:9030
username: ${secret_values.selectdb_username}
password: ${secret_values.selectdb_password}
# Set this parameter to false when the downstream primary key differs from the upstream one. Otherwise, the rows that correspond to the old primary key are not deleted.
sink.ignore.update-before: false
transform:
- source-table: order_db_\d+.orders_\d+
# Append the src_table column that identifies the source database and table.
projection: "*, __schema_name__ || '.' || __table_name__ AS src_table"
# The composite primary key must be the same as the key columns of the destination table.
primary-keys: order_id, src_table
description: Append the source identifier and set a composite primary key
route:
# Merge all shards into a single table.
- source-table: order_db_\d+.orders_\d+
sink-table: dw_db.merged_orders
pipeline:
name: MySQL sharding to SelectDB Pipeline
Verileri filtreleme ve sütunları budama
Verileri filtrelemek ve sütunları budamak için dönüştürme modülünü kullanın. Filtre koşulu, kaydın senkronize edilip edilmeyeceğine karar vermek için kaynak tablo alanlarında değerlendirilir; projeksiyon ise hangi sütunların aşağı yönlü tabloya yazılacağını belirler.
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: ${secret_values.mysql_username}
password: ${secret_values.mysql_password}
tables: test_db.test_source_table
server-id: 5401-5499
scan.startup.mode: initial
sink:
type: doris
name: SelectDB Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
jdbc-url: jdbc:mysql://selectdb-cn-****.selectdbfe.rds.aliyuncs.com:9030
username: ${secret_values.selectdb_username}
password: ${secret_values.selectdb_password}
transform:
- source-table: test_db.test_source_table
# Synchronize only the records whose order_status is PAID.
filter: "order_status = 'PAID'"
# Write only the following four columns.
projection: order_id, customer_id, total_amount, created_at
primary-keys: order_id
description: Filter by order status and prune columns
pipeline:
name: MySQL to SelectDB Pipeline
Tam PostgreSQL veritabanı senkronizasyonu
Bir PostgreSQL şemasındaki tüm tabloları SelectDB'ye senkronize edin. Başlamadan önce PostgreSQL örneğinde wal_level değerini logical olarak ayarlayın ve max_replication_slots ile max_wal_senders parametrelerinin yeterli boşlukta olduğundan emin olun. Daha fazla bilgi için bkz. PostgreSQL veritabanı yapılandırma.
source:
type: postgres
name: PostgreSQL Source
hostname: <yourHostname>
port: 5432
username: ${secret_values.pg_username}
password: ${secret_values.pg_password}
# PostgreSQL table names use the database.schema.table format.
tables: test_db.public.\.*
slot.name: <yourSlotName>
decoding.plugin.name: pgoutput
scan.startup.mode: initial
# (Optional) Use an existing publication instead of creating one when the job starts.
debezium.publication.autocreate.mode: disabled
debezium.publication.name: <yourPublicationName>
sink:
type: doris
name: SelectDB Sink
fenodes: selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080
jdbc-url: jdbc:mysql://selectdb-cn-****.selectdbfe.rds.aliyuncs.com:9030
username: ${secret_values.selectdb_username}
password: ${secret_values.selectdb_password}
pipeline:
name: PostgreSQL to SelectDB Pipeline
Tür eşleme
Flink'den SelectDB'ye
| Flink CDC türü | SelectDB türü | Notlar |
|---|---|---|
TINYINT |
TINYINT |
|
SMALLINT |
SMALLINT |
|
INT |
INT |
|
BIGINT |
BIGINT |
|
DECIMAL |
DECIMAL |
|
FLOAT |
FLOAT |
|
DOUBLE |
DOUBLE |
|
BOOLEAN |
BOOLEAN |
|
DATE |
DATE |
|
TIMESTAMP[(p)] |
DATETIME[(p)] |
|
TIMESTAMP_LTZ[(p)] |
DATETIME[(p)] |
|
CHAR(n) |
CHAR(n*3) |
SelectDB dizeleri UTF-8 olarak depolar. İngilizce karakterler 1 bayt; Çince karakterler 3 bayt kaplar. Maksimum CHAR uzunluğu 255'tir; daha uzun değerler otomatik olarak VARCHAR türüne dönüştürülür. |
VARCHAR(n) |
VARCHAR(n*3) |
Aynı UTF-8 çarpanı uygulanır. Maksimum VARCHAR uzunluğu 65533'tür; daha uzun değerler otomatik olarak STRING türüne dönüştürülür. |
BINARY(n) |
STRING |
|
VARBINARY(n) |
STRING |
|
STRING |
STRING |