Tüm Ürünler
Search
Belge Merkezi

DataWorks:PostgreSQL veri kaynağı

Son Güncelleme:Oct 05, 2026

PostgreSQL veri kaynağı, PostgreSQL'den veri okumak ve PostgreSQL'e veri yazmak için çift yönlü bir kanal sağlar. Veri eşitleme görevlerini sihirbaz modunda veya komut dosyası modunda yapılandırabilirsiniz. Bu konuda, DataWorks'ün PostgreSQL için veri eşitlemeyi nasıl desteklediği açıklanmaktadır.

Desteklenen sürümler

PostgreSQL sürümleri 10, 11, 12, 13, 14, 15 ve 16.4 için veri kaynakları yapılandırabilirsiniz. PostgreSQL veritabanınızın sürümünü kontrol etmek için aşağıdaki ifadeyi çalıştırın.

SHOW SERVER_VERSION;

Sınırlamalar

Çevrimdışı okuma ve yazma

Not

Görüntülerden veri okuyabilirsiniz.

  • PostgreSQL veri kaynağı, SCRAM-SHA-256 yöntemi dahil olmak üzere parola tabanlı kimlik doğrulamayı destekler. PostgreSQL veritabanında parolayı veya kimlik doğrulama yöntemini değiştirirseniz, veri kaynağı yapılandırmasını güncellemeniz, bağlantıyı yeniden test etmeniz ve değişiklikleri doğrulamak için ilgili görevleri manuel olarak çalıştırmanız gerekir.

  • PostgreSQL

  • PostgreSQL'de bir tablo veya sütun adı rakamla başlıyorsa, büyük/küçük harfe duyarlıysa veya tire (-) içeriyorsa, adı çift tırnak içine ("") almanız gerekir. Aksi takdirde, PostgreSQL eklentisi veri okuyamaz veya yazamaz. PostgreSQL Reader ve Writer eklentilerinde çift tırnak ("") bir JSON anahtar sözcüğüdür. Bu nedenle, çift tırnakları ters eğik çizgi (\) ile kaçış karakteriyle belirtmeniz gerekir. Örneğin, bir tablonun adı 123Test ise, kaçış karakteri eklenmiş ad \"123Test\" şeklindedir.

    Not
    • Hem açılış hem de kapanış çift tırnakları ters eğik çizgi (\) ile kaçış karakteriyle belirtilmelidir.

    • Sihirbaz modu kaçış karakteri eklemeyi desteklemez. Karakterlere kaçış karakteri eklemek için komut dosyası moduna geçmeniz gerekir.

    Aşağıdaki kod, komut dosyası modunda kaçış karakterlerinin nasıl ekleneceğine ilişkin bir örneği göstermektedir.

    "parameter": {
        "datasource": "abc",
        "column": [
            "id",
            "\"123Test\"", //Add escape characters
    ],
    "where": "",
    "splitPk": "id",
    "table": "public.wpw_test"
    },
  • Benzersiz bir dizine dayalı olarak PostgreSQL veri kaynağındaki verilerin güncellenmesi desteklenmez. Verileri güncellemek için önce verileri geçici bir tabloya yazmalı ve ardından RENAME işlemini kullanmalısınız.

Gerçek zamanlı okuma

Veri Entegrasyonundaki gerçek zamanlı eşitleme görevleri için aşağıdaki sınırlamalar geçerlidir:

  • Veri Entegrasyonu, ADD COLUMN işlemi için özel destek sağlar:

    • Kısıtlama: Bir ADD COLUMN işlemini, tek bir işlemde diğer ADD COLUMN, DROP COLUMN veya diğer DDL ifadeleriyle birleştiremezsiniz.

      Önemli

      ADD COLUMN işlemini DROP COLUMN、RENAME COLUMN veya diğer ALTER COLUMN işlemleri gibi diğer işlemlerle birlikte kullanırsanız, veri eşitleme görevi düzgün çalışmayabilir.

    • Sınırlama: ADD COLUMN dışındaki DDL işlemleri tanınamaz.

  • ALTER TABLE/CREATE TABLE desteklenmez.

  • TEMPORARY tabloların, UNLOGGED tabloların ve Hyper tabloların çoğaltılması desteklenmez. PostgreSQL, bu tür tablolar için WAL günlük ayrıştırmasına abone olma mekanizması sağlamaz.

  • Sequences (serial/bigserial/identity) çoğaltması desteklenmez.

  • TRUNCATE işlemi desteklenmez.

  • Büyük nesne çoğaltma (Bytea) desteklenmez.

  • Görüntülerin, materialized view'ların ve foreign table'ların çoğaltılması desteklenmez.

  • PostgreSQL, tek tablo gerçek zamanlı veya tüm veritabanı gerçek zamanlı eşitleme için kaynak olarak kullanıldığında, yalnızca hesabın owner izinlerine sahip olduğu tablolar eşitlenebilir.

