Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados do ApsaraDB for OceanBase

Última atualização: Jun 27, 2026

A fonte de dados do ApsaraDB for OceanBase permite ler e gravar dados no ApsaraDB for OceanBase. Use esta fonte para configurar tarefas de sincronização de dados no DataWorks. Este tópico descreve os recursos disponíveis para sincronizar dados com o ApsaraDB for OceanBase.

Versões compatíveis

O ApsaraDB for OceanBase Reader e o ApsaraDB for OceanBase Writer são compatíveis com as seguintes versões do OceanBase para operações de leitura e gravação em lote:

  • OceanBase 2.x

  • OceanBase 3.x

  • OceanBase 4.x

Limitações

Leitura em lote

  • O ApsaraDB for OceanBase é compatível com os modos de tenant Oracle e MySQL. Ao configurar a cláusula where para filtragem de dados ou colunas de função no parâmetro column, garanta que a sintaxe esteja em conformidade com as restrições SQL do modo de tenant correspondente. Caso contrário, a instrução SQL poderá falhar.

  • É possível visualizar dados de uma view.

  • Durante uma leitura em lote, não modifique os dados em sincronização. Essa precaução evita problemas de qualidade, como duplicação ou perda de dados.

  • Se você configurar a fonte de dados para Read by Partition, a conta usada para acessar a fonte de dados exigirá permissões de system.

Gravação em lote

Nota

A tarefa de sincronização requer, no mínimo, permissões de insert into.... Outras permissões podem ser necessárias dependendo das instruções especificadas nos parâmetros preSql e postSql.

  • Recomendamos o uso do método batch para gravar dados. Esse método envia uma solicitação de gravação apenas quando o número de linhas acumuladas atinge um limiar predefinido.

  • Como o ApsaraDB for OceanBase é compatível com os modos de tenant Oracle e MySQL, ao configurar os parâmetros preSql e postSql, assegure-se de que a sintaxe respeite as restrições SQL do modo de tenant correspondente. Instruções fora do padrão podem resultar em falhas.

Leitura em tempo real

  • Este recurso é compatível exclusivamente com o modo de tenant MySQL do OceanBase.

  • Para sincronizar dados em tempo real, ative o recurso de binlog. Para mais informações, consulte Operações relacionadas ao binlog (instâncias Alibaba Cloud), Operações relacionadas ao binlog (instâncias OB Cloud).

  • Tarefas de sincronização completa de banco de dados em tempo real não aceitam fontes de dados no modo de string de conexão.

  • Nas tarefas de sincronização completa de banco de dados em tempo real, a versão do banco de dados deve ser V3.0 ou superior.

  • O OceanBase é um banco de dados relacional distribuído capaz de integrar dados de vários bancos físicos em um único banco lógico. No entanto, a sincronização em tempo real de dados do OceanBase para o AnalyticDB for MySQL atualmente aceita apenas dados de um único banco físico. A sincronização a partir de um banco de dados lógico não é compatível.

Preparativos antes da sincronização de dados

Antes de sincronizar dados no DataWorks, prepare o ambiente do ApsaraDB for OceanBase conforme descrito neste tópico. Isso garante que as tarefas de sincronização sejam configuradas e executadas corretamente. As seções a seguir detalham os preparativos necessários.

Configurar uma lista de permissões

Adicione o bloco CIDR da VPC do grupo de recursos Serverless ou do grupo de recursos exclusivo para Data Integration à lista de permissões do OceanBase. Para mais detalhes, consulte Adicionar entradas na lista de permissões.

Criar uma conta e configurar permissões

Crie uma conta de banco de dados para as operações subsequentes. Essa conta precisa ter as permissões adequadas no OceanBase. Consulte Criar uma conta e configurar permissões para obter mais informações.

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária seguindo as instruções em Gerenciamento de fontes de dados. Consulte as descrições dos parâmetros no console do DataWorks para compreender o significado de cada campo durante a adição da fonte de dados.

Desenvolver tarefas de sincronização de dados

Para informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias abaixo.

Sincronização em lote de tabela única

Sincronização em tempo real de tabela única

Sincronização completa de banco de dados em tempo real

Apêndice: Exemplos de scripts e descrições de parâmetros

