Azure Data Factory kullanarak PostgreSQL'den veri taşıma

Not

Bu makale, Data Factory’nin 1. sürümü için geçerlidir. Data Factory hizmetinin geçerli sürümünü kullanıyorsanız bkz. V2'de PostgreSQL bağlayıcısı.

Bu makalede, şirket içi PostgreSQL veritabanından veri taşımak için Azure Data Factory kopyalama etkinliğinin nasıl kullanılacağı açıklanmaktadır. Kopyalama etkinliğiyle veri taşımaya genel bir genel bakış sunan Veri Taşıma Etkinlikleri makalesini oluşturur.

Şirket içi PostgreSQL veri deposundaki verileri desteklenen herhangi bir havuz veri deposuna kopyalayabilirsiniz. Kopyalama etkinliği tarafından havuz olarak desteklenen veri depolarının listesi için bkz. desteklenen veri depoları. Veri fabrikası şu anda bir PostgreSQL veritabanından diğer veri depolarına veri taşımayı destekler, ancak diğer veri depolarından PostgreSQL veritabanına veri taşımayı desteklemez.

Önkoşullar

Data Factory hizmeti, Veri Yönetimi Ağ Geçidi'ni kullanarak şirket içi PostgreSQL kaynaklarına bağlanmayı destekler. Veri Yönetimi Ağ Geçidi hakkında bilgi edinmek için şirket içi konumlar ile bulut arasında veri taşıma makalesine ve ağ geçidini ayarlamaya yönelik adım adım yönergelere bakın.

PostgreSQL veritabanı bir Azure IaaS VM'de barındırılıyor olsa bile ağ geçidi gereklidir. Ağ geçidi veritabanına bağlanabildiği sürece ağ geçidini veri deposuyla aynı IaaS VM'ye veya farklı bir VM'ye yükleyebilirsiniz.

Not

Bağlantı/ ağ geçidiyle ilgili sorunları gidermeye yönelik ipuçları için bkz. Ağ geçidi sorunlarını giderme.

Desteklenen sürümler ve yükleme

Veri Yönetimi Ağ Geçidi'nin PostgreSQL Veritabanına bağlanması için, Veri Yönetimi Gateway ile aynı sisteme 2.0.12 ile 3.1.9 arasında sürüme sahip PostgreSQL için Ngpsql veri sağlayıcısını yükleyin. PostgreSQL sürüm 7.4 ve üzeri desteklenir.

Başlarken

Farklı araçlar/API'ler kullanarak şirket içi PostgreSQL veri deposundan veri taşıyan kopyalama etkinliğine sahip bir işlem hattı oluşturabilirsiniz.

  • İşlem hattı oluşturmanın en kolay yolu Kopyalama Sihirbazı'nı kullanmaktır. Veri kopyalama sihirbazını kullanarak işlem hattı oluşturma hakkında hızlı bir kılavuz için bkz. Öğretici: Kopyalama Sihirbazı'nı kullanarak işlem hattı oluşturma.
  • İşlem hattı oluşturmak için aşağıdaki araçları da kullanabilirsiniz:
    • Visual Studio

    • Azure PowerShell

    • Azure Resource Manager şablonu

    • .NET API’si

    • REST API

      Kopyalama etkinliğiyle işlem hattı oluşturmaya yönelik adım adım yönergeler için Kopyalama etkinliği öğreticiye bakın.

İster araçları ister API'leri kullanın, bir kaynak veri deposundan havuz veri deposuna veri taşıyan bir işlem hattı oluşturmak için aşağıdaki adımları gerçekleştirirsiniz:

  1. Giriş ve çıkış veri depolarını veri fabrikanıza bağlamak için bağlı hizmetler oluşturun.
  2. Kopyalama işlemi için giriş ve çıkış verilerini temsil eden veri kümeleri oluşturun.
  3. Veri kümesini giriş ve veri kümesini çıkış olarak alan kopyalama etkinliğine sahip bir işlem hattı oluşturun.