Desteklenen sütun türleri

Çoğu PostgreSQL veri türü desteklenir. Ancak, bazı türler toplu eşitleme okuma ve yazma işlemleri için desteklenmez. Devam etmeden önce veri türlerinizi kontrol edin.

Aşağıdaki tabloda PostgreSQL için tür dönüştürme eşlemeleri listelenmiştir.


Tür kategorisi


PostgreSQL veri türü


Tamsayı


BIGINT, BIGSERIAL, INTEGER, SMALLINT ve SERIAL


Kayan nokta


DOUBLE PRECISION, MONEY, NUMERIC ve REAL


Dize


VARCHAR, CHAR, TEXT, BIT ve INET


Tarih ve saat


DATE, TIME ve TIMESTAMP


Boolean


BOOL


İkili


BYTEA

Not
  • Yukarıda listelenenler dışındaki sütun türleri desteklenmez.

  • PostgreSQL Reader'da MONEY, INET ve BIT türleri, a_inet::varchar benzeri bir söz dizimi kullanılarak dönüştürülmelidir.

Veri eşitlemeden önceki hazırlıklar

DataWorks'te veri eşitlemeden önce, PostgreSQL veri eşitleme görevlerinin DataWorks'te düzgün şekilde yapılandırılabilmesini ve çalıştırılabilmesini sağlamak için bu bölümde açıklandığı gibi PostgreSQL ortamını hazırlamanız gerekir. Aşağıdaki bölümlerde PostgreSQL eşitlemesi için hazırlık adımları açıklanmaktadır.

Hazırlık 1: Hesap oluşturma ve izinleri yapılandırma

Sonraki işlemler için bir veritabanı giriş hesabı planlamanız gerekir. Bu hesabın veritabanında REPLICATION、 LOGIN izinlerine sahip olması gerekir.

Not

Gerçek zamanlı eşitleme yalnızca mantıksal çoğaltma mekanizmasını destekler. Mantıksal çoğaltma, bir veya daha fazla abonenin yayıncı düğümündeki bir veya daha fazla yayına abone olduğu bir yayınlama ve abonelik modeli kullanır. Aboneler, abone oldukları yayınlardan veri çeker.

Bir tablonun mantıksal çoğaltması genellikle yayıncı veritabanındaki verilerin anlık görüntüsünü alarak ve bunu aboneye kopyalayarak başlar. Anlık görüntü tamamlandıktan sonra, yayıncıdaki değişiklikler aboneye gerçek zamanlı olarak gönderilir.

  1. Bir hesap oluşturun.

    Daha fazla bilgi için bkz. Hesap oluşturma.

  2. İzinleri yapılandırın.

    Hesabın replication iznine sahip olup olmadığını kontrol edin.

    select userepl from pg_user where usename='xxx'

    Beklenen sonuç True değeridir. Sonuç False ise, hesabın izni yoktur. İzni vermek için aşağıdaki ifadeyi çalıştırabilirsiniz.

    ALTER USER <user> REPLICATION;

Hazırlık 2: Bekleme veritabanının desteklenip desteklenmediğini kontrol etme

SELECT pg_is_in_recovery()

Yalnızca birincil veritabanı desteklenir. Beklenen sonuç False değeridir. Sonuç True ise, veritabanı bir bekleme veritabanıdır. Gerçek zamanlı eşitleme bekleme veritabanlarını desteklemez. Veri kaynağı yapılandırmasını birincil veritabanını işaret edecek şekilde değiştirmeniz gerekir. Daha fazla bilgi için bkz. Veri kaynağını yapılandırma.

Hazırlık 3: wal_level ayarının logical olup olmadığını kontrol etme

show wal_level

wal_level, wal_log düzeyini belirtir. Beklenen sonuç logical değeridir. Aksi takdirde, mantıksal çoğaltma mekanizması desteklenmez.

Hazırlık 4: Bir wal_sender işleminin başlatılıp başlatılamayacağını kontrol etme

-- Query max_wal_senders show max_wal_senders; -- Query the number of pg_stat_replication entries select count(*) from pg_stat_replication

Eğer max_wal_senders boş değilse ve değeri pg_stat_replication içindeki max_wal_senders girdi sayısından büyükse, boşta olan wal_sender işlemleri mevcuttur. PostgreSQL veritabanı, günlükleri abonelere göndermek için veri eşitleme programı adına wal_sender işlemlerini başlatır.

Eşitlenmesi gereken her tablo için gerekli izinleri vermek amacıyla ALTER TABLE [tableName] REPLICA IDENTITY FULL ifadesini manuel olarak çalıştırmanız gerekir. Aksi takdirde, gerçek zamanlı eşitleme görevi başarısız olur.