Configurar uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote por meio do editor de código, defina os parâmetros relevantes no script seguindo os requisitos unificados de formato. Consulte Configuração no modo Script para mais informações. As informações a seguir descrevem os parâmetros obrigatórios para fontes de dados nesse tipo de configuração.

Exemplo de script do Reader

{ "type": "job", "steps": [ { "stepType": "apsaradb_for_OceanBase", // The plug-in name. "parameter": { "datasource": "", // The data source name. "where": "", "column": [ // The columns. "id", "name" ], "splitPk": "" }, "name": "Reader", "category": "reader" }, { "stepType": "stream", "parameter": { "print": false, "fieldDelimiter": "," }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "0" // The error count. }, "speed": { "throttle": true, // Specifies whether to enable throttling. A value of false 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. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } } }

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Se a edição do DataWorks utilizada permitir adicionar fontes de dados do ApsaraDB for OceanBase, referencie uma fonte já adicionada pelo nome.

Existem dois métodos de configuração: jdbcUrl e username.

Sim

N/A

jdbcUrl

Informações de conexão JDBC do banco de dados de destino. Utilize um array JSON para a descrição. É possível especificar vários endereços de conexão para um único banco.

Quando múltiplos endereços são configurados, o ApsaraDB for OceanBase Reader testa a conectividade de cada endereço IP sequencialmente até encontrar um válido.

Se todas as tentativas de conexão falharem, o ApsaraDB for OceanBase Reader reportará um erro.

Nota

O parâmetro jdbcUrl deve estar incluído na unidade de configuração connection.

Conforme a especificação oficial do ApsaraDB for OceanBase, o jdbcUrl pode conter informações adicionais de controle de conexão. Exemplo: jdbc:oceanbase://127.0.0.1:3306/database. Use este parâmetro ou username, mas nunca ambos simultaneamente.

Não

N/A

username

Nome de usuário da fonte de dados.

Não

N/A

password

Senha correspondente ao nome de usuário especificado para a fonte de dados.

Não

N/A

table

Tabelas a serem sincronizadas. Utilize um array JSON para a descrição. A leitura de dados de várias tabelas simultaneamente é permitida.

Ao configurar múltiplas tabelas, certifique-se de que todas possuam o mesmo schema. O ApsaraDB for OceanBase Reader não valida a consistência de schema entre as tabelas.

Nota

O parâmetro table deve constar na unidade de configuração connection.

Sim

N/A

column

Colunas a serem sincronizadas das tabelas configuradas. Descreva as informações das colunas usando um array JSON. Por padrão, todas as colunas são utilizadas, por exemplo, [*].

  • Suporte a seleção de colunas: exporte apenas colunas específicas.

  • Reordenação de colunas permitida: exporte colunas em uma ordem diferente do schema da tabela.

  • Configuração de constantes aceita. Exemplo: '123'.

  • Colunas de função compatíveis. Exemplo: date('now').

  • O parâmetro column deve especificar explicitamente o conjunto de colunas a sincronizar e não pode ficar vazio.

Sim

N/A

splitPk

Ao especificar splitPk durante a extração de dados pelo ApsaraDB for OceanBase Reader, os dados são divididos com base na coluna indicada. O sistema de sincronização inicia então tarefas concorrentes para aumentar a eficiência.

  • Defina splitPk como a chave primária da tabela. Chaves primárias geralmente têm distribuição uniforme, evitando hotspots de dados entre shards.

  • Atualmente, splitPk aceita apenas divisão por tipos inteiros. Strings, pontos flutuantes, datas e outros tipos não são compatíveis. Tipos inválidos geram erro no Reader.

  • Se splitPk estiver vazio, o sistema entende que não há divisão de tabela. Nesse caso, usa-se um único canal para extração.

Não

Vazio

where

O ApsaraDB for OceanBase Reader monta uma instrução SQL baseada nos parâmetros column, table e where fornecidos, utilizando-a para extrair os dados.

Por exemplo, em testes, defina a condição where como limit 10. Em cenários reais, sincronize dados do dia atual definindo where como gmt_create>$bizdate.

  • A condição where viabiliza a sincronização incremental de dados.

  • Sem a configuração da condição where (ou se estiver vazia), todos os dados da tabela serão sincronizados.

Não

N/A

querySql

Em certos cenários, o parâmetro where pode não bastar para descrever os filtros necessários. Use este parâmetro para definir uma instrução SQL de filtro personalizada. Quando configurado, o sistema ignora os parâmetros tables, columns e splitPk, aplicando a SQL definida para filtrar os dados.

Ao configurar querySql, o ApsaraDB for OceanBase Reader desconsidera os parâmetros table, column, where e splitPk.

Não

N/A

fetchSize

Define quantas linhas são buscadas por lote entre o plug-in e o servidor de banco de dados. Esse valor determina o número de interações de rede entre o sistema de sincronização e o servidor, podendo melhorar significativamente o desempenho da extração.

Nota

Um valor muito alto para fetchSize (>2048) pode causar erro de falta de memória (OOM) durante a sincronização.

Não

1.024

Exemplo de script do Writer

{ "type":"job", "version":"2.0", // The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"apsaradb_for_OceanBase", // The plug-in name. "parameter":{ "datasource": "Data source name", "column": [ // The columns. "id", "name" ], "table": "apsaradb_for_OceanBase_table", // The table name. "preSql": [ // The SQL statements to execute before the data synchronization task runs. "delete from @table where db_id = -1" ], "postSql": [ // The SQL statements to execute after the data synchronization task runs. "update @table set db_modify_time = now() where db_id = 1" ], "obWriteMode": "insert", }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0" // The error count. }, "speed":{ "throttle":true, // Specifies whether to enable throttling. A value of false 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. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Parâmetros do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Caso sua edição do DataWorks permita adicionar fontes de dados do ApsaraDB for OceanBase, faça referência a uma fonte existente pelo nome.

Dois métodos de configuração estão disponíveis: jdbcUrl e username.

Não

N/A

jdbcUrl

Dados de conexão JDBC do banco de destino. O jdbcUrl faz parte da unidade de configuração connection.

  • Configure apenas um valor por banco de dados. Cenários com múltiplos nós primários no mesmo banco (importação dual-primary) não são compatíveis.

  • O formato do jdbcUrl segue a especificação oficial do ApsaraDB for OceanBase e pode incluir parâmetros extras de conexão. Exemplo: jdbc:oceanbase://127.0.0.1:3306/database.

Sim

N/A

username

Nome de usuário da fonte de dados.

Sim

N/A

password

Senha associada ao nome de usuário da fonte de dados.

Sim

N/A

table

Nome da tabela onde os dados serão gravados. Utilize um array JSON para a descrição.

Nota

Inclua table dentro da unidade de configuração connection.

Sim

N/A

column

Colunas da tabela de destino que receberão os dados. Separe os nomes por vírgulas (,). Exemplo: "column": ["id", "name", "age"].

Nota

Especifique obrigatoriamente o parâmetro column; ele não pode permanecer vazio.

Sim

N/A

obWriteMode

Modo de gravação de dados na tabela de destino. Parâmetro opcional.

  • insert: insert into ... Linhas conflitantes (chave primária ou índice único) não são gravadas.

  • update: ... on duplicate key update ... Aplicável ao modo de tenant MySQL. Atualiza linhas em caso de conflito.

  • merge: merge into ... matched then update ... Aplicável ao modo de tenant Oracle. Atualiza linhas em caso de conflito.

Não

insert

onClauseColumns

Nota

Exclusivo do modo de tenant Oracle. Obrigatório quando obWriteMode for merge. Sem essa configuração, a gravação ocorre via insert.

Defina colunas de chave primária ou restrição única. Separe múltiplas colunas por vírgulas (,). Exemplo: ID,C1.

Não

N/A

obUpdateColumns

Nota

Este parâmetro tem efeito apenas se obWriteMode for merge ou update.

Colunas a atualizar diante de conflitos de gravação. Separe-as por vírgulas (,). Exemplo: c2,c3.

Não

Todas as colunas

preSql

Instruções SQL padrão executadas antes da gravação na tabela de destino. Para referenciar o nome da tabela nas instruções, utilize @table como placeholder. O sistema substitui essa variável pelo nome real durante a execução.

Não

N/A

postSql

Instruções SQL padrão executadas após a conclusão da gravação na tabela de destino.

Não

N/A

batchSize

Quantidade de registros enviados por lote. Valores adequados reduzem interações de rede entre o sistema e o servidor, elevando o throughput geral.

Nota

Valores excessivos para fetchSize (>2048) podem provocar erros de memória insuficiente (OOM) na sincronização.

Não

1.024