Mover dados da Sybase usando a Azure Data Factory

Nota

Este artigo aplica-se à versão 1 do Data Factory. Se estiver a utilizar a versão atual do serviço Data Factory, consulte o conector Sybase em V2.

Este artigo explica como utilizar a Atividade de Cópia na Fábrica de Dados Azure para mover dados de uma base de dados Sybase no local. Baseia-se no artigo de Atividades de Movimento de Dados, que apresenta uma visão geral do movimento de dados com a atividade da cópia.

Pode copiar dados de uma loja de dados Sybase no local para qualquer loja de dados de lavatórios suportados. Para obter uma lista de lojas de dados suportadas como pias pela atividade de cópia, consulte a tabela de lojas de dados suportadas. Atualmente, a fábrica de dados suporta apenas a transferência de dados de uma loja de dados Sybase para outras lojas de dados, mas não para transferir dados de outras lojas de dados para uma loja de dados Sybase.

Pré-requisitos

O serviço Data Factory suporta a ligação a fontes Sybase no local utilizando o Gateway de Gestão de Dados. Consulte dados em movimento entre locais no local e artigo em nuvem para saber sobre o Gateway de Gestão de Dados e instruções passo a passo sobre a configuração do gateway.

Gateway é necessário mesmo que a base de dados Sybase esteja hospedada num Azure IaaS VM. Pode instalar o gateway no mesmo IaaS VM que a loja de dados ou num VM diferente, desde que o gateway possa ligar-se à base de dados.

Nota

Consulte os problemas de gateway de resolução de problemas para obter dicas sobre questões relacionadas com a ligação de resolução de problemas/gateways.

Versões e instalação suportadas

Para que o Gateway de Gestão de Dados se conecte à Base de Dados Sybase, é necessário instalar o fornecedor de dados para sybase iAnywhere.Data.SQLAnywhere 16 ou superior no mesmo sistema que o Data Management Gateway.

SAP Sybase SQL Qualquer lugar (ASA) versão 16 e acima é suportado; O QI e o ASE não são apoiados.

Introdução

Pode criar um pipeline com uma atividade de cópia que move dados de uma loja de dados cassandra no local, utilizando diferentes ferramentas/APIs.

  • A forma mais fácil de criar um oleoduto é utilizar o Copy Wizard. Ver Tutorial: Criar um pipeline utilizando o Copy Wizard para uma rápida passagem na criação de um oleoduto utilizando o assistente de dados Copy.
  • Também pode utilizar as seguintes ferramentas para criar um pipeline: Visual Studio, Azure PowerShell, Azure Resource Manager, .NET API e REST API. Consulte o tutorial de atividade de cópia para obter instruções passo a passo para criar um oleoduto com uma atividade de cópia.

Quer utilize as ferramentas ou APIs, executa os seguintes passos para criar um pipeline que transfere dados de uma loja de dados de origem para uma loja de dados de lavatórios:

  1. Crie serviços ligados para ligar as lojas de dados de entrada e saída à sua fábrica de dados.
  2. Crie conjuntos de dados para representar dados de entrada e saída para a operação de cópia.
  3. Crie um pipeline com uma atividade de cópia que leva um conjunto de dados como entrada e um conjunto de dados como uma saída.

Quando utiliza o assistente, as definições de JSON para estas entidades da Data Factory (serviços ligados, conjuntos de dados e o pipeline) são automaticamente criadas para si. Quando utiliza ferramentas/APIs (exceto .NET API), define estas entidades da Data Factory utilizando o formato JSON. Para obter uma amostra com definições JSON para entidades da Data Factory que são usadas para copiar dados de uma loja de dados Sybase no local, consulte o exemplo JSON: Copiar dados da Sybase para a secção Azure Blob deste artigo.

As seguintes secções fornecem detalhes sobre as propriedades JSON que são usadas para definir entidades da Data Factory específicas de uma loja de dados Sybase:

Propriedades de serviço ligadas

A tabela seguinte fornece descrição para elementos JSON específicos do serviço ligado à Sybase.

Propriedade Descrição Obrigatório
tipo A propriedade tipo deve ser definida para: OnPremisesSybase Yes
servidor Nome do servidor Sybase. Yes
base de dados Nome da base de dados Sybase. Yes
esquema O nome do esquema na base de dados. No
authenticationType Tipo de autenticação usada para ligar à base de dados Sybase. Os valores possíveis são: Anónimo, Básico e Windows. Yes
nome de utilizador Especifique o nome do utilizador se estiver a utilizar a autenticação Básica ou o Windows. No
palavra-passe Especifique a palavra-passe para a conta de utilizador especificada para o nome de utilizador. No
gatewayName Nome do gateway que o serviço data factory deve usar para ligar à base de dados Sybase no local. Yes

Dataset properties (Propriedades do conjunto de dados)

Para obter uma lista completa de secções & propriedades disponíveis para definir conjuntos de dados, consulte o artigo Criar conjuntos de dados. Secções como estrutura, disponibilidade e política de um conjunto de dados JSON são semelhantes para todos os tipos de conjunto de dados (Azure SQL, Azure blob, Azure table, etc.).

A secção typeProperties é diferente para cada tipo de conjunto de dados e fornece informações sobre a localização dos dados na loja de dados. A secção de tipos de direitos para conjunto de dados do tipo RelationalTable (que inclui conjunto de dados Sybase) tem as seguintes propriedades:

