DataWorks menyediakan Graph Database (GDB) Reader dan GDB Writer untuk membaca data dari serta menulis data ke sumber data GDB. Topik ini menjelaskan kemampuan sinkronisasi data dari atau ke sumber data GDB.
Batasan
Pembacaan data batch | Penulisan data batch |
|
|
Tambahkan sumber data
Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks sesuai petunjuk dalam Data source management. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami makna parameter saat menambahkan sumber data.
Kembangkan tugas sinkronisasi data
Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Konfigurasi tugas sinkronisasi batch untuk menyinkronkan data tabel tunggal
Untuk informasi lebih lanjut mengenai prosedur konfigurasi, lihat Configure a batch synchronization task by using the codeless UI dan Configure a batch synchronization task by using the code editor.
Untuk informasi mengenai semua parameter yang dikonfigurasi dan kode yang dijalankan saat menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi batch, lihat Appendix: Code and parameters.
Lampiran: Kode dan parameter
Konfigurasi tugas sinkronisasi batch menggunakan editor kode
Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengatur parameter terkait dalam skrip sesuai format skrip terpadu. Untuk informasi lebih lanjut, lihat Code Editor configuration. Informasi berikut menjelaskan parameter yang perlu Anda konfigurasi untuk sumber data saat menggunakan editor kode.
Demo skrip Reader
Saat mengonfigurasi tugas sinkronisasi data untuk menulis data ke Graph Database (GDB), Anda harus mengonfigurasi vertex dan edge secara terpisah:
Konfigurasi tugas sinkronisasi untuk membaca data vertex dari instans GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang dapat ditoleransi. }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true, // Jika true, throttling diaktifkan. Jika false, throttling dinonaktifkan dan parameter mbps diabaikan. "mbps":"12"// Batas throttling. 1 mbps setara dengan 1 MB/s. } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // Titik akhir instans GDB. "port": 8182, // Port instans GDB. "username": "gdb", // Username untuk mengakses instans GDB. "password": "gdb", // Password untuk username tersebut. "labelType": "VERTEX", // Jenis label. VERTEX menentukan sebuah vertex. "labels": ["label1", "label2"], // Daftar label. Jika dikosongkan, semua vertex diekspor. "column": [ { "name": "id", // Nama field. "type": "string", // Tipe field. "columnType": "primaryKey" // Kategori field. Menentukan kunci utama vertex, yang harus bertipe STRING di GDB. }, { "name": "label", // Nama field. "type": "string", // Tipe field. "columnType": "primaryLabel" // Kategori field. Menentukan label vertex, yang harus bertipe STRING di GDB. }, { "name": "age", // Nama properti. "type": "int", // Tipe properti. "columnType": "vertexProperty" // Kategori field. Menentukan properti dasar vertex di GDB. } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }Konfigurasi tugas sinkronisasi untuk membaca data edge dari instans GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang dapat ditoleransi. }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,// Jika true, throttling diaktifkan. Jika false, throttling dinonaktifkan dan parameter mbps diabaikan. "mbps":"12"// Batas throttling. 1 mbps setara dengan 1 MB/s. } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // Titik akhir instans GDB. "port": 8182, // Port instans GDB. "username": "gdb", // Username untuk mengakses instans GDB. "password": "gdb", // Password untuk username tersebut. "labelType": "EDGE", // Jenis label. EDGE menentukan sebuah edge. "labels": ["label1", "label2"], // Daftar label. Jika dikosongkan, semua edge diekspor. "column": [ { "name": "id", // Nama field. "type": "string", // Tipe field. "columnType": "primaryKey" // Kategori field. Menentukan kunci utama edge, yang harus bertipe STRING di GDB. }, { "name": "label", // Nama field. "type": "string", // Tipe field. "columnType": "primaryLabel" // Kategori field. Menentukan label edge, yang harus bertipe STRING di GDB. }, { "name": "srcId", // Nama field. "type": "string", // Tipe field. "columnType": "srcPrimaryKey" // Kategori field. Menentukan kunci utama vertex awal, yang harus bertipe STRING di GDB. }, { "name": "srcLabel", // Nama field. "type": "string", // Tipe field. "columnType": "srcPrimaryLabel" // Kategori field. Menentukan label vertex awal, yang harus bertipe STRING di GDB. }, { "name": "dstId", // Nama field. "type": "string", // Tipe field. "columnType": "dstPrimaryKey" // Kategori field. Menentukan kunci utama vertex tujuan, yang harus bertipe STRING di GDB. }, { "name": "dstLabel", // Nama field. "type": "string", // Tipe field. "columnType": "dstPrimaryLabel" // Kategori field. Menentukan label vertex tujuan, yang harus bertipe STRING di GDB. }, { "name": "weight", // Nama properti. "type": "double", // Tipe properti. "columnType": "edgeProperty" // Kategori field. Menentukan properti edge. } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }
Parameter skrip Reader
Parameter | Deskripsi | Wajib | Nilai default |
host | Titik koneksi instans GDB. Di Konsol GDB, klik Management untuk instans target guna melihat Internal Endpoint (yang merupakan host). | Ya | Tidak ada nilai default |
port | Nomor port yang digunakan untuk menghubungkan ke instans GDB. | Ya | 8182 |
username | Username yang digunakan untuk menghubungkan ke instans GDB. | Ya | Tidak ada nilai default |
password | Password yang digunakan untuk menghubungkan ke instans GDB. | Ya | Tidak ada nilai default |
labels | Label, yaitu nama vertex atau edge. GDB Reader dapat membaca data dari beberapa vertex atau edge sekaligus. Dalam hal ini, nilai parameter ini berupa array, misalnya ["label1", "label2"]. | Ya | Tidak ada nilai default |
labelType | Jenis label. Nilai yang valid:
| Ya | Tidak ada nilai default |
column | Vertex atau edge yang akan disinkronkan. | Ya | Tidak ada nilai default |
column -> name | Nama properti vertex atau edge yang akan disinkronkan. Parameter ini wajib jika properti vertex atau edge akan disinkronkan. | Ya | Tidak ada nilai default |
column -> type | Tipe data untuk menyimpan properti vertex atau edge yang akan disinkronkan.
| Ya | Tidak ada nilai default |
column -> columnType | Kategori properti vertex atau edge yang akan disinkronkan.
| Ya | Tidak ada nilai default |
Demo skrip Writer
Konfigurasi tugas sinkronisasi untuk menulis data vertex ke database GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang dapat ditoleransi. }, "speed":{ "throttle":true,// Jika true, throttling diaktifkan. Jika false, throttling dinonaktifkan dan parameter mbps diabaikan. "concurrent":3, // Konkurensi pekerjaan. "mbps":"12"// Batas throttling. 1 mbps setara dengan 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", // Nama sumber data. "label": "person", // Label, yaitu nama vertex. "srcLabel": "", // Tidak berlaku untuk vertex. "dstLabel": "", // Tidak berlaku untuk vertex. "labelType": "VERTEX", // Jenis label. "VERTEX" menentukan sebuah vertex. "writeMode": "INSERT", // Kebijakan penanganan kunci utama duplikat. "idTransRule": "labelPrefix", // Aturan konversi kunci utama vertex. "srcIdTransRule": "none", // Tidak berlaku untuk vertex. "dstIdTransRule": "none", // Tidak berlaku untuk vertex. "column": [ { "name": "id", // Nama field. "value": "#{0}", // Mengambil nilai dari kolom sumber pada indeks 0. Penggabungan didukung. "type": "string", // Tipe field. "columnType": "primaryKey" // Kategori field. `primaryKey` menentukan kunci utama. }, // Kunci utama vertex. Nama field harus `id`, tipe harus STRING, dan catatan ini wajib. { "name": "person_age", "value": "#{1}", // Mengambil nilai dari kolom sumber pada indeks 1. Penggabungan didukung. "type": "int", "columnType": "vertexProperty" // Kategori field. `vertexProperty` menentukan properti vertex. }, // Properti vertex. Tipe yang didukung: INT, LONG, FLOAT, DOUBLE, BOOLEAN, dan STRING. { "name": "person_credit", "value": "#{2}", // Mengambil nilai dari kolom sumber pada indeks 2. Penggabungan didukung. "type": "string", "columnType": "vertexProperty" } // Properti vertex. ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }Konfigurasi tugas sinkronisasi untuk menulis data edge ke database GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang dapat ditoleransi. }, "jvmOption":"", "speed":{ "throttle":true,// Jika true, throttling diaktifkan. Jika false, throttling dinonaktifkan dan parameter mbps diabaikan. "concurrent":3, // Konkurensi pekerjaan. "mbps":"12"// Batas throttling. 1 mbps setara dengan 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", // Nama sumber data. "label": "use", // Label, yaitu nama edge. "labelType": "EDGE", // Jenis label. `EDGE` menentukan sebuah edge. "srcLabel": "person", // Label vertex awal. "dstLabel": "software", // Label vertex tujuan. "writeMode": "INSERT", // Kebijakan penanganan kunci utama duplikat. "idTransRule": "labelPrefix", // Aturan konversi kunci utama edge. "srcIdTransRule": "labelPrefix", // Aturan konversi kunci utama vertex awal. "dstIdTransRule": "labelPrefix", // Aturan konversi kunci utama vertex tujuan. "column": [ { "name": "id", // Nama field. "value": "#{0}", // Mengambil nilai dari kolom sumber pada indeks 0. Penggabungan didukung. "type": "string", // Tipe field. "columnType": "primaryKey" // Kategori field. `primaryKey` menentukan kunci utama. }, // Kunci utama edge. Nama field harus `id` dan tipe harus STRING. Catatan ini opsional. { "name": "id", "value": "#{1}", // Penggabungan didukung. Pastikan aturan pemetaan konsisten dengan yang digunakan saat mengimpor vertex. "type": "string", "columnType": "srcPrimaryKey" // Kategori field. `srcPrimaryKey` menentukan kunci utama vertex awal. }, // Kunci utama vertex awal. Nama field harus `id`, tipe harus STRING, dan catatan ini wajib. { "name": "id", "value": "#{2}", // Penggabungan didukung. Pastikan aturan pemetaan konsisten dengan yang digunakan saat mengimpor vertex. "type": "string", "columnType": "dstPrimaryKey" // Kategori field. `dstPrimaryKey` menentukan kunci utama vertex tujuan. }, // Kunci utama vertex tujuan. Nama field harus `id`, tipe harus STRING, dan catatan ini wajib. { "name": "person_use_software_time", "value": "#{3}", // Penggabungan didukung. "type": "long", "columnType": "edgeProperty" // Kategori field. `edgeProperty` menentukan properti edge. }, // Properti edge. Tipe yang didukung: INT, LONG, FLOAT, DOUBLE, BOOLEAN, dan STRING. { "name": "person_regist_software_name", "value": "#{4}", // Penggabungan didukung. "type": "string", "columnType": "edgeProperty" }, // Properti edge. { "name": "id", "value": "#{5}", // Penggabungan didukung. "type": "long", "columnType": "edgeProperty" } // Properti edge dengan nama field `id`. Ini adalah properti biasa, bukan kunci utama, dan bersifat opsional. ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }
Parameter skrip Writer
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data. Harus sama dengan nama sumber data yang telah ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode. | Ya | Tidak ada nilai default |
label | Label, yaitu nama vertex atau edge. GDB Writer dapat memperoleh label dari kolom di tabel sumber. Misalnya, jika Anda mengatur parameter ini ke #{0}, GDB Writer akan menggunakan nilai kolom pertama sebagai label. Indeks kolom dimulai dari 0. | Ya | Tidak ada nilai default |
labelType | Jenis label. Nilai yang valid:
| Ya | Tidak ada nilai default |
srcLabel |
| Tidak | Tidak ada nilai default |
dstLabel |
| Tidak | Tidak ada nilai default |
writeMode | Mode di mana GDB Writer memproses catatan data dengan kunci utama duplikat. Nilai yang valid:
| Ya | INSERT |
idTransRule | Aturan konversi kunci utama. Nilai yang valid:
| Ya | none |
srcIdTransRule | Aturan konversi kunci utama vertex awal ketika parameter labelType diatur ke EDGE. Nilai yang valid:
| Wajib saat parameter labelType diatur ke EDGE | none |
dstIdTransRule | Aturan konversi kunci utama vertex tujuan ketika parameter labelType diatur ke EDGE. Nilai yang valid:
| Wajib saat parameter labelType diatur ke EDGE | none |
column | Vertex atau edge yang ingin Anda sinkronkan.
Contoh properti | Ya | Tidak ada nilai default |