Sihirbazı kullandığınızda, bu Data Factory varlıkları (bağlı hizmetler, veri kümeleri ve işlem hattı) için JSON tanımları sizin için otomatik olarak oluşturulur. Araçları/API'leri (.NET API hariç) kullandığınızda, JSON biçimini kullanarak bu Data Factory varlıklarını tanımlarsınız. Şirket içi PostgreSQL veri deposundan veri kopyalamak için kullanılan Data Factory varlıklarına yönelik JSON tanımlarına sahip bir örnek için bu makalenin JSON örneği: PostgreSQL'den Azure Blob'a veri kopyalama bölümüne bakın.

Aşağıdaki bölümlerde, PostgreSQL veri deposuna özgü Data Factory varlıklarını tanımlamak için kullanılan JSON özellikleri hakkında ayrıntılar sağlanır:

Bağlı hizmet özellikleri

Aşağıdaki tabloda PostgreSQL bağlı hizmetine özgü JSON öğeleri için açıklama sağlanır.

Özellik Açıklama Gerekli
tür Tür özelliği şu şekilde ayarlanmalıdır: OnPremisesPostgreSql Yes
sunucu PostgreSQL sunucusunun adı. Yes
database PostgreSQL veritabanının adı. Yes
schema Veritabanındaki şemanın adı. Şema adı büyük/küçük harfe duyarlıdır. No
authenticationType PostgreSQL veritabanına bağlanmak için kullanılan kimlik doğrulama türü. Olası değerler şunlardır: Anonim, Temel ve Windows. Yes
username Temel veya Windows kimlik doğrulaması kullanıyorsanız kullanıcı adını belirtin. No
password Kullanıcı adı için belirttiğiniz kullanıcı hesabının parolasını belirtin. No
gatewayName Data Factory hizmetinin şirket içi PostgreSQL veritabanına bağlanmak için kullanması gereken ağ geçidinin adı. Yes

Veri kümesi özellikleri

Veri kümelerini & tanımlamak için kullanılabilen bölüm özelliklerinin tam listesi için Veri kümeleri oluşturma makalesine bakın. Veri kümesi JSON'un yapısı, kullanılabilirliği ve ilkesi gibi bölümler tüm veri kümesi türleri için benzerdir.

typeProperties bölümü her veri kümesi türü için farklıdır ve verilerin veri deposundaki konumu hakkında bilgi sağlar. RelationalTable (PostgreSQL veri kümesini içeren) türündeki veri kümesinin typeProperties bölümü aşağıdaki özelliklere sahiptir:

Özellik Açıklama Gerekli
tableName Bağlı hizmetin başvurduğu PostgreSQL Veritabanı örneğindeki tablonun adı. tableName büyük/küçük harfe duyarlıdır. Hayır (RelationalSourcesorgusu belirtildiyse)

Kopyalama etkinliğinin özellikleri

Etkinlikleri tanımlamak için kullanılabilen bölüm & özelliklerinin tam listesi için Pipelines oluşturma makalesine bakın. Ad, açıklama, giriş ve çıkış tabloları ve ilke gibi özellikler tüm etkinlik türleri için kullanılabilir.

Öte yandan, etkinliğin typeProperties bölümünde bulunan özellikler her etkinlik türüne göre değişir. Kopyalama etkinliği için, kaynak ve havuz türlerine bağlı olarak değişirler.

Kaynak RelationalSource türündeyse (PostgreSQL içerir), typeProperties bölümünde aşağıdaki özellikler kullanılabilir:

Özellik Açıklama İzin verilen değerler Gerekli
sorgu Verileri okumak için özel sorguyu kullanın. Sorgu dizesini SQL. Örneğin: "query": "select * from \"MySchema\".\"MyTable\"". Hayır (veri kümesinintableName değeri belirtilmişse)

