Todos los productos
Search
Centro de documentos

DataWorks:Graph Database

Última actualización: Sep 25, 2026

Graph Database (GDB) Reader y GDB Writer proporcionan sincronización bidireccional de datos entre DataWorks y los orígenes de datos de GDB.

Límites

Lectura de datos por lotes

Escritura de datos por lotes

  • Configure dos tareas de sincronización para sincronizar por separado los datos de vértices y aristas.

  • Los vértices o aristas cuyos datos se van a sincronizar deben tener nombres para que DataWorks pueda recorrerlos y obtener la información relacionada.

  • Los valores de clave principal de los vértices y las aristas en GDB son del tipo STRING. Configure el tipo de los datos que se van a sincronizar como STRING. Si el tipo configurado es numérico, como LONG, GDB Reader convierte de forma obligatoria los valores de clave principal al tipo STRING. Si la conversión falla, dichos valores se pierden.

  • En cuanto a los valores de las propiedades de vértices o aristas, el tipo de dato de los valores que se van a sincronizar debe coincidir con el tipo original en la instancia de GDB. Si difiere del tipo original, GDB Reader convierte de forma obligatoria los valores de propiedad al tipo especificado. Si la conversión falla, los valores de propiedad se pierden.

  • Si ejecuta varias veces una tarea para sincronizar los datos de un vértice, los valores obtenidos de la propiedad SET pueden variar.

  • Si configura todas las propiedades en formato JSON, la propiedad SET que contiene un solo valor se trata como una propiedad común.

  • Salvo que se indique lo contrario, los nombres de campo y los valores enumerados de este tema distinguen entre mayúsculas y minúsculas.

  • GDB Reader solo admite el formato de codificación UTF-8. Los datos sincronizados deben estar codificados en UTF-8.

  • Solo GDB 1.0.20 o versiones posteriores admiten la propiedad SET. Confirme la versión de GDB antes de usar esta propiedad.

  • Ejecute primero la tarea de sincronización de datos de vértices antes de ejecutar la tarea correspondiente a las aristas.

  • Límites aplicables a los vértices:

    • Todo vértice debe tener un nombre, el cual se especifica mediante el parámetro label.

    • Cada vértice requiere una clave principal única de tipo STRING. Si la clave principal no es una cadena, GDB Writer la convierte de forma obligatoria a dicho formato.

    • Tenga cuidado al configurar el parámetro idTransRule. Si establece este parámetro en none, asegúrese de que la clave principal de cada vértice sea única entre todos los vértices.

  • Límites aplicables a las aristas:

    • Toda arista debe tener un nombre, el cual se especifica mediante el parámetro label.

    • La clave principal de una arista es opcional.

      • Si especifica una clave principal, debe ser de tipo STRING y globalmente única entre todas las aristas. Si proporciona un valor que no sea una cadena, GDB Writer lo convierte automáticamente al tipo STRING.

      • Si no especifica una clave principal para la arista, GDB Writer genera automáticamente un identificador único universal (UUID) de tipo STRING. Si el UUID no es una cadena, GDB Writer lo convierte de forma obligatoria a dicho formato.

    • Tenga cuidado al configurar el parámetro idTransRule. Si establece este parámetro en none, asegúrese de que la clave principal de cada arista sea única entre todas las aristas.

    • Los parámetros srcIdTransRule y dstIdTransRule son obligatorios para una arista. Sus valores deben coincidir con el valor del parámetro idTransRule del vértice relacionado.

  • Salvo que se indique lo contrario, los nombres de campo y los valores enumerados de este tema distinguen entre mayúsculas y minúsculas.

  • GDB Writer solo admite el formato de codificación UTF-8. Los datos de origen deben estar codificados en UTF-8.

  • Debido a restricciones de red, las tareas de sincronización solo se pueden ejecutar en un Serverless resource group (recommended) o en un exclusive resource group for Data Integration. Primero adquiera el resource group necesario y asócielo con la Virtual Private Cloud (VPC) que contiene su instancia de GDB.

Agregar un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, agregue el origen de datos correspondiente siguiendo las instrucciones de Data source configuration. Consulte las descripciones de parámetros en la consola de DataWorks para comprender el significado de cada parámetro al agregar un origen de datos.

Desarrollar una tarea de sincronización de datos

Para conocer el punto de entrada y el procedimiento de configuración de una tarea de sincronización, consulte a continuación las guías de configuración correspondientes.

