Tair (Enterprise Edition) bağlayıcısı, Flink akış verilerini bir Tair (Enterprise Edition) örneğine yazar. Tair; hibrit bellek ve disk depolamayı destekleyen, yüksek kullanılabilirlik için sıcak yedekleme sunan ve yüksek aktarım hızı ile düşük gecikme süresi gerektiren iş yükleri için ölçeklenebilir küme mimarisine sahip Redis uyumlu bir veritabanıdır.
Desteklenen özellikler
| Kategori | Ayrıntılar |
|---|---|
| Desteklenen türler | Havuz tablosu |
| Çalışma modu | Akış modu |
| Veri biçimi | STRING |
| API türü | SQL |
| Havuz tablosunda veri güncelleme veya silme | Evet |
| Benzersiz ölçümler | numBytesSend, numBytesSendPerSecond, numRecordsSend, numRecordsSendPerSecond, numRecordSendErrors, currentSendTime |
Ölçümler hakkında ayrıntılı bilgi için bkz. Ölçümler.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir Tair (Enterprise Edition) örneği. Bkz. Adım 1: Örnek oluşturun
Örnek için yapılandırılmış bir IP adresi izin listesi. Bkz. Adım 2: İzin listelerini yapılandırın
Sınırlamalar
Realtime Compute for Apache Flink, Tair (Enterprise Edition) bağlayıcısını kullanmak için Ververica Runtime (VVR) 6.0.6 veya sonraki bir sürümü gerektirir.
TairTs, TairCpc, TairRoaring, TairVector ve TairGis için VVR 8.0.1 veya sonraki bir sürüm gerekir.
Bağlayıcı, birden çok ana bilgisayarın yapılandırılmasını desteklemez.
Söz dizimi
Aşağıdaki DDL ifadesi bir Tair havuz tablosu oluşturur. PRIMARY KEY zorunludur.
CREATE TABLE tair_table (
a STRING,
b STRING,
PRIMARY KEY (a) NOT ENFORCED
) WITH (
'connector' = 'tair',
'host' = '<yourHost>',
'mode' = '<dataStructure>'
);
Tair, tüm Redis veri yapılarını (STRING, LIST, SET, HASHMAP, SORTEDSET) ve kendi özel veri yapılarını destekler. Redis uyumlu veri yapıları için söz dizimi örnekleri için bkz. Tair (Redis OSS-compatible) bağlayıcısı.
Bağlayıcı seçenekleri
Zorunlu parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
connector |
String | tair olarak ayarlayın. |
host |
String | Tair sunucusunun uç noktası. Genel ağ bağlantılarının gecikme süresi ve bant genişliği sınırlamalarını önlemek için dahili bir uç nokta kullanın. |
mode |
STRING | Yazılacak veri yapısı. Geçerli değerler için bkz. Desteklenen veri yapıları. |
Bağlantı parametreleri
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
port |
INT | 6379 |
Tair sunucusunun bağlantı noktası numarası. |
password |
String | Boş dize | Tair veritabanının parolası. Parola doğrulamasını devre dışı bırakmak için boş bırakın. |
dbNum |
INT | 0 |
Hedef veritabanının kimliği. |
clusterMode |
BOOLEAN | false |
Küme mimarisini kullanmak için true olarak ayarlayın. Tek başına mod için false olarak ayarlayın. |
Yazma davranışı parametreleri
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
ignoreDelete |
BOOLEAN | false |
Bir geri çekme mesajı alındığında davranışı kontrol eder. false: eklenen verileri ve anahtarını siler. true: eklenen verileri ve anahtarını korur. |
incrMode |
STRING | None |
Havuz yazma modu. None: ekleme işlemi. int: incrValue tarafından tanımlanan sabit artışla INCRBY. float: incrValue tarafından tanımlanan sabit artışla INCRBYFLOAT. dynamic_int: incrValue tarafından adlandırılan sütundan okunan artışla INCRBY. dynamic_float: incrValue tarafından adlandırılan sütundan okunan artışla INCRBYFLOAT. |
incrValue |
STRING | Yok | incrMode değeri int veya float olduğunda bu, sabit artış değeridir. incrMode değeri dynamic_int veya dynamic_float olduğunda bu, artış değerini içeren DDL sütun adıdır. incrMode değeri None olduğunda kullanılmaz. |
Anahtar sona erme parametreleri
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
expiration |
LONG | 0 |
Eklenen anahtarlar için milisaniye cinsinden göreli yaşam süresi (TTL). 0 TTL'yi devre dışı bırakır. |
expirationAt |
LONG | 0 |
Eklenen anahtarlar için milisaniye cinsinden mutlak sona erme zaman damgası. Yalnızca expiration değeri 0 olarak ayarlandığında etkili olur. 0 mutlak sona ermeyi devre dışı bırakır. |
Alan sona erme parametreleri (yalnızca TairHash ve TairTs)
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
fieldExpireMode |
String | None |
TairHash'teki alanlar veya TairTs'deki skey'ler için sona erme modu. None: sona erme yok. millisecond: fieldExpireValue değerine ayarlanan göreli sona erme. unixtime: fieldExpireValue değerine ayarlanan mutlak sona erme. dynamic_millisecond: fieldExpireValue tarafından adlandırılan sütundan okunan göreli sona erme. dynamic_unixtime: fieldExpireValue tarafından adlandırılan sütundan okunan mutlak sona erme. Önemli
TairTs skey'leri |
fieldExpireValue |
String | Yok | fieldExpireMode değeri millisecond veya unixtime olduğunda bu, sabit sona erme değeridir. fieldExpireMode değeri dynamic_millisecond veya dynamic_unixtime olduğunda bu, sona erme değerini içeren DDL sütun adıdır. |
Veri türü eşlemeleri
| Flink türü | Tair türü |
|---|---|
| VARCHAR | STRING |
| DOUBLE | DOUBLE |
Desteklenen veri yapıları
mode parametresi aşağıdaki değerleri kabul eder. Her veri yapısının incrMode değerine göre değişen belirli DDL sütun gereksinimleri vardır.
Redis uyumlu veri yapıları
STRING, LIST, SET, HASHMAP ve SORTEDSET için DDL biçimlerini görmek üzere bkz. Tair (Redis OSS-compatible) bağlayıcısı.
Tair'e özel veri yapıları
| Veri yapısı | **incrMode** |
DDL sütunları | Yazma komutu |
|---|---|---|---|
| TairString | None |
2: key (STRING), value (STRING) | exset key value |
| TairString | int veya float |
1: key (STRING) | exincrby/exincrbyfloat key incrValue |
| TairString | dynamic_int veya dynamic_float |
2: key (STRING), incrValue (STRING) | exincrby/exincrbyfloat key incrValue |
| TairHash | None |
3: key (STRING), field (STRING), value (STRING) | exhset key field value |
| TairHash | int veya float |
2: key (STRING), field (STRING) | exhincrby/exincrbyfloat key field incrValue |
| TairHash | dynamic_int veya dynamic_float |
3: key (STRING), field (STRING), incrValue (STRING) | exhincrby/exincrbyfloat key field incrValue |
| TairZset | None |
3–258: key (STRING), member (STRING), score×N (DOUBLE, en fazla 256 boyut) | exzadd key score member |
| TairZset | int veya float |
2: key (STRING), member (STRING) | exzincyby key member incrValue |
| TairZset | dynamic_int veya dynamic_float |
3: key (STRING), member (STRING), incrValue (STRING) | exzincyby key member incrValue |
| TairBloom | None olmalıdır |
2: key (STRING), item (STRING) | BF.ADD key item |
| TairDoc | None olmalıdır |
3: key (STRING), path (STRING), json (STRING) | JSON.SET key path json |
| TairSearch | None |
4: index (STRING), doc_id (STRING), document (STRING, JSON), mapping (STRING) | TFT.ADDDOC index document docid |
| TairSearch | int veya float |
4: index (STRING), doc_id (STRING), field (STRING), mapping (STRING) | TFT.INCRLONGDOCFIELD/TFT.INCRFLOATDOCFIELD index doc_id field increment |
| TairSearch | dynamic_int veya dynamic_float |
5: index (STRING), doc_id (STRING), field (STRING), mapping (STRING), incrValue (STRING) | TFT.INCRLONGDOCFIELD/TFT.INCRFLOATDOCFIELD index doc_id field increment |
| TairCpc | None olmalıdır |
2: key (STRING), item (STRING) | CPC.UPDATE key item |
| TairGis | None olmalıdır |
3: key (STRING), polygon_name (STRING), polygon_wkt (STRING) | GIS.ADD area polygonName polygonWkt |
| TairRoaring | None olmalıdır |
3: key (STRING), offset (BIGINT), value (BIGINT, 0 veya 1) | TR.SETBIT key offset value |
| TairVector | None olmalıdır |
6: index_name (STRING), pk (STRING), vector_data (STRING), dims (INT), algorithm (STRING), distance_method (STRING) | TVS.HSET index_name key VECTOR vector_data |
| TairTs | None |
4: pkey (STRING, zaman çizelgesi grubu), skey (STRING, tek zaman çizelgesi), timestamp (STRING), value (STRING) | EXTS.S.RAW_MODIFY Pkey Skey timestamp value |
| TairTs | float |
3: pkey (STRING), skey (STRING), timestamp (STRING) | EXTS.S.RAW_INCRBY Pkey Skey timestamp incrValue |
| TairTs | dynamic_float |
4: pkey (STRING), skey (STRING), timestamp (STRING), incrValue (STRING) | EXTS.S.RAW_INCRBY Pkey Skey timestamp incrValue |
TairSearch ve TairVector, veri eklenmeden önce bir indeks ve eşlemenin oluşturulmasını gerektirir. TairSearch içinTFT.CREATEINDEX index mappingskomutunu çalıştırın. TairVector içinTVS.CREATEINDEX index_name dims algorithm distance_methodkomutunu çalıştırın. TairBloom, ilk eklemede varsayılan olarak 100 öğe kapasitesi ve %0,01 hata oranı ile bir anahtar oluşturur. Çok boyutlu TairZset sıralaması için tüm skor boyutları aynı biçimi kullanmalıdır.
Örnekler
TairSearch havuz tablosuna veri yazma
Bu örnekte TairSearch indeksi olarak index_name, belge kimliği olarak doc_id, JSON belge gövdesi olarak doc ve indeks eşleme tanımı olarak mapping kullanılır.
CREATE TEMPORARY TABLE datagen_stream (
v STRING, -- document content
p STRING -- mapping definition
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE tair_output (
index_name STRING, -- TairSearch index name
doc_id STRING, -- document ID
doc STRING, -- document body (JSON)
mapping STRING, -- index mapping
PRIMARY KEY (index_name) NOT ENFORCED
) WITH (
'connector' = 'tair',
'mode' = 'tairsearch',
'host' = '${tairHost}',
'port' = '${tairPort}',
'password' = '${password}'
);
INSERT INTO tair_output
SELECT
'index' AS index_name,
v AS doc_id,
p AS doc,
'{"mappings":{"_source":{"enabled":true},"properties":{"product_id":{"type":"keyword","ignore_above":128},"product_name":{"type":"text"}}}}' AS mapping
FROM datagen_stream;
Dinamik artış kullanarak veri yazma (incrMode=dynamic_float ile TairString)
Bu örnekte TairString anahtarı olarak key ve kayıt başına artış değeri olarak step kullanılır; artış değeri step sütunundan okunur.
CREATE TEMPORARY TABLE datagen_stream (
v STRING, -- key
p STRING -- increment value per record
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE tair_output (
key STRING, -- TairString key
step STRING, -- increment value (column referenced by incrValue)
PRIMARY KEY (key) NOT ENFORCED
) WITH (
'connector' = 'tair',
'mode' = 'tairstring',
'host' = '${tairHost}',
'port' = '${tairPort}',
'password' = '${password}',
'incrMode' = 'dynamic_float',
'incrValue' = 'step'
);
INSERT INTO tair_output
SELECT *
FROM datagen_stream;
Sabit artış kullanarak veri yazma (incrMode=float ile TairString)
Bu örnekte her yazma işleminde her anahtara uygulanan 11.11 sabit bir artış değeri kullanılır.
CREATE TEMPORARY TABLE datagen_stream (
v STRING,
p STRING
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE tair_output (
key STRING, -- TairString key
PRIMARY KEY (key) NOT ENFORCED
) WITH (
'connector' = 'tair',
'mode' = 'tairstring',
'host' = '${tairHost}',
'port' = '${tairPort}',
'password' = '${password}',
'incrMode' = 'float',
'incrValue' = '11.11'
);
INSERT INTO tair_output
SELECT v
FROM datagen_stream;
Alan düzeyinde TTL ile veri yazma (fieldExpireMode=millisecond ile TairHash)
Bu örnekte, her alan yazıldıktan 1000 milisaniye sonra sona erecek şekilde bir TairHash havuz tablosuna yazma işlemi yapılır.
CREATE TEMPORARY TABLE datagen_stream (
v STRING,
p STRING,
s STRING
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE tair_output (
key STRING, -- TairHash key
field STRING, -- hash field
value STRING, -- field value
PRIMARY KEY (key) NOT ENFORCED
) WITH (
'connector' = 'tair',
'mode' = 'tairhash',
'host' = '${tairHost}',
'port' = '${tairPort}',
'password' = '${password}',
'fieldExpireMode' = 'millisecond',
'fieldExpireValue' = '1000'
);
INSERT INTO tair_output
SELECT v, p, s
FROM datagen_stream;
Sonraki adımlar
Tair (Redis OSS-compatible) bağlayıcısı — Redis uyumlu veri yapıları için söz dizimi örnekleri
Ölçümler — bağlayıcı ölçümlerinin tam listesi ve tanımları