Not

Şema ve tablo adları büyük/küçük harfe duyarlıdır. Bunları sorguda "" (çift tırnak) içine alın.

Örnek:

"query": "select * from \"MySchema\".\"MyTable\""

JSON örneği: PostgreSQL'den Azure Blob'a veri kopyalama

Bu örnek, Visual Studio veyaAzure PowerShell kullanarak işlem hattı oluşturmak için kullanabileceğiniz örnek JSON tanımları sağlar. PostgreSQL veritabanından Azure Blob Depolama veri kopyalamayı gösterir. Ancak veriler, Azure Data Factory'daki Kopyalama Etkinliği kullanılarak burada belirtilen havuzlardan herhangi birine kopyalanabilir.

Önemli

Bu örnek JSON kod parçacıkları sağlar. Veri fabrikasını oluşturmaya yönelik adım adım yönergeleri içermez. Adım adım yönergeler için şirket içi konumlar ile bulut arasında veri taşıma makalesine bakın.

Örnekte aşağıdaki veri fabrikası varlıkları vardır:

  1. OnPremisesPostgreSql türünde bağlı bir hizmet.
  2. AzureStorage türünde bağlı bir hizmet.
  3. RelationalTable türünde bir giriş veri kümesi.
  4. AzureBlob türünde bir çıkış veri kümesi.
  5. RelationalSource ve BlobSink kullanan Kopyalama Etkinliğine sahip işlem hattı.

Örnek, PostgreSQL veritabanındaki bir sorgu sonucundaki verileri saatte bir bloba kopyalar. Bu örneklerde kullanılan JSON özellikleri, örnekleri izleyen bölümlerde açıklanmıştır.

İlk adım olarak veri yönetimi ağ geçidini ayarlayın. Yönergeler, şirket içi konumlar ile bulut arasında veri taşıma makalesinde verilmiştir .

PostgreSQL bağlı hizmeti:

{
    "name": "OnPremPostgreSqlLinkedService",
    "properties": {
        "type": "OnPremisesPostgreSql",
        "typeProperties": {
            "server": "<server>",
            "database": "<database>",
            "schema": "<schema>",
            "authenticationType": "<authentication type>",
            "username": "<username>",
            "password": "<password>",
            "gatewayName": "<gatewayName>"
        }
    }
}

Azure Blob depolama bağlı hizmeti:

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>"
        }
    }
}

PostgreSQL giriş veri kümesi:

Örnekte PostgreSQL'de bir "MyTable" tablosu oluşturduğunuz varsayılır ve zaman serisi verileri için "zaman damgası" adlı bir sütun bulunur.

Ayarı "external": true , Data Factory hizmetine veri kümesinin veri fabrikasının dışında olduğunu ve veri fabrikasındaki bir etkinlik tarafından üretilmediğini bildirir.

{
    "name": "PostgreSqlDataSet",
    "properties": {
        "type": "RelationalTable",
        "linkedServiceName": "OnPremPostgreSqlLinkedService",
        "typeProperties": {},
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {
            "externalData": {
                "retryInterval": "00:01:00",
                "retryTimeout": "00:10:00",
                "maximumRetry": 3
            }
        }
    }
}

Azure Blob çıkış veri kümesi:

Veriler saatte bir yeni bir bloba yazılır (sıklık: saat, aralık: 1). Blobun klasör yolu ve dosya adı, işlenen dilimin başlangıç zamanına göre dinamik olarak değerlendirilir. Klasör yolu başlangıç saatinin yıl, ay, gün ve saat bölümlerini kullanır.