Bir PostgreSQL gerçek zamanlı eşitleme görevi başlatıldıktan sonra, veritabanında yuvalar (slots) ve yayınlar (publications) otomatik olarak oluşturulur. Yuva adı biçimi di_slot_ + eşitleme görevi kimliği, yayın adı biçimi ise di_pub_ + Çözüm Kimliği şeklindedir. Gerçek zamanlı eşitleme görevi durdurulduktan veya dağıtımı kaldırıldıktan sonra, yuvaları ve yayınları manuel olarak silmeniz gerekir. Aksi takdirde, PostgreSQL WAL dosyaları sürekli olarak büyüyebilir. DataWorks Veri Entegrasyonu görev listesinde eşitleme görevi kimliğini arayarak ilgili görevi bulabilir ve görevin durumunu ve zamanlama yapılandırmalarını kontrol ederek görevin durdurulup durdurulmadığını veya dağıtımının kaldırılıp kaldırılmadığını doğrulayabilirsiniz.

Veri kaynağı ekleme

DataWorks'te bir eşitleme görevi geliştirmeden önce, Veri kaynağı yapılandırması bölümündeki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolundaki parametre açıklamalarını görüntüleyebilirsiniz.

PostgreSQL veritabanınızda SSL kimlik doğrulaması etkinleştirildiyse, DataWorks'te bir PostgreSQL veri kaynağı eklerken SSL kimlik doğrulamasını da etkinleştirmeniz gerekir. Daha fazla bilgi için bkz. PostgreSQL veri kaynağı için SSL kimlik doğrulaması ekleme.

Veri eşitleme görevi geliştirme: PostgreSQL eşitleme işlemi kılavuzu

Bir eşitleme görevini yapılandırmaya yönelik giriş noktası ve yordam hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.

Tek tablo toplu eşitleme görevi yapılandırma kılavuzu

Tüm veritabanı toplu okuma ve tüm veritabanı gerçek zamanlı okuma eşitleme görevi yapılandırma kılavuzu

Yordam hakkında daha fazla bilgi için bkz. Tüm veritabanı toplu eşitleme görevi yapılandırma ve Tüm veritabanı gerçek zamanlı eşitleme görevi yapılandırma.