Configurar una tarea de sincronización por lotes para sincronizar datos de una sola tabla

Apéndice: Código y parámetros

Configurar una tarea de sincronización por lotes mediante el editor de código

Si desea configurar una tarea de sincronización por lotes mediante el editor de código, defina los parámetros correspondientes en el script de acuerdo con los requisitos unificados de formato. Para más información, consulte Script mode configuration. A continuación se describen los parámetros que debe configurar para los orígenes de datos cuando utiliza el editor de código.

Ejemplo de script de Reader

Cuando configure un trabajo de sincronización de datos para escribir en Graph Database (GDB), defina los vértices y las aristas por separado:

  • Configure una tarea de sincronización para leer datos de vértices desde una instancia de 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 una tarea de sincronización para leer datos de aristas desde una instancia de 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 del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

host

El endpoint de conexión de la instancia de GDB. En la consola de GDB, haga clic en Management para la instancia de destino y consulte el Internal Endpoint (que corresponde al host).

Sí

Ninguno

port

El puerto utilizado para conectarse a la instancia de GDB.

Sí

8182

username

El nombre de usuario utilizado para conectarse a la instancia de GDB.

Sí

Ninguno

password

La contraseña utilizada para conectarse a la instancia de GDB.

Sí

Ninguna

labels

La etiqueta (nombre) del vértice o la arista. GDB Reader puede leer datos de varios vértices o aristas a la vez, especificados como un arreglo; por ejemplo, ["label1", "label2"].

Sí

Ninguno

labelType

El tipo de etiqueta. Valores válidos:

  • VERTEX

  • EDGE

Sí

Ninguno

column

Los vértices o aristas que se van a sincronizar.

Sí

Ninguno

column -> name

El nombre de la propiedad del vértice o la arista que se va a sincronizar. Es obligatorio si se incluyen propiedades de vértices o aristas.

Sí

Ninguno

column -> type

El tipo de dato de la propiedad del vértice o la arista que se va a sincronizar.

  • La clave principal y la etiqueta solo pueden ser del tipo STRING. Si no establece el tipo de dato como STRING, la conversión de datos falla.

  • Las demás propiedades pueden ser de tipo INT, LONG, FLOAT, DOUBLE, BOOLEAN o STRING.

  • GDB Reader convierte de forma obligatoria los datos obtenidos al tipo especificado. Si la conversión falla, el registro de datos se pierde.

Sí

Ninguno

column -> columnType

La categoría de la propiedad del vértice o la arista que se va a sincronizar.

  • Aplicable tanto a vértices como a aristas:

    • primaryKey: la clave principal.

    • primaryLabel: la etiqueta.

  • Para los vértices:

    • vertexProperty: una propiedad común del vértice.

    • vertexJsonProperty: una colección de las propiedades del vértice en formato JSON. Si establece el parámetro columnType en vertexJsonProperty, todas las propiedades se enlistan en esta columna. Las demás columnas no pueden contener la propiedad del vértice.

      Ejemplo 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"}
          ]
      }
                                                          

      El código anterior contiene una propiedad multivalor name y una propiedad de valor único gender. La propiedad name tiene dos registros. Si una propiedad multivalor en GDB contiene un solo valor, se exporta como una propiedad de valor único.

  • Para las aristas:

    • srcPrimaryKey: la clave principal del vértice de inicio.

    • dstPrimaryKey: la clave principal del vértice final.

    • srcPrimaryLabel: la etiqueta del vértice de inicio.

    • dstPrimaryLabel: la etiqueta del vértice final.

    • edgeProperty: una propiedad de la arista.

    • edgeJsonProperty: una colección de las propiedades de la arista en formato JSON. Si establece el parámetro columnType en edgeJsonProperty, todas las propiedades se enlistan en esta columna. Las demás columnas no pueden contener la propiedad de la arista.

      Ejemplo de edgeJsonProperty:

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

      Una arista no admite propiedades multivalor ni el campo c.

Sí

Ninguno

Ejemplo de script de Writer

  • Configure una tarea de sincronización para escribir datos de vértices en una base de datos de 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 una tarea de sincronización para escribir datos de aristas en una base de datos de 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 del script de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

El nombre del origen de datos. El valor debe coincidir con el nombre del origen de datos que agregó en el editor de código.

Sí

Ninguno

label