Propriedade Descrição Obrigatório
tableName Nome da tabela na instância Sybase Database a que o serviço ligado se refere. Não (se a consulta de RelationalSource for especificada)

Propriedades da atividade Copy

Para obter uma lista completa de secções & propriedades disponíveis para definir atividades, consulte o artigo Criar Pipelines. Propriedades como nome, descrição, tabelas de entrada e saída, e política estão disponíveis para todos os tipos de atividades.

Enquanto que as propriedades disponíveis na secção de tipos de atividade variam com cada tipo de atividade. Para a atividade copy, variam dependendo dos tipos de fontes e pias.

Quando a fonte é do tipo RelationalSource (que inclui a Sybase), as seguintes propriedades estão disponíveis na secção de tiposproperties:

Propriedade Descrição Valores permitidos Necessário
consulta Utilize a consulta personalizada para ler dados. Cadeia de consulta SQL. Por exemplo: selecione * do MyTable. Não (se o nome de tabela do conjunto de dados for especificado)

Exemplo JSON: Copiar dados da Sybase para Azure Blob

O exemplo a seguir fornece definições JSON de amostra que pode usar para criar um oleoduto utilizando o Visual Studio ou o Azure PowerShell. Mostram como copiar dados da base de dados Sybase para o Azure Blob Storage. No entanto, os dados podem ser copiados para qualquer um dos lavatórios aqui indicados utilizando a Atividade de Cópia na Fábrica de Dados Azure.

A amostra tem as seguintes entidades de fábrica de dados:

  1. Um serviço ligado do tipo OnPremisesSybase.
  2. Um serviço apreciado do tipo AzureStorage.
  3. Um conjunto de dados de entrada do tipo RelacionalTable.
  4. Um conjunto de dados de saída do tipo AzureBlob.
  5. O pipeline com Copy Activity que utiliza RelationalSource e BlobSink.

A amostra copia dados de uma consulta resulta na base de dados Sybase para uma bolha a cada hora. As propriedades JSON utilizadas nestas amostras são descritas em secções que seguem as amostras.

Como primeiro passo, configurar o portal de gestão de dados. As instruções estão nos dados móveis entre locais no local e artigo em nuvem.

Serviço ligado à Sybase:

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

Serviço ligado ao armazenamento Azure Blob:

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

Conjunto de dados de entrada Sybase:

A amostra pressupõe que criou uma tabela "MyTable" na Sybase e contém uma coluna chamada "timetamp" para dados da série de tempo.

Definição "externa": informa verdadeiramente o serviço Data Factory de que este conjunto de dados é externo à fábrica de dados e não é produzido por uma atividade na fábrica de dados. Note que o tipo de serviço ligado está definido para: RelationalTable.

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

Conjunto de dados de saída Azure Blob:

Os dados são escritos para uma nova bolha a cada hora (frequência: hora, intervalo: 1). O caminho da pasta para a bolha é avaliado dinamicamente com base na hora de início da fatia que está a ser processada. O caminho da pasta utiliza partes do ano, mês, dia e horas da hora de início.

{
    "name": "AzureBlobSybaseDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/sybase/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
        }
    }
}

Pipeline com atividade de Copy:

O pipeline contém uma Atividade de Cópia que está configurada para utilizar os conjuntos de dados de entrada e saída e está programado para funcionar de hora a hora. Na definição JSON do gasoduto, o tipo de fonte é definido para RelationalSource e o tipo de pia é definido para BlobSink. A consulta SQL especificada para a propriedade de consulta seleciona os dados do DBA. Tabela de encomendas na base de dados.

{
    "name": "CopySybaseToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "RelationalSource",
                        "query": "select * from DBA.Orders"
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                },
                "inputs": [
                    {
                        "name": "SybaseDataSet"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobSybaseDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "SybaseToBlob"
            }
        ],
        "start": "2014-06-01T18:00:00Z",
        "end": "2014-06-01T19:00:00Z"
    }
}

Tipo de mapeamento para Sybase

Conforme mencionado no artigo de Atividades de Movimento de Dados, a atividade Copy realiza conversões automáticas de tipo de origem para tipos de pia com a seguinte abordagem de 2 etapas:

  1. Converter de tipos de origem nativa para .NET tipo
  2. Converter de tipo .NET para tipo de pia nativa

A Sybase suporta os tipos T-SQL e T-SQL. Para uma tabela de mapeamento de tipos sql para .NET type, consulte o artigo do Conector Azure SQL.

Fonte do mapa para afundar colunas

Para obter informações sobre as colunas de mapeamento em conjunto de dados de origem para colunas no conjunto de dados da pia, consulte as colunas de conjunto de dados de mapeamento na Azure Data Factory.

Leitura repetível de fontes relacionais

Ao copiar dados de lojas de dados relacionais, tenha em mente a repetibilidade para evitar resultados não intencionais. Na Azure Data Factory, pode repetir manualmente uma fatia. Também pode configurar a política de reagem para um conjunto de dados para que uma fatia seja re-executada quando ocorre uma falha. Quando uma fatia é reexame de qualquer forma, você precisa ter certeza de que os mesmos dados são lidos, não importa quantas vezes uma fatia é executada. Ver leitura repetível de fontes relacionais.

Performance e Afinação

Consulte copy Activity Performance & Guia de Afinação para conhecer os fatores-chave que impactam o desempenho do movimento de dados (Copy Activity) na Azure Data Factory e várias formas de otimizá-lo.