SSS

  • Birincil-bekleme eşitleme veri kurtarma sorunu

    Birincil-bekleme eşitleme sorunu, PostgreSQL'in birincil-bekleme olağanüstü durum kurtarma kullandığı ve bekleme veritabanının verileri birincil veritabanından sürekli olarak kurtardığı bir senaryoyu ifade eder. Birincil ve bekleme veri eşitlemesi arasında bir zaman farkı olduğundan, özellikle ağ gecikmesi gibi belirli durumlarda, bekleme veritabanında kurtarılan veriler birincil veritabanından önemli ölçüde farklı olabilir. Bekleme veritabanından eşitlenen veriler, mevcut zamanın tam bir anlık görüntüsü değildir.

  • Tutarlılık kısıtlaması

    PostgreSQL, güçlü tutarlılığa sahip bir veri sorgulama arabirimi sağlayan bir RDBMS sistemidir. Örneğin, bir eşitleme görevi çalışırken ve diğer yazarlar veritabanına veri yazarken, PostgreSQL Reader veritabanının anlık görüntü özelliği nedeniyle yeni yazılan verileri almaz.

    Yukarıdakiler, PostgreSQL Reader'ın tek iş parçacıklı moddaki veri eşitleme tutarlılığı özelliklerini açıklamaktadır. PostgreSQL Reader, yapılandırmanıza göre eşzamanlı veri çıkarma işlemleri gerçekleştirebilir, bu nedenle kesin veri tutarlılığı garanti edilemez.

    PostgreSQL Reader, splitPk'ye göre verileri böldükten sonra, veri eşitlemeyi tamamlamak için birden çok eşzamanlı görev sırayla başlatılır. Bu eşzamanlı görevler aynı okuma işlemine ait değildir ve aralarında zaman aralıkları bulunur. Bu nedenle, veriler eksiksiz ve tutarlı bir veri anlık görüntüsü değildir.

    Çok iş parçacıklı işlemler için tutarlı anlık görüntüler teknik olarak mümkün değildir. Bu durum yalnızca mühendislik açısından ele alınabilir. Aşağıdaki çözümler ödünleşimler içerir. Durumunuza göre seçim yapabilirsiniz.

    • Veri parçalama olmayan tek iş parçacıklı eşitleme kullanın. Dezavantajı daha yavaş hızdır, ancak tutarlılığı sağlar.

    • Mevcut verilerin statik olduğundan emin olmak için diğer veri yazarlarını durdurun; örneğin, tabloları kilitleyerek veya bekleme veritabanı eşitlemesini durdurarak. Dezavantajı, çevrimiçi iş üzerinde potansiyel etki yaratmasıdır.

  • Veritabanı kodlama sorunu

    PostgreSQL, sunucu tarafında yalnızca EUC_CN ve UTF-8 basitleştirilmiş Çin kodlamalarını destekler. PostgreSQL Reader, alt düzeyde veri çıkarma için JDBC kullanır. JDBC, çeşitli kodlamaları yerel olarak destekler ve alt düzeyde kodlama dönüştürme işlemleri gerçekleştirir. Bu nedenle, PostgreSQL Reader'ın bir kodlama belirtmesine gerek yoktur ve kodlamaları otomatik olarak algılayıp dönüştürebilir.

    PostgreSQL'in alt düzey yazma kodlaması yapılandırılmış kodlamasıyla tutarsızsa, PostgreSQL Reader bu sorunu algılayamaz ve bir çözüm sunamaz. Dışa aktarılan veriler bozuk karakterler içerebilir.

  • Artımlı veri eşitleme yöntemleri

    PostgreSQL Reader, veri çıkarma için JDBC SELECT ifadelerini kullanır. Bu nedenle, artımlı verileri çıkarmak için SELECT…WHERE… kullanabilirsiniz. Yöntemler şunlardır:

    • Çevrimiçi bir uygulama veritabanına veri yazarken, eklemeler, güncellemeler ve silmeler (mantıksal silmeler) dahil olmak üzere modify alanını değiştirme zaman damgasıyla doldurur. Bu tür uygulamalar için PostgreSQL Reader'ın where koşuluna önceki eşitleme aşamasından zaman damgasını eklemesi yeterlidir.

    • Yeni eklenen sıralı veriler için PostgreSQL Reader'ın where koşuluna önceki aşamadaki maksimum otomatik artan kimliği eklemesi yeterlidir.

    İş seviyesinde yeni ve değiştirilen verileri ayırt edecek bir sütun yoksa, PostgreSQL Reader artımlı veri eşitleme gerçekleştiremez ve yalnızca tam verileri eşitleyebilir.

  • SQL güvenliği

    PostgreSQL Reader, özel SELECT çıkarma ifadelerini uygulamanız için size querySql ifadesini sağlar. PostgreSQL Reader, querySql ifadesi üzerinde herhangi bir güvenlik doğrulaması gerçekleştirmez.

  • Bir eşitleme görevi yapılandırırken istediğiniz tablo adını seçemiyorsanız, sorunu şu şekilde giderin:

    • Veri kaynağının bağlı olup olmadığını kontrol edin.

    • Veri kaynağı için kullanılan PostgreSQL hesabının gerekli tablo izinlerine sahip olup olmadığını kontrol edin.

    • Veritabanında çok sayıda tablo varsa, tablo adını doğrudan yazarak arama yapmanızı öneririz.

  • PostgreSQL, parçalı tablo eşitlemeyi desteklemez. Eşitlemeniz gereken çok sayıda PostgreSQL tablonuz varsa, tüm veritabanı eşitleme görevi kullanmanızı öneririz. Daha fazla bilgi için bkz. Tüm veritabanı eşitleme görevi yapılandırma kılavuzu.

Ek 1: Komut dosyası demosu ve parametre açıklaması

Kod düzenleyicisini kullanarak toplu eşitleme görevi yapılandırma

Toplu eşitleme görevini kod düzenleyicisini kullanarak yapılandırmak istiyorsanız, komut dosyasındaki ilgili parametreleri birleşik komut dosyası format gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için bkz. Komut dosyası modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyicisini kullanarak toplu eşitleme görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklamaktadır.

Reader komut dosyası demosu

Bir PostgreSQL veritabanından veri çıkaran bir işi yapılandırmak için komut dosyası modunu kullanın. Daha fazla bilgi için bkz. Komut dosyası modunda toplu eşitleme görevi yapılandırma.

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"postgresql",// The plugin name. "parameter":{ "datasource":"",// The data source. "column":[// The columns. "col1", "col2" ], "where":"",// The filter condition. "splitPk":"",// The column used as the split key for data sharding. Data synchronization starts concurrent tasks for data synchronization. "table":""// The table name. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true, // A value of false for throttle indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency of the job. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Reader komut dosyası parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

datasource

Veri kaynağı adı. Komut dosyası modu, veri kaynakları eklemenize olanak tanır. Bu parametrenin değeri, eklediğiniz veri kaynağının adıyla aynı olmalıdır.

Evet

Yok

table

Veri eşitlemek istediğiniz tablonun adı.

Evet

Yok

column