{
    "name": "AzureBlobPostgreSqlDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/postgresql/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ]
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Kopyalama etkinliği ile işlem hattı:

İşlem hattı, giriş ve çıkış veri kümelerini kullanacak şekilde yapılandırılmış ve saatlik olarak çalışacak şekilde zamanlanmış bir Kopyalama Etkinliği içerir. İşlem hattı JSON tanımında kaynak türü relationalSource , havuz türü ise BlobSink olarak ayarlanır. Sorgu özelliği için belirtilen SQL sorgusu, PostgreSQL veritabanındaki public.usstates tablosundan verileri seçer.

{
    "name": "CopyPostgreSqlToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "RelationalSource",
                        "query": "select * from \"public\".\"usstates\""
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                },
                "inputs": [
                    {
                        "name": "PostgreSqlDataSet"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobPostgreSqlDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "PostgreSqlToBlob"
            }
        ],
        "start": "2014-06-01T18:00:00Z",
        "end": "2014-06-01T19:00:00Z"
    }
}

PostgreSQL için tür eşlemesi

Veri taşıma etkinlikleri makalesinde belirtildiği gibi Kopyalama etkinliği aşağıdaki 2 adımlı yaklaşımla kaynak türlerden havuz türlerine otomatik tür dönüştürmeleri gerçekleştirir:

  1. Yerel kaynak türlerinden .NET türüne dönüştürme
  2. .NET türünden yerel havuz türüne dönüştürme

Verileri PostgreSQL'e taşırken PostgreSQL türünden .NET türüne aşağıdaki eşlemeler kullanılır.

PostgreSQL Veritabanı türü PostgresSQL diğer adları .NET Framework türü
abstime Tarih saat
bigint int8 Int64
bigserial seri8 Int64
bit [(n)] Bayt[], Dize
bit değişken [ (n) ] varbit Bayt[], Dize
boolean bool Boole
Kutusu Bayt[], Dize
bayt Bayt[], Dize
karakter [(n)] char [(n)] Dize
karakter değişken [(n)] varchar [(n)] Dize
Cid Dize
cidr Dize
daire Bayt[], Dize
date Tarih saat
daterange Dize
çift duyarlık float8 Çift
inet Bayt[], Dize
intarry Dize
int4range Dize
int8range Dize
tamsayı int, int4 Int32
interval [fields] [(p)] Timespan
json Dize
jsonb Bayt[]
line Bayt[], Dize
lseg Bayt[], Dize
macaddr Bayt[], Dize
Para Ondalık
sayısal [(p, s)] ondalık [(p, s)] Ondalık
sayı Dize
Oıd Int32
path Bayt[], Dize
pg_lsn Int64
Nokta Bayt[], Dize
Çokgen Bayt[], Dize
real float4 Tek
smallint int2 Int16
smallserial seri2 Int16
Seri serial4 Int32
metin Dize

Kaynağı havuz sütunlarına eşleme

Kaynak veri kümesindeki sütunları havuz veri kümesindeki sütunlara eşleme hakkında bilgi edinmek için bkz. Azure Data Factory'de veri kümesi sütunlarını eşleme.

İlişkisel kaynaklardan yinelenebilir okuma

İlişkisel veri depolarından veri kopyalarken, istenmeyen sonuçlardan kaçınmak için yinelenebilirliği göz önünde bulundurun. Azure Data Factory dilimleri el ile yeniden çalıştırabilirsiniz. Ayrıca bir veri kümesi için yeniden deneme ilkesini yapılandırarak bir hata oluştuğunda dilimin yeniden çalıştırılmasını sağlayabilirsiniz. Dilim her iki şekilde de yeniden çalıştırıldığında, bir dilim kaç kez çalıştırılırsa çalışsın aynı verilerin okunduğundan emin olmanız gerekir. Bkz. İlişkisel kaynaklardan tekrarlanabilir okuma.

Performans ve Ayarlama

Azure Data Factory'da veri taşıma (Kopyalama Etkinliği) performansını etkileyen önemli faktörler ve bunu iyileştirmenin çeşitli yolları hakkında bilgi edinmek için Kopyalama Etkinliği Performansı & Ayarlama Kılavuzu'na bakın.