A fonte de dados GBase8a permite ler e gravar dados no GBase8a. Este tópico descreve os recursos de sincronização de dados do GBase8a no DataWorks.
O GBase8a Reader e o GBase8a Writer oferecem suporte a:
Leitura de várias tabelas em uma única tarefa de sincronização
Filtragem de linhas com condições WHERE para sincronização incremental
Particionamento de tabelas grandes por chave primária para leituras paralelas
Gravação de dados com hooks SQL de pré e pós-execução
Limitações
O GBase8a Reader e o GBase8a Writer são compatíveis com Grupos de recursos Serverless (recomendado) e grupos de recursos exclusivos para Data Integration.
Se uma instrução INSERT INTO encontrar um conflito de chave primária ou índice único, as linhas conflitantes não serão gravadas.
É possível gravar dados apenas em uma tabela de destino no banco de dados principal.
A tarefa exige pelo menos a permissão INSERT INTO. Permissões adicionais podem ser necessárias para instruções especificadas em
preSqlepostSql.O GBase8a Writer não oferece suporte ao parâmetro
writeMode.
Pré-requisitos
Adicione uma fonte de dados GBase8a ao DataWorks antes de desenvolver uma tarefa de sincronização. Siga as instruções em Gerenciamento de fontes de dados. As descrições dos parâmetros estão disponíveis no console do DataWorks ao adicionar a fonte de dados.
Configure uma tarefa de sincronização
Configure uma tarefa de sincronização offline para uma única tabela usando a interface visual sem código ou o editor de código:
Interface visual sem código: Configure na interface visual sem código
Editor de código: Configure no editor de código
Para obter descrições de parâmetros do editor de código e exemplos de script, consulte Apêndice: Exemplos de script e descrições de parâmetros.
Apêndice: Exemplos de script e descrições de parâmetros
Os scripts e tabelas de parâmetros a seguir abrangem as configurações específicas do GBase8a Reader e do GBase8a Writer. Para o formato de script unificado exigido pelo editor de código, consulte Configure uma tarefa no editor de código.
Exemplo de script do Reader
{
"type": "job",
"steps": [
{
"stepType": "gbase8a",
"parameter": {
"datasource": "",
"username": "",
"password": "",
"where": "",
"column": [
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [
"table"
],
"datasource": ""
}
]
},
"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"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
}
}
Parâmetros do Reader
| Parâmetro | Descrição | Obrigatório | Padrão |
|---|---|---|---|
table |
Tabelas de source da sincronização. Especifique como um array JSON. É possível ler várias tabelas em paralelo, mas todas devem ter o mesmo schema. O GBase8a Reader não verifica a consistência do schema entre as tabelas. Aninhe o parâmetro table dentro do bloco de configuração connection. |
Sim | Nenhum |
column |
Colunas a sincronizar. Especifique como um array JSON. Use ["*"] para selecione todas as colunas. Oferece suporte a seleção de colunas específicas, reordenação (exportação em ordem diferente do schema), valores constantes (por exemplo, '123') e colunas de função (por exemplo, date('now')). Não pode ficar em branco. |
Sim | Nenhum |
datasource |
Nome da fonte de dados GBase8a adicionada no DataWorks. | Não | Nenhum |
splitPk |
Coluna usada para particionar dados em leituras paralelas. Utilize uma chave primária inteira para garantir distribuição uniforme dos dados e evitar hotspots. Aceita apenas tipos inteiros. Strings, números de ponto flutuante e datas não são suportados; nesses casos, a configuração é ignorada e o sistema retorna à leitura de canal único. Deixe em branco para desativar o particionamento. | Não | Em branco |
where |
Condição de filtro anexada à consulta SQL. O GBase8a Reader cria uma consulta a partir de column, table e where para extrair dados. Use where para sincronização incremental. Por exemplo, defina como gmt_create>$bizdate para sincronizar os dados do dia atual. Se deixado em branco, o sistema execute uma sincronização completa de dados. |
Não | Nenhum |
querySql |
Consulta SQL personalizada que substitui table, column, where e splitPk. Recomendado quando where sozinho não consegue expressar a lógica de filtro necessária. Quando querySql está definido, o GBase8a Reader ignora os parâmetros table, column, where e splitPk. |
Não | Nenhum |
fetchSize |
Número de registros buscados no banco de dados por lote. Um valor maior reduz as idas e vindas na rede e melhora o throughput de leitura. Nota
Valores superiores a 2048 podem 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",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "gbase8a",
"parameter": {
"datasource": "Data source name",
"username": "",
"password": "",
"column": [
"id",
"name"
],
"connection": [
{
"table": [
"Gbase8a_table"
],
"datasource": ""
}
],
"preSql": [
"delete from @table where db_id = -1"
],
"postSql": [
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
Nome da fonte de dados adicionada no DataWorks. Deve corresponder exatamente ao nome da fonte de dados adicionada. |
Sim |
Nenhum |
|
|
Tabela de destino para gravação de dados. Especifique como um array JSON. Aninhe o parâmetro |
Sim |
Nenhum |
|
|
Colunas de destino para gravação. Separe múltiplas colunas com vírgulas — por exemplo, |
Sim |
Nenhum |
|
|
Instrução SQL executada antes da gravação dos dados. Use |
Não |
Nenhum |
|
|
Instrução SQL executada após a conclusão da gravação dos dados. |
Não |
Nenhum |
|
|
Número de registros enviados por lote. Valores maiores reduzem as idas e vindas na rede e melhoram o throughput de gravação. Valores excessivamente altos podem causar erro de falta de memória (OOM) durante a sincronização. |
Não |
1.024 |