Yapılandırılan tabloda eşitlenecek sütun adları kümesi, bir JSON dizisi olarak açıklanır. Varsayılan olarak, [*] gibi tüm sütunlar kullanılır.

  • Sütun budama desteklenir; yani, eşitlemek için belirli sütunları seçebilirsiniz.

  • Sütun yeniden sıralama desteklenir; yani, sütunlar tablo şemasından farklı bir sırada eşitlenebilir.

  • Sabitler desteklenir. MySQL SQL söz dizimi formatını takip etmeniz gerekir; örneğin, ["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2,3" , "true"] .

    • id normal bir sütun adıdır.

    • table ayrılmış bir sözcük içeren bir sütun adıdır.

    • 1 bir tamsayı sabitidir.

    • 'mingya.wmy' bir dize sabitidir (bir çift tek tırnak gereklidir).

    • 'null' bir dizedir.

    • to_char(a+1) dize uzunluğunu hesaplayan bir işlevdir.

    • 2,3 bir kayan nokta sayısıdır.

    • true bir Boolean değeridir.

  • column, eşitlenecek sütun kümesini açıkça belirtmelidir ve boş bırakılamaz.

Evet

Yok

splitFactor

Bölme faktörü. Veri bölme sayısını yapılandırabilirsiniz. Birden çok eşzamanlı iş parçacığı yapılandırılırsa, veriler eşzamanlılık × splitFactor parçaya bölünür. Örneğin, eşzamanlılık 5 ve splitFactor 5 ise, veriler 5 × 5 = 25 parçaya bölünür ve 5 eşzamanlı iş parçacığı üzerinden yürütülür.

Not

Önerilen değer aralığı: 1 ila 100. Aşırı büyük değerler bellek yetersizliği (OOM) hatalarına neden olabilir.

Hayır

5

splitPk

PostgreSQL Reader veri çıkarırken, splitPk belirtirseniz, splitPk tarafından temsil edilen sütun veri parçalama için kullanılır. Veri eşitleme, eşitleme performansını artırmak için eşzamanlı görevler başlatır:

  • splitPk için tablo birincil anahtarını kullanmanızı öneririz; çünkü birincil anahtarlar genellikle eşit dağıtılır, bu da ortaya çıkan parçalardaki veri yoğun nokta riskini azaltır.

  • splitPk yalnızca tamsayı veri parçalamayı destekler. Dize, kayan nokta, tarih ve diğer türler desteklenmez. Desteklenmeyen bir tür belirtirseniz, splitPk özelliği yok sayılır ve eşitleme için tek bir kanal kullanılır.

  • splitPk belirtilmezse, splitPk sağlanmaması veya splitPk değerinin boş bırakılması durumunda, veri eşitleme tablo verilerini eşitlemek için tek bir kanal kullanır.

Hayır

Yok

where

Filtre koşulu. PostgreSQL Reader, belirtilen column, table ve where koşullarına göre SQL'i birleştirir ve SQL'e dayanarak veri çıkarır. Örneğin, test sırasında where koşulunu bir iş senaryosunu belirtmek için kullanabilirsiniz. Tipik olarak, mevcut günün verileri eşitlenir. Where koşulunu id>2 and sex=1 şeklinde belirtebilirsiniz:

  • where koşulu, artımlı veri eşitleme için etkili bir şekilde kullanılabilir.

  • where koşulu yapılandırılmazsa veya boş bırakılırsa, tam tablo veri eşitleme gerçekleştirilir.

Hayır

Yok

querySql (gelişmiş mod, sihirbaz modunda kullanılamaz)

Bazı iş senaryolarında, where yapılandırması filtre koşullarını tanımlamak için yetersiz kalabilir. Özel filtre SQL'sini tanımlamak için bu parametreyi kullanabilirsiniz. Bu parametre yapılandırıldığında, veri eşitleme sistemi tabloları, sütunları ve splitPk yapılandırmalarını yok sayar ve verileri filtrelemek için doğrudan bu parametrenin içeriğini kullanır. Örneğin, çoklu tablo JOIN işleminden sonra veri eşitlemek için select a,b from table_a join table_b on table_a.id = table_b.id kullanın. querySql yapılandırdığınızda, PostgreSQL Reader tablo, sütun ve where yapılandırmalarını yok sayar.

Hayır

Yok

fetchSize

Bu parametre, eklenti ile veritabanı sunucusu arasında her partide alınan kayıt sayısını belirtir. Bu değer, Veri Entegrasyonu ile sunucu arasındaki ağ etkileşimlerinin sayısını belirler ve veri çıkarma performansını önemli ölçüde artırabilir.

Not

Çok büyük bir fetchSize değeri (>2048), veri eşitleme işleminin bellek yetersizliği (OOM) hatası vermesine neden olabilir.

Hayır

512

Writer komut dosyası demosu