La etiqueta, que corresponde al nombre del vértice o la arista.

GDB Writer puede obtener etiquetas de las columnas de la tabla de origen. Por ejemplo, si establece este parámetro en #{0}, GDB Writer usa el valor de la primera columna como etiqueta. El índice de columna comienza en 0.

Sí

Ninguno

labelType

El tipo de etiqueta. Valores válidos:

  • VERTEX

  • EDGE

Sí

Ninguno

srcLabel

  • El nombre del vértice de inicio en una arista cuando el parámetro labelType se establece en EDGE.

    Este parámetro puede dejarse vacío si srcIdTransRule se establece en none. Si srcIdTransRule toma otro valor, el parámetro es obligatorio.

  • Deje este parámetro vacío si el parámetro labelType se establece en VERTEX.

No

Ninguno

dstLabel

  • El nombre del vértice final en una arista cuando el parámetro labelType se establece en EDGE.

    Este parámetro puede dejarse vacío si dstIdTransRule se establece en none. Si dstIdTransRule toma otro valor, el parámetro es obligatorio.

  • Deje este parámetro vacío si el parámetro labelType se establece en VERTEX.

No

Ninguno

writeMode

Indica cómo gestiona GDB Writer los registros de datos con claves principales duplicadas. Valores válidos:

  • INSERT: devuelve un mensaje de error. El número de registros de datos erróneos aumenta en 1.

  • MERGE: sobrescribe el registro de datos existente con el nuevo.

Sí

INSERT

idTransRule

La regla de conversión para la clave principal. Valores válidos:

  • labelPrefix: convierte el valor asignado al formato {label}-{source column}.

  • none: no convierte la clave principal.

Sí

none

srcIdTransRule

La regla de conversión para la clave principal del vértice de inicio cuando labelType se establece en EDGE. Valores válidos:

  • labelPrefix: convierte el valor asignado al formato {label}-{source column}.

  • none: no convierte la clave principal. En este caso, el parámetro srcLabel puede dejarse vacío.

Obligatorio cuando el parámetro labelType se establece en EDGE

none

dstIdTransRule

La regla de conversión para la clave principal del vértice final cuando labelType se establece en EDGE. Valores válidos:

  • labelPrefix: convierte el valor asignado al formato {label}-{source column}.

  • none: no convierte la clave principal. En este caso, el parámetro dstLabel puede dejarse vacío.

Obligatorio cuando el parámetro labelType se establece en EDGE

none

column

Los vértices o aristas que se van a sincronizar.

  • name: el nombre de la propiedad del vértice o la arista.

  • value: el valor de la propiedad del vértice o la arista. Solo es posible personalizar un valor en el editor de código.

    • #{N}: usa el valor de la N-ésima columna del origen como valor de la propiedad del vértice o la arista. N indica el índice de la columna, que comienza en 0.

    • #{0}: usa el valor de la primera columna del origen como valor de la propiedad del vértice o la arista.

    • test-#{0}: agrega una cadena fija, como test-, al principio o al final de #{0}.

    • #{0}-#{1}: concatena varios campos. También puede agregar cadenas fijas en cualquier posición; por ejemplo, test-#{0}-test1-#{1}-test2.

  • type: el tipo de dato de la propiedad del vértice o la arista.

    La clave principal debe ser de tipo STRING. Si el valor obtenido del origen no es una cadena, GDB Writer lo convierte de forma obligatoria a dicho formato. Asegúrese de que el valor se pueda convertir a una cadena.

    Las demás propiedades pueden ser de tipo INT, LONG, FLOAT, DOUBLE, BOOLEAN o STRING.

  • columnType: la categoría de la propiedad del vértice o la arista que se va a sincronizar.

    • Aplicable tanto a vértices como a aristas

      primaryKey: la clave principal.

    • Para los vértices

      • vertexProperty: una propiedad común de un vértice.

      • vertexJsonProperty: una propiedad JSON del vértice. Para más información sobre la estructura del valor, consulte el ejemplo de propiedades.

    • Para las aristas

      • srcPrimaryKey: la clave principal del vértice de inicio.

      • dstPrimaryKey: la clave principal del vértice final.

      • edgeProperty: una propiedad común de una arista.

      • edgeJsonProperty: una propiedad JSON de una arista. Para más información sobre la estructura del valor, consulte el ejemplo de propiedades.

Ejemplo de propiedades

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

Sí

Ninguno