Todos os produtos
Search
Central de documentação

DataWorks:Graph Database

Última atualização: Jul 17, 2026

O Graph Database (GDB) Reader e o GDB Writer permitem a sincronização bidirecional de dados entre o DataWorks e fontes de dados do GDB.

Limites

Leitura de dados em lote

Gravação de dados em lote

  • Configure duas tarefas de sincronização distintas para sincronizar separadamente os dados de vértices e arestas.

  • Os vértices ou arestas cujos dados serão sincronizados devem ter nomes para que o DataWorks possa percorrê-los e obter os dados relacionados.

  • Os valores de chave primária de vértices e arestas no GDB são do tipo STRING. Configure o tipo dos dados a serem sincronizados como STRING. Caso você configure um tipo numérico, como LONG, o GDB Reader converterá forçosamente os valores da chave primária para STRING. Se a conversão falhar, os valores da chave primária serão perdidos.

  • Para os valores das propriedades de vértices ou arestas, o tipo de dado a ser sincronizado deve corresponder ao tipo original na instância do GDB. Se houver divergência, o GDB Reader tentará converter forçosamente os valores da propriedade para o tipo especificado. Em caso de falha na conversão, os valores da propriedade serão perdidos.

  • Ao executar uma tarefa de sincronização de dados de vértices várias vezes, os valores obtidos para a propriedade SET podem variar.

  • Se todas as propriedades forem configuradas no formato JSON, a propriedade SET que contiver apenas um valor será tratada como uma propriedade comum.

  • Salvo indicação em contrário, os nomes de campos ou valores enumerados neste tópico diferenciam maiúsculas de minúsculas.

  • O GDB Reader suporta exclusivamente o formato de codificação UTF-8. Os dados sincronizados devem estar codificados em UTF-8.

  • Apenas o GDB versão 1.0.20 ou superior oferece suporte à propriedade SET. Confirme a versão do GDB antes de usar essa propriedade.

  • Execute a tarefa de sincronização de dados de vértices antes de executar a tarefa de sincronização de dados de arestas.

  • Restrições para vértices:

    • Todo vértice deve ter um nome, definido pelo parâmetro label.

    • O vértice precisa ter uma chave primária única do tipo STRING. Se a chave primária não for uma string, o GDB Writer a converterá forçosamente para esse formato.

    • Tenha cuidado ao configurar o parâmetro idTransRule. Para definir este parâmetro como none, garanta que a chave primária de cada vértice seja exclusiva entre todos os vértices.

  • Restrições para arestas:

    • Toda aresta deve ter um nome, definido pelo parâmetro label.

    • A chave primária é opcional para uma aresta.

      • Caso especifique uma chave primária, ela deve ser do tipo STRING e globalmente única entre todas as arestas. Se um valor não string for fornecido, o GDB Writer o converterá automaticamente para o tipo STRING.

      • Se nenhuma chave primária for especificada para a aresta, o GDB Writer gerará automaticamente um identificador universalmente único (UUID) do tipo STRING. Caso o UUID não seja uma string, o GDB Writer o converterá forçosamente para esse formato.

    • Tenha cuidado ao configurar o parâmetro idTransRule. Para definir este parâmetro como none, garanta que a chave primária de cada aresta seja exclusiva entre todas as arestas.

    • Os parâmetros srcIdTransRule e dstIdTransRule são obrigatórios para uma aresta. Os valores desses dois parâmetros devem corresponder ao valor do parâmetro idTransRule do vértice relacionado.

  • Salvo indicação em contrário, os nomes de campos e valores enumerados neste tópico diferenciam maiúsculas de minúsculas.

  • O GDB Writer suporta exclusivamente o formato de codificação UTF-8. Os dados de origem devem estar codificados em UTF-8.

  • Devido a restrições de rede, execute as tarefas de sincronização apenas em um Grupo de recursos Serverless (recomendado) ou em um grupo de recursos exclusivo para Integração de Dados. Adquira primeiro o grupo de recursos necessário e associe-o à Virtual Private Cloud (VPC) que contém sua instância do GDB.

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 parâmetro ao adicionar uma fonte de dados.