Aşağıda bir komut dosyası yapılandırma örneği verilmiştir. Daha fazla bilgi için yukarıdaki parametre açıklamalarına bakın.

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"postgresql",// The plugin name. "parameter":{ "datasource":"",// The data source. "column":[// The columns. "col1", "col2" ], "table":"",// The table name. "preSql":[],// The SQL statements executed before the data synchronization task. "postSql":[],// The SQL statements executed after the data synchronization task. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// A value of false for throttle indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency of the job. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Writer komut dosyası parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

datasource

Veri kaynağı adı. Komut dosyası modu, veri kaynakları eklemenize olanak tanır. Bu parametrenin değeri, eklediğiniz veri kaynağının adıyla aynı olmalıdır.

Evet

Yok

table

Veri eşitlemek istediğiniz tablonun adı.

Evet

Yok

writeMode

Yazma modu. Şu anda insert ve copy modları desteklenmektedir:

  • insert: Verileri PostgreSQL'e yazmak için PostgreSQL insert into...values... ifadesini yürütür. Birincil anahtar veya benzersiz dizin çakışması oluşursa, eşitlenecek kayıt kirli veri haline gelir. Önce insert modunu kullanmanızı öneririz.

  • copy: PostgreSQL, verileri tablolar ve dosyalar (standart çıktı, standart giriş) arasında kopyalamak için copy komutunu sağlar. Veri Entegrasyonu, verileri tablolara yüklemek için copy from kullanımını destekler. Bu modu yalnızca performans sorunlarıyla karşılaştığınızda denemenizi öneririz.

Hayır

insert

column

Hedef tabloya veri yazılacak sütunlar, virgülle ayrılmış olarak belirtilir. Örneğin, "column":["id","name","age"]. Tüm sütunlara sırayla veri yazmak için () kullanın; örneğin, "column":[""].

Evet

Yok

preSql

Veri eşitleme görevi çalışmadan önce yürütülecek SQL ifadeleri. Şu anda sihirbaz modu yalnızca bir SQL ifadesine izin verirken, komut dosyası modu eski verileri temizlemek gibi amaçlarla birden çok SQL ifadesini destekler.

Hayır

Yok

postSql

Veri eşitleme görevi çalıştıktan sonra yürütülecek SQL ifadeleri. Şu anda sihirbaz modu yalnızca bir SQL ifadesine izin verirken, komut dosyası modu zaman damgası eklemek gibi amaçlarla birden çok SQL ifadesini destekler.

Hayır

Yok

batchSize

Her partide gönderilen kayıt sayısı. Bu değer, Veri Entegrasyonu ile PostgreSQL arasındaki ağ etkileşimlerinin sayısını önemli ölçüde azaltabilir ve genel aktarım hızını artırabilir. Ancak, bu değeri çok büyük ayarlamak Veri Entegrasyonu işleminin bellek yetersizliği (OOM) hatası vermesine neden olabilir.

Hayır

1.024

pgType

PostgreSQL'e özel türler için dönüştürme yapılandırması. Desteklenen türler arasında bigint[], double[], text[], Jsonb ve JSON bulunur. Aşağıda bir yapılandırma örneği verilmiştir.

{
    "job":
    {
        "content":
        [{
            "reader": {...},
            "writer":
            {
                "parameter":
                {
                    "column":
                    [
                        // Destination table field list
                        "bigint_arr",
                        "double_arr",
                        "text_arr",
                        "jsonb_obj",
                        "json_obj"
                    ],
                    "pgType":
                    {
                        // Special type settings. The key is the field name of the destination table, and the value is the field type.
                        "bigint_arr": "bigint[]",
                        "double_arr": "double[]",
                        "text_arr": "text[]",
                        "jsonb_obj": "jsonb",
                        "json_obj": "json"
                    }

                }
            }
        }]
    }
}

Hayır

Yok

Ek 2: PostgreSQL veri kaynağı için SSL kimlik doğrulaması ekleme

PostgreSQL SSL kimlik doğrulama dosyası açıklaması

DataWorks'te bir PostgreSQL veri kaynağı bağlantısı oluştururken veya değiştirirken SSL kimlik doğrulamasını yapılandırabilirsiniz. SSL kimlik doğrulama yapılandırma parametreleri aşağıda açıklanmıştır.

PostgreSQL veritabanı

DataWorks PostgreSQL veri kaynağı yapılandırması

SSL bağlantı şifrelemesi

İstemci şifrelemesi

ACL yapılandırması

Yapılandırma öğesi

Açıklama

Etkin

Devre dışı

Yok

Truststore sertifika dosyası

İsteğe bağlı. İstemci, sunucuyu kimlik doğrulamak için bu sertifikayı kullanır.

  • Yapılandırılmadı: Normal bir bağlantı kullanılır.

  • Yapılandırıldı: SSL şifreli bir bağlantı kullanılır.

Etkin

ACL yapılandırması prefer olarak ayarlandı

  • Keystore sertifika dosyası

  • Özel anahtar dosyası

  • Özel anahtar parolası

Hem Keystore sertifika dosyası hem de Özel anahtar dosyası isteğe bağlıdır. ACL yapılandırması prefer olarak ayarlandığında, sunucu istemci sertifikası doğrulamasını zorunlu kılmaz.

  • Özel anahtar dosyası şifrelenmemişse, veritabanına bağlanmak için SSL şifreli bir bağlantı kullanılır ve özel anahtar dosyası doğrulanır.

  • Özel anahtar dosyası şifrelenmişse, Özel anahtar dosyasını doğru şekilde doğrulamak ve bağlantı kurmak için Özel anahtar parolasını yapılandırmanız gerekir.

ACL yapılandırması verify-ca olarak ayarlandı

  • Keystore sertifika dosyası: Gereklidir. Bu, istemcinin kimliğini sunucuya kanıtlamak için kullandığı istemci CA sertifikasıdır.

  • Özel anahtar dosyası: Gereklidir. İstemci, halka açık olmayan bu özel anahtar dosyasına sahiptir. Kimlik doğrulama için sunucuya yüklenen Keystore sertifika dosyası ile birlikte kullanılır.

  • Özel anahtar parolası: İsteğe bağlı. Özel anahtar dosyası parola korumalıysa, özel anahtar parolasını sağlamanız gerekir. Aksi takdirde, boş bırakabilirsiniz.

Not
  • ACL yapılandırması prefer olarak ayarlandığında, istemci içeriği doğrulama için zorunlu kılınmaz.

    • SSL kimlik doğrulaması için hiçbir dosya yapılandırılmazsa, normal bir bağlantı kullanılır.

    • SSL kimlik doğrulaması için kimlik doğrulama dosyaları eklenirse, yukarıdaki tabloda ilgili açıklamalara bakın.

  • ACL yapılandırması verify-ca olarak ayarlandığında, veri kaynağını oluşturmak için Keystore sertifika dosyası, Özel anahtar dosyası ve Özel anahtar parolasını yapılandırın.

PostgreSQL SSL kimlik doğrulama dosyalarını elde etme

Bu bölümde, SSL kimlik doğrulama sertifikalarını oluşturmak için örnek olarak bir ApsaraDB RDS for PostgreSQL örneği kullanılmaktadır.

  1. Truststore sertifika dosyasını edinin.

    Truststore sertifika dosyasını elde etme hakkında daha fazla bilgi için bkz. SSL şifreli bağlantı yapılandırma.

    1. RDS örnek listesine gidin, ilgili bölgedeki RDS örneğine tıklayın ve ardından örnek ayrıntıları sayfasına gitmek için hedef örnek kimliğine tıklayın.

    2. Korumak istediğiniz bağlantı dizesini seçin.

      1. Sol gezinme bölmesinde, Data Security seçeneğine tıklayın.

      2. SSL sekmesine tıklayın.

      3. Use Cloud Certificate seçeneğine tıklayın.

      4. Configure Database Certificate (Prevent Database Spoofing) satırında, Modify seçeneğine tıklayın.

      5. Select Connection String to Protect iletişim kutusunda, hedef bağlantı dizesini (örneğin, iç ağ adresi) seçin.

      6. OK seçeneğine tıklayın.

    Not
    • Genel uç nokta etkinleştirilirse, hem iç hem de genel uç noktalar görüntülenir. Bulut sertifikası yalnızca bir uç noktayı koruyabilir. İç uç nokta nispeten daha güvenli olduğundan, genel uç noktayı korumanızı öneririz. İç ve genel uç noktaları görüntüleme hakkında daha fazla bilgi için bkz. İç ve genel uç noktaları görüntüleme.

    • Hem iç hem de genel uç noktaları korumanız gerekiyorsa, bkz. Özel sertifika yapılandırma.

    • Bulut sertifikasını yapılandırdıktan sonra, örneğin Running Status durumu Modifying SSL olarak değişir. Bu durum yaklaşık üç dakika sürer. Çalışma durumu Running olarak değişene kadar bekleyin ve ardından devam edin.

    c. Truststore sertifikası dosyasını elde etmek için Download CA Certificate seçeneğine tıklayın.

    İndirilen CA sertifikası paketi üç dosya içerir. DataWorks'te PostgreSQL veri kaynağını yapılandırırken, .pem uzantılı dosyayı veya .p7b uzantılı dosyayı Truststore sertifika dosyası yapılandırma öğesine yükleyin.

  2. Keystore sertifika dosyası, Özel anahtar dosyası ve Özel anahtar parolasını edinin ve yapılandırın.

    Önkoşullar: SSL şifreli bağlantı yapılandırma veya özel sertifika yapılandırma işlemlerini tamamladınız ve OpenSSL aracına sahipsiniz.

    Not

    Linux sistemi kullanıyorsanız, OpenSSL önceden yüklenmiştir. Windows sistemi kullanıyorsanız, OpenSSL yazılım paketini indirin ve yükleyin.

    Keystore sertifika dosyası, Özel anahtar dosyası ve Özel anahtar parolasını elde etme ve yapılandırma hakkında daha fazla bilgi için bkz. İstemci sertifikası yapılandırma.

    1. Linux sisteminde OpenSSL aracını kullanın veya Windows sisteminde OpenSSL yazılımını yükleyerek kendinden imzalı bir sertifika (ca1.crt) ve bunun özel anahtarını (ca1.key) oluşturun.

      openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1"
    2. Bir istemci sertifikası imzalama isteği dosyası (client.csr) ve bir istemci sertifikası özel anahtarı (client.key) oluşturun.

      openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<client_username>"

      Bu komutta, -subj parametresinden sonraki CN değeri, istemcinin veritabanına erişmek için kullandığı kullanıcı adı olarak ayarlanmalıdır.

    3. İstemci sertifikasını (client.crt) oluşturun.

      openssl x509 -req -in client.csr -text -days 365  -CA ca1.crt -CAkey ca1.key -CAcreateserial  -out client.crt
    4. RDS PostgreSQL sunucunuz istemci CA sertifikası doğrulaması gerektiriyorsa, oluşturulan istemci kendinden imzalı sertifika ca1.crt dosyasını açın, sertifika içeriğini kopyalayın ve istemci CA sertifikası olarak Client CA Certificate Public Key Content iletişim kutusuna yapıştırın.

      Configure Client CA Certificate panelinde, Enable Client CA Certificate seçeneğine tıklayın. Görüntülenen iletişim kutusunda, oluşturulan CA sertifikasının (ca1.crt) genel anahtar içeriğini Public Key metin kutusuna yapıştırın ve ardından OK seçeneğine tıklayın. İstemci CA sertifikası değiştirildikten sonra, örnek otomatik olarak yeniden başlatılır.

    5. RDS tarafında istemci CA sertifikasını yapılandırdıktan sonra, DataWorks'te PostgreSQL veri kaynağını yapılandırırken istemci sertifikası özel anahtarı client.key dosyasını client.pk8 dosyasına dönüştürün ve client.pk8 dosyasını DataWorks PostgreSQL veri kaynağı yapılandırmasındaki Özel anahtar dosyası yapılandırma öğesine yükleyin.

      cp client.key client.pk8
    6. Özel anahtar parolasını yapılandırın.

      openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DES
      Not

      Özel anahtar parolasını yapılandırmak için komutu çalıştırırken bir parola girmeniz gerekir. Bir parola belirlerseniz, DataWorks PostgreSQL veri kaynağı yapılandırmasındaki özel anahtar parolası için aynı parolayı kullanın.

PostgreSQL SSL kimlik doğrulama dosyalarını yapılandırma

Elde edilen sertifika dosyalarını DataWorks PostgreSQL yapılandırma öğelerine yüklerken aşağıdaki işlemleri gerçekleştirin:

ACL yapılandırması: RDS örnek listesine gidin, ilgili bölgedeki RDS örneğine tıklayın, örnek ayrıntıları sayfasına gitmek için hedef örnek kimliğine tıklayın ve ardından ayarı değiştirmek için Data Security > ACL Configuration seçeneğine tıklayın. Farklı SSL kimlik doğrulama yöntemlerini seçebilirsiniz. Daha fazla bilgi için bkz. ACL yapılandırma.

Kullanılabilir SSL kimlik doğrulama yöntemleri şunlardır:

  • prefer: Veri bağlantısını şifreler.

  • verify-ca: Veri bağlantısını şifreler ve istemci sertifikası özgünlüğünü doğrular.

  • verify-full: Veri bağlantısını şifreler, istemci sertifikası özgünlüğünü doğrular ve sertifika CN değerinin veritabanı kullanıcı adıyla eşleştiğini kontrol eder.

  • cert: Parola yerine sertifika kullanarak oturum açar, veri bağlantısını şifreler, istemci sertifikası özgünlüğünü doğrular ve sertifika CN değerinin veritabanı kullanıcı adıyla eşleştiğini kontrol eder.

Not
  • ACL kimlik doğrulama yöntemi prefer olarak ayarlanırsa, PostgreSQL sunucusu istemci sertifikası doğrulamasını zorunlu kılmaz.

  • ACL kimlik doğrulama yöntemi RDS PostgreSQL'de verify-ca olarak ayarlanırsa, sunucunun istemci kimlik doğrulamasını doğrulayabilmesi için DataWorks'te PostgreSQL veri kaynağını yapılandırırken doğru istemci sertifikasını yüklemeniz gerekir.