Desenvolver uma tarefa de sincronização de dados

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

Configurar uma tarefa de sincronização em lote para sincronizar dados de tabela única

Apêndice: Código e 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 conforme os requisitos unificados de formato de script. Para mais informações, consulte Configuração em modo de script. As informações a seguir descrevem os parâmetros que devem ser configurados para as fontes de dados ao utilizar o editor de código.

Exemplo de script do Reader

Ao configurar um trabalho de sincronização de dados para gravar no Graph Database (GDB), configure vértices e arestas separadamente:

  • Configure uma tarefa de sincronização para ler dados de vértices de uma instância do GDB

    {
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        },
        "setting":{
            "errorLimit":{
                "record":"100"  // Maximum number of dirty data records to tolerate.
            },
            "jvmOption":"",
            "speed":{
                "concurrent":3,
                "throttle":true, // If true, throttling is enabled. If false, throttling is disabled and the mbps parameter is ignored.
                "mbps":"12"// The throttling limit. 1 mbps is equal to 1 MB/s.
            }
        },
        "steps":[
            {
                "category":"reader",
                "name":"Reader",
                "parameter":{
                    "host": "gdb-xxxxxx.aliyuncs.com", // The endpoint of the GDB instance.
                    "port": 8182, // The port of the GDB instance.
                    "username": "gdb", // The username for accessing the GDB instance.
                    "password": "gdb", // The password for the username.
                    "labelType": "VERTEX", // The type of the label. VERTEX specifies a vertex.
                    "labels": ["label1", "label2"],  // A list of labels. If left empty, all vertices are exported.
                    "column": [
                        {
                            "name": "id",               // The field name.
                            "type": "string",           // The field type.
                            "columnType": "primaryKey"  // Field category. Specifies the vertex primary key, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "label",              // The field name.
                            "type": "string",             // The field type.
                            "columnType": "primaryLabel"  // Field category. Specifies the vertex label, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "age",                   // The property name.
                            "type": "int",                   // The property type.
                            "columnType": "vertexProperty"   // Field category. Specifies a basic property of the vertex in GDB.
                        }
                    ]
                },
                "stepType":"gdb"
            },
            {
                "category":"writer",
                "name":"Writer",
                "parameter":{
                    "print": true
                },
                "stepType":"stream"
            }
        ]
    }
  • Configure uma tarefa de sincronização para ler dados de arestas de uma instância do GDB

    {
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        },
        "setting":{
            "errorLimit":{
                "record":"100"  // Maximum number of dirty data records to tolerate.
            },
            "jvmOption":"",
            "speed":{
                "concurrent":3,
                "throttle":true,// If true, throttling is enabled. If false, throttling is disabled and the mbps parameter is ignored.
                "mbps":"12"// The throttling limit. 1 mbps is equal to 1 MB/s.
            }
        },
        "steps":[
            {
                "category":"reader",
                "name":"Reader",
                "parameter":{
                    "host": "gdb-xxxxxx.aliyuncs.com", // The endpoint of the GDB instance.
                    "port": 8182, // The port of the GDB instance.
                    "username": "gdb", // The username for accessing the GDB instance.
                    "password": "gdb", // The password for the username.
                    "labelType": "EDGE", // The type of the label. EDGE specifies an edge.
                    "labels": ["label1", "label2"],  // A list of labels. If left empty, all edges are exported.
                    "column": [
                        {
                            "name": "id",               // The field name.
                            "type": "string",           // The field type.
                            "columnType": "primaryKey"  // Field category. Specifies the edge primary key, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "label",              // The field name.
                            "type": "string",             // The field type.
                            "columnType": "primaryLabel"  // Field category. Specifies the edge label, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "srcId",               // The field name.
                            "type": "string",              // The field type.
                            "columnType": "srcPrimaryKey"  // Field category. Specifies the start vertex primary key, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "srcLabel",               // The field name.
                            "type": "string",                 // The field type.
                            "columnType": "srcPrimaryLabel"   // Field category. Specifies the start vertex label, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "dstId",                    // The field name.
                            "type": "string",                   // The field type.
                            "columnType": "dstPrimaryKey"       // Field category. Specifies the end vertex primary key, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "dstLabel",                 // The field name.
                            "type": "string",                   // The field type.
                            "columnType": "dstPrimaryLabel"     // Field category. Specifies the end vertex label, which must be of the STRING type in GDB.
                        },
                        {
                            "name": "weight",               // The property name.
                            "type": "double",               // The property type.
                            "columnType": "edgeProperty"    // Field category. Specifies an edge property.
                        }
                    ]
                },
                "stepType":"gdb"
            },
            {
                "category":"writer",
                "name":"Writer",
                "parameter":{
                    "print": true
                },
                "stepType":"stream"
            }
        ]
    }

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

host

O endpoint de conexão da instância do GDB. No console do GDB, clique em Management na instância desejada para visualizar o Internal Endpoint (que corresponde ao host).

Sim

Sem valor padrão

port

A porta usada para conectar-se à instância do GDB.

Sim

8182

username

O nome de usuário usado para conectar-se à instância do GDB.

Sim

Sem valor padrão

password

A senha usada para conectar-se à instância do GDB.

Sim

Sem valor padrão

labels

O rótulo (nome) do vértice ou da aresta. O GDB Reader pode ler dados de vários vértices ou arestas simultaneamente, especificados como um array, por exemplo ["label1", "label2"].

Sim

Sem valor padrão

labelType

O tipo do rótulo. Valores válidos:

  • VERTEX

  • EDGE

Sim

Sem valor padrão

column

Os vértices ou arestas a serem sincronizados.

Sim

Sem valor padrão

column -> name

O nome da propriedade do vértice ou da aresta a ser sincronizada. Obrigatório se propriedades de vértice ou aresta estiverem incluídas.

Sim

Sem valor padrão

column -> type

O tipo de dado da propriedade do vértice ou da aresta a ser sincronizada.

  • A chave primária e o rótulo aceitam apenas o tipo STRING. Se o tipo de dado não for definido como STRING, a conversão de dados falhará.

  • Outras propriedades podem ser dos tipos INT, LONG, FLOAT, DOUBLE, BOOLEAN ou STRING.

  • O GDB Reader converte forçosamente os dados obtidos para o tipo especificado. Se a conversão falhar, o registro de dados será perdido.

Sim

Sem valor padrão

column -> columnType

A categoria da propriedade do vértice ou da aresta a ser sincronizada.

  • Para vértices e arestas:

    • primaryKey: a chave primária.

    • primaryLabel: o rótulo.

  • Para vértices:

    • vertexProperty: uma propriedade comum do vértice.

    • vertexJsonProperty: uma coleção das propriedades do vértice no formato JSON. Ao definir o parâmetro columnType como vertexJsonProperty, todas as propriedades serão listadas nesta coluna. Outras colunas não podem conter a propriedade do vértice.

      Exemplo de vertexJsonProperty:

      {
          "properties":[
              {"k":"name","t":"string","v":"tom","c":"set"},
              {"k":"name","t":"string","v":"jack","c":"set"},
              {"k":"sex","t":"string","v":"male","c":"single"}
          ]
      }
                                                          

      O código acima contém uma propriedade multivalorada name e uma propriedade de valor único gender. A propriedade name possui dois registros. Se uma propriedade multivalorada no GDB contiver apenas um valor, ela será exportada como uma propriedade de valor único.

  • Para arestas:

    • srcPrimaryKey: a chave primária do vértice inicial.

    • dstPrimaryKey: a chave primária do vértice final.

    • srcPrimaryLabel: o rótulo do vértice inicial.

    • dstPrimaryLabel: o rótulo do vértice final.

    • edgeProperty: uma propriedade da aresta.

    • edgeJsonProperty: uma coleção das propriedades da aresta no formato JSON. Ao definir o parâmetro columnType como edgeJsonProperty, todas as propriedades serão listadas nesta coluna. Outras colunas não podem conter a propriedade da aresta.

      Exemplo de edgeJsonProperty:

      {
          "properties":[
              {"k":"name","t":"string","v":"tom"},
              {"k":"sex","t":"string","v":"male"}
      ]
      }
                                                          

      Uma aresta não suporta propriedades multivaloradas nem o campo c.

Sim

Sem valor padrão

Exemplo de script do Writer

  • Configure uma tarefa de sincronização para gravar dados de vértices em um banco de dados GDB

    {
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        },
        "setting":{
            "errorLimit":{
                "record":"100"  // Maximum number of dirty data records to tolerate.
            },
            "speed":{
                 "throttle":true,// If true, throttling is enabled. If false, throttling is disabled and the mbps parameter is ignored.
                "concurrent":3, // The job concurrency.
                "mbps":"12"// The throttling limit. 1 mbps is equal to 1 MB/s.
            }
        },
        "steps":[
            {
                "category":"reader",
                "name":"Reader",
                "parameter":{
                    "column":[
                        "*"
                    ],
                    "datasource":"_ODPS",
                    "emptyAsNull":true,
                    "guid":"",
                    "isCompress":false,
                    "partition":[],
                    "table":""
                },
                "stepType":"odps"
            },
            {
                "category":"writer",
                "name":"Writer",
                "parameter": {
                    "datasource": "testGDB", // The name of the data source.
                    "label": "person", // The label, which is the name of the vertex.
                    "srcLabel": "", // Not applicable to vertices.
                    "dstLabel": "", // Not applicable to vertices.
                    "labelType": "VERTEX", // The type of the label. "VERTEX" specifies a vertex.
                    "writeMode": "INSERT", // The policy for handling duplicate primary keys.
                    "idTransRule": "labelPrefix", // The conversion rule for the vertex primary key.
                    "srcIdTransRule": "none", // Not applicable to vertices.
                    "dstIdTransRule": "none", // Not applicable to vertices.
                    "column": [
                        {
                            "name": "id", // The field name.
                            "value": "#{0}", // Takes the value from the source column at index 0. Concatenation is supported.
                            "type": "string", // The field type.
                            "columnType": "primaryKey" // The field category. `primaryKey` specifies the primary key.
                        }, // The primary key of the vertex. The field name must be `id`, the type must be STRING, and this record is required.
                        {
                            "name": "person_age",
                            "value": "#{1}", // Takes the value from the source column at index 1. Concatenation is supported.
                            "type": "int",
                            "columnType": "vertexProperty" // The field category. `vertexProperty` specifies a vertex property.
                        }, // A property of the vertex. Supported types: INT, LONG, FLOAT, DOUBLE, BOOLEAN, and STRING.
                        {
                            "name": "person_credit",
                            "value": "#{2}", // Takes the value from the source column at index 2. Concatenation is supported.
                            "type": "string",
                            "columnType": "vertexProperty"
                        } // A property of the vertex.
                    ]
                }
                "stepType":"gdb"
            }
        ],
        "type":"job",
        "version":"2.0"
    }
  • Configure uma tarefa de sincronização para gravar dados de arestas em um banco de dados GDB

    {
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        },
        "setting":{
            "errorLimit":{
                "record":"100" // Maximum number of dirty data records to tolerate.
            },
            "jvmOption":"",
            "speed":{
                "throttle":true,// If true, throttling is enabled. If false, throttling is disabled and the mbps parameter is ignored.
                "concurrent":3, // The job concurrency.
                "mbps":"12"// The throttling limit. 1 mbps is equal to 1 MB/s.
            }
        },
        "steps":[
            {
                "category":"reader",
                "name":"Reader",
                "parameter":{
                    "column":[
                        "*"
                    ],
                    "datasource":"_ODPS",
                    "emptyAsNull":true,
                    "guid":"",
                    "isCompress":false,
                    "partition":[],
                    "table":""
                },
                "stepType":"odps"
            },
            {
                "category":"writer",
                "name":"Writer",
                "parameter": {
                    "datasource": "testGDB", // The name of the data source.
                    "label": "use", // The label, which is the name of the edge.
                    "labelType": "EDGE", // The type of the label. `EDGE` specifies an edge.
                    "srcLabel": "person", // The label of the start vertex.
                    "dstLabel": "software", // The label of the end vertex.
                    "writeMode": "INSERT", // The policy for handling duplicate primary keys.
                    "idTransRule": "labelPrefix", // The conversion rule for the edge primary key.
                    "srcIdTransRule": "labelPrefix", // The conversion rule for the primary key of the start vertex.
                    "dstIdTransRule": "labelPrefix", // The conversion rule for the primary key of the end vertex.
                    "column": [
                        {
                            "name": "id", // The field name.
                            "value": "#{0}", // Takes the value from the source column at index 0. Concatenation is supported.
                            "type": "string", // The field type.
                            "columnType": "primaryKey" // The field category. `primaryKey` specifies the primary key.
                        }, // The primary key of the edge. The field name must be `id` and the type must be STRING. This record is optional.
                        {
                            "name": "id",
                            "value": "#{1}", // Concatenation is supported. Ensure the mapping rule is consistent with the one used when importing vertices.
                            "type": "string",
                            "columnType": "srcPrimaryKey" // The field category. `srcPrimaryKey` specifies the primary key of the start vertex.
                        }, // The primary key of the start vertex. The field name must be `id`, the type must be STRING, and this record is required.
                        {
                            "name": "id",
                            "value": "#{2}", // Concatenation is supported. Ensure the mapping rule is consistent with the one used when importing vertices.
                            "type": "string",
                            "columnType": "dstPrimaryKey" // The field category. `dstPrimaryKey` specifies the primary key of the end vertex.
                        }, // The primary key of the end vertex. The field name must be `id`, the type must be STRING, and this record is required.
                        {
                            "name": "person_use_software_time",
                            "value": "#{3}", // Concatenation is supported.
                            "type": "long",
                            "columnType": "edgeProperty" // The field category. `edgeProperty` specifies an edge property.
                        }, // A property of the edge. Supported types: INT, LONG, FLOAT, DOUBLE, BOOLEAN, and STRING.
                        {
                            "name": "person_regist_software_name",
                            "value": "#{4}", // Concatenation is supported.
                            "type": "string",
                            "columnType": "edgeProperty"
                        }, // A property of the edge.
                        {
                            "name": "id",
                            "value": "#{5}", // Concatenation is supported.
                            "type": "long",
                            "columnType": "edgeProperty"
                        } // A property of the edge with the field name `id`. This is a regular property, not a primary key, and is optional.
                    ]
                }
                "stepType":"gdb"
            }
        ],
        "type":"job",
        "version":"2.0"
    }

Parâmetros do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

O nome da fonte de dados. O valor deve corresponder exatamente ao nome da fonte de dados adicionada no editor de código.

Sim

Sem valor padrão

label

O rótulo, que corresponde ao nome do vértice ou da aresta.

O GDB Writer pode obter rótulos de colunas na tabela de origem. Por exemplo, se você definir este parâmetro como #{0}, o GDB Writer usará o valor da primeira coluna como rótulo. O índice da coluna começa em 0.

Sim

Sem valor padrão

labelType

O tipo do rótulo. Valores válidos:

  • VERTEX

  • EDGE

Sim

Sem valor padrão

srcLabel

  • O nome do vértice inicial em uma aresta quando o parâmetro labelType está definido como EDGE.

    Este parâmetro pode ficar vazio se srcIdTransRule estiver definido como none. Se srcIdTransRule tiver outro valor, este parâmetro será obrigatório.

  • Deixe este parâmetro vazio se o parâmetro labelType estiver definido como VERTEX.

Não

Sem valor padrão

dstLabel

  • O nome do vértice final em uma aresta quando o parâmetro labelType está definido como EDGE.

    Este parâmetro pode ficar vazio se dstIdTransRule estiver definido como none. Se dstIdTransRule tiver outro valor, este parâmetro será obrigatório.

  • Deixe este parâmetro vazio se o parâmetro labelType estiver definido como VERTEX.

Não

Sem valor padrão

writeMode

Define como o GDB Writer trata registros de dados com chaves primárias duplicadas. Valores válidos:

  • INSERT: retorna uma mensagem de erro. O contador de registros de dados com erro é incrementado em 1.

  • MERGE: substitui o registro de dados existente pelo novo.

Sim

INSERT

idTransRule

A regra de conversão para a chave primária. Valores válidos:

  • labelPrefix: Converte o valor mapeado para o formato {label}-{source column}.

  • none: não converte a chave primária.

Sim

none

srcIdTransRule

A regra de conversão para a chave primária do vértice inicial quando labelType está definido como EDGE. Valores válidos:

  • labelPrefix: Converte o valor mapeado para o formato {label}-{source column}.

  • none: não converte a chave primária. Neste caso, o parâmetro srcLabel pode ficar vazio.

Obrigatório quando o parâmetro labelType está definido como EDGE

none

dstIdTransRule

A regra de conversão para a chave primária do vértice final quando labelType está definido como EDGE. Valores válidos:

  • labelPrefix: Converte o valor mapeado para o formato {label}-{source column}.

  • none: não converte a chave primária. Neste caso, o parâmetro dstLabel pode ficar vazio.

Obrigatório quando o parâmetro labelType está definido como EDGE

none

column

Os vértices ou arestas a serem sincronizados.

  • name: o nome da propriedade do vértice ou da aresta.

  • value: o valor da propriedade do vértice ou da aresta. É possível personalizar um valor apenas no editor de código.

    • #{N}: usa o valor da N-ésima coluna da origem como valor da propriedade do vértice ou da aresta. N indica o índice da coluna, começando em 0.

    • #{0}: usa o valor da primeira coluna da origem como valor da propriedade do vértice ou da aresta.

    • test-#{0}: anexa uma string fixa, como test-, ao início ou ao fim de #{0}.

    • #{0}-#{1}: Concatena vários campos. Também é possível adicionar strings fixas em qualquer posição, por exemplo, test-#{0}-test1-#{1}-test2.

  • type: o tipo de dado da propriedade do vértice ou da aresta.

    A chave primária deve ser do tipo STRING. Se o valor obtido da origem não for uma string, o GDB Writer o converterá forçosamente para esse formato. Certifique-se de que o valor possa ser convertido em string.

    Outras propriedades podem ser dos tipos INT, LONG, FLOAT, DOUBLE, BOOLEAN ou STRING.

  • columnType: a categoria da propriedade do vértice ou da aresta a ser sincronizada.

    • Para vértices e arestas

      primaryKey: a chave primária.

    • Para vértices

      • vertexProperty: uma propriedade comum de um vértice.

      • vertexJsonProperty: uma propriedade JSON do vértice. Para mais informações sobre a estrutura do valor, consulte o exemplo de propriedades.

    • Para arestas

      • srcPrimaryKey: a chave primária do vértice inicial.

      • dstPrimaryKey: a chave primária do vértice final.

      • edgeProperty: uma propriedade comum de uma aresta.

      • edgeJsonProperty: uma propriedade JSON de uma aresta. Para mais informações sobre a estrutura do valor, consulte o exemplo de propriedades.

Exemplo de propriedades

{"properties":[
    {"k":"name","t":"string","v":"tom"},
    {"k":"age","t":"int","v":"20"},
    {"k":"sex","t":"string","v":"male"}
]}

Sim

Sem valor padrão