DataWorks menyediakan Graph Database (GDB) Reader dan GDB Writer untuk membaca data dari dan 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 |
|
|
Mengembangkan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi data, lihat bagian-bagian berikut. Untuk pengaturan parameter, lihat tip info setiap parameter pada tab konfigurasi tugas.
Menambahkan sumber data
Mengonfigurasi tugas sinkronisasi batch untuk menyinkronkan data tabel tunggal
Untuk detail lebih lanjut tentang prosedur konfigurasi, lihat Mengonfigurasi Tugas Sinkronisasi Batch Menggunakan UI Tanpa Kode dan Mengonfigurasi Tugas Sinkronisasi Batch Menggunakan Editor Kode.
Untuk informasi tentang semua parameter yang dikonfigurasi dan kode yang dijalankan saat menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi batch, lihat Lampiran: Kode dan Parameter.
Lampiran: Kode dan parameter
Lampiran: Mengonfigurasi tugas sinkronisasi batch menggunakan editor kode
Kode untuk GDB Reader
Dalam kode berikut, dua tugas sinkronisasi dikonfigurasi untuk membaca data dari instance GDB.
Mengonfigurasi tugas sinkronisasi untuk membaca data simpul dari instance GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang diizinkan. }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,/// Menentukan apakah throttling diaktifkan. Nilai false menunjukkan throttling dinonaktifkan, dan nilai true menunjukkan throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle disetel ke true. "mbps":"12"// Laju transmisi maksimum. Unit: MB/s. } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // Titik akhir yang digunakan untuk terhubung ke instance GDB. "port": 8182, // Nomor port yang digunakan untuk terhubung ke instance GDB. "username": "gdb", // Nama pengguna yang digunakan untuk terhubung ke instance GDB. "password": "gdb", // Kata sandi yang digunakan untuk terhubung ke instance GDB. "labelType": "VERTEX", // Jenis label. Nilai VERTEX menunjukkan simpul. "labels": ["label1", "label2"], // Label simpul yang akan disinkronkan. Jika parameter ini dibiarkan kosong, semua simpul disinkronkan. "column": [ { "name": "id", // Nama properti simpul. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "primaryKey" // Kategori properti simpul. Nilai primaryKey menunjukkan bahwa data yang disinkronkan adalah kunci utama simpul dan bertipe STRING dalam instance GDB. }, { "name": "label", // Nama properti simpul. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "primaryLabel" // Kategori properti simpul. Nilai primaryLabel menunjukkan bahwa data yang disinkronkan adalah label simpul dan bertipe STRING dalam instance GDB. }, { "name": "age", // Nama properti simpul. "type": "int", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "vertexProperty" // Kategori properti simpul. Nilai vertexProperty menunjukkan properti simpul umum. } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }Mengonfigurasi tugas sinkronisasi untuk membaca data tepi dari instance GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang diizinkan. }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,// Menentukan apakah throttling diaktifkan. Nilai false menunjukkan throttling dinonaktifkan, dan nilai true menunjukkan throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle disetel ke true. "mbps":"12"// Laju transmisi maksimum. Unit: MB/s. } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // Titik akhir yang digunakan untuk terhubung ke instance GDB. "port": 8182, // Nomor port yang digunakan untuk terhubung ke instance GDB. "username": "gdb", // Nama pengguna yang digunakan untuk terhubung ke instance GDB. "password": "gdb", // Kata sandi yang digunakan untuk terhubung ke instance GDB. "labelType": "EDGE", // Jenis label. Nilai EDGE menunjukkan tepi. "labels": ["label1", "label2"], // Label tepi yang akan disinkronkan. Jika parameter ini dibiarkan kosong, semua tepi disinkronkan. "column": [ { "name": "id", // Nama properti tepi. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "primaryKey" // Kategori properti tepi. Nilai primaryKey menunjukkan bahwa data yang disinkronkan adalah kunci utama tepi dan bertipe STRING dalam instance GDB. }, { "name": "label", // Nama properti tepi. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "primaryLabel" // Kategori properti tepi. Nilai primaryLabel menunjukkan bahwa data yang disinkronkan adalah label tepi dan bertipe STRING dalam instance GDB. }, { "name": "srcId", // Nama properti tepi. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "srcPrimaryKey" // Kategori properti tepi. Nilai srcPrimaryKey menunjukkan bahwa data yang disinkronkan adalah kunci utama simpul awal dan bertipe STRING dalam instance GDB. }, { "name": "srcLabel", // Nama properti tepi. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "srcPrimaryLabel" // Kategori properti tepi. Nilai srcPrimaryLabel menunjukkan bahwa data yang disinkronkan adalah label simpul awal dan bertipe STRING dalam instance GDB. }, { "name": "dstId", // Nama properti tepi. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "dstPrimaryKey" // Kategori properti tepi. Nilai dstPrimaryKey menunjukkan bahwa data yang disinkronkan adalah kunci utama simpul akhir dan bertipe STRING dalam instance GDB. }, { "name": "dstLabel", // Nama properti tepi. "type": "string", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "dstPrimaryLabel" // Kategori properti tepi. Nilai dstPrimaryLabel menunjukkan bahwa data yang disinkronkan adalah label simpul akhir dan bertipe STRING dalam instance GDB. }, { "name": "weight", // Nama properti tepi. "type": "double", // Tipe data untuk menyimpan data yang akan disinkronkan. "columnType": "edgeProperty" // Kategori properti tepi. Nilai edgeProperty menunjukkan properti tepi umum. } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }
Parameter dalam kode untuk GDB Reader
Parameter | Deskripsi | Diperlukan | Nilai default |
host | Titik akhir yang digunakan untuk terhubung ke instance GDB. Anda dapat masuk ke Konsol GDB, temukan instance yang ingin Anda konfigurasikan, dan klik View Instance Details di kolom Aksi untuk melihat Intranet URL. | Ya | Tidak ada nilai default |
port | Nomor port yang digunakan untuk terhubung ke instance GDB. | Ya | 8182 |
username | Nama pengguna yang digunakan untuk terhubung ke instance GDB. | Ya | Tidak ada nilai default |
password | Kata sandi yang digunakan untuk terhubung ke instance GDB. | Ya | Tidak ada nilai default |
labels | Label, yaitu nama simpul atau tepi. GDB Reader dapat membaca data dari beberapa simpul atau tepi sekaligus. Dalam hal ini, nilai parameter ini adalah array, seperti ["label1", "label2"]. | Ya | Tidak ada nilai default |
labelType | Jenis label. Nilai valid:
| Ya | Tidak ada nilai default |
column | Simpul atau tepi yang akan disinkronkan. | Ya | Tidak ada nilai default |
column -> name | Nama properti simpul atau tepi yang akan disinkronkan. Parameter ini diperlukan jika properti simpul atau tepi akan disinkronkan. | Ya | Tidak ada nilai default |
column -> type | Tipe data untuk menyimpan properti simpul atau tepi yang akan disinkronkan.
| Ya | Tidak ada nilai default |
column -> columnType | Kategori properti simpul atau tepi yang akan disinkronkan.
| Ya | Tidak ada nilai default |
Kode untuk GDB Writer
Mengonfigurasi tugas sinkronisasi untuk menulis data simpul ke database GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang diizinkan. }, "speed":{ "throttle":true,// Menentukan apakah akan mengaktifkan pembatasan laju. Nilai false menunjukkan bahwa pembatasan laju dinonaktifkan, dan nilai true menunjukkan bahwa pembatasan laju diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle disetel ke true. "concurrent":3, // Jumlah maksimum thread paralel. "mbps":"12"// Laju transmisi maksimum. Unit: 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 verteks. "srcLabel": "", // Anda tidak perlu mengonfigurasi parameter ini untuk verteks. "dstLabel": "", // Anda tidak perlu mengonfigurasi parameter ini untuk verteks. "labelType": "VERTEX", // Jenis label. Nilai VERTEX menunjukkan verteks. "writeMode": "INSERT", // Mode di mana GDB Writer memproses catatan data dengan kunci utama duplikat. "idTransRule": "labelPrefix", // Aturan untuk mengonversi kunci utama verteks. "srcIdTransRule": "none", // Anda tidak perlu mengonfigurasi parameter ini untuk verteks. "dstIdTransRule": "none", // Anda tidak perlu mengonfigurasi parameter ini untuk verteks. "column": [ { "name": "id", // Nama properti verteks. "value": "#{0}", // Nilai kolom pertama di sumber digunakan sebagai nilai properti verteks. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. Dalam contoh ini, 0 adalah indeks kolom. "type": "string", // Tipe data properti verteks. "columnType": "primaryKey" // Kategori properti verteks. Nilai primaryKey menunjukkan kunci utama. }, // Kunci utama verteks. Nilainya harus ID tipe STRING, dan rekaman tersebut harus ada. { "name": "person_age", "value": "#{1}", // Nilai kolom kedua di sumber digunakan sebagai nilai properti verteks. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. "type": "int", "columnType": "vertexProperty" // Kategori properti verteks. Nilai vertexProperty menunjukkan properti verteks umum. }, // Properti umum verteks. Nilainya bisa bertipe INT, LONG, FLOAT, DOUBLE, BOOLEAN, atau STRING. { "name": "person_credit", "value": "#{2}", // Nilai kolom ketiga di sumber digunakan sebagai nilai properti verteks. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. "type": "string", "columnType": "vertexProperty" }, // Properti umum verteks. ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }Mengonfigurasi tugas sinkronisasi untuk menulis data tepi ke database GDB
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // Jumlah maksimum catatan data kotor yang diizinkan. }, "jvmOption":"", "speed":{ "throttle":true,// Menentukan apakah throttling diaktifkan. Nilai false menunjukkan throttling dinonaktifkan, dan nilai true menunjukkan throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle disetel ke true. "concurrent":3, // Jumlah maksimum thread paralel. "mbps":"12"// Laju transmisi maksimum. Unit: 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 tepi. "labelType": "EDGE", // Jenis label. Nilai EDGE menunjukkan tepi. "srcLabel": "person", // Nama simpul awal dalam tepi. "dstLabel": "software", // Nama simpul akhir dalam tepi. "writeMode": "INSERT", // Mode di mana GDB Writer memproses catatan data dengan kunci utama duplikat. "idTransRule": "labelPrefix", // Aturan untuk mengonversi kunci utama tepi. "srcIdTransRule": "labelPrefix", // Aturan untuk mengonversi kunci utama simpul awal dalam tepi. "dstIdTransRule": "labelPrefix", // Aturan untuk mengonversi kunci utama simpul akhir dalam tepi. "column": [ { "name": "id", // Nama properti tepi. "value": "#{0}", // Nilai kolom pertama dalam sumber digunakan sebagai nilai properti tepi. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. "type": "string", // Tipe data properti tepi. "columnType": "primaryKey" // Kategori properti tepi. Nilai primaryKey menunjukkan kunci utama. }, // Kunci utama tepi. Nilainya harus ID bertipe STRING, dan catatan tersebut harus ada. { "name": "id", "value": "#{1}", // Nilai kolom kedua dalam sumber digunakan sebagai nilai properti tepi. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. Aturan pemetaan harus sama dengan yang dikonfigurasikan saat Anda mengimpor simpul. "type": "string", "columnType": "srcPrimaryKey" // Kategori properti tepi. Nilai srcPrimaryKey menunjukkan kunci utama simpul awal. }, // Kunci utama simpul awal. Nilainya harus ID bertipe STRING, dan catatan tersebut harus ada. { "name": "id", "value": "#{2}", // Nilai kolom ketiga dalam sumber digunakan sebagai nilai properti tepi. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. Aturan pemetaan harus sama dengan yang dikonfigurasikan saat Anda mengimpor simpul. "type": "string", "columnType": "dstPrimaryKey" // Kategori properti tepi. Nilai dstPrimaryKey menunjukkan kunci utama simpul akhir. }, // Kunci utama simpul akhir. Nilainya harus ID bertipe STRING, dan catatan tersebut harus ada. { "name": "person_use_software_time", "value": "#{3}", // Nilai kolom keempat dalam sumber digunakan sebagai nilai properti tepi. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. "type": "long", "columnType": "edgeProperty" // Kategori properti tepi. Nilai edgeProperty menunjukkan properti tepi umum. }, // Properti umum tepi. Nilainya bisa bertipe INT, LONG, FLOAT, DOUBLE, BOOLEAN, atau STRING. { "name": "person_regist_software_name", "value": "#{4}", // Nilai kolom kelima dalam sumber digunakan sebagai nilai properti tepi. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. "type": "string", "columnType": "edgeProperty" }, // Properti umum tepi. { "name": "id", "value": "#{5}", // Nilai kolom keenam dalam sumber digunakan sebagai nilai properti tepi. Jika beberapa kolom ditentukan, kolom-kolom tersebut dapat digabungkan. "type": "long", "columnType": "edgeProperty" }, // Properti umum tepi. Nilainya adalah ID. Berbeda dengan kunci utama, properti ini bersifat opsional. ] }, "stepType":"gdb" } ], "type":"job", "version":"2.0" }
Parameter dalam kode untuk GDB Writer
Parameter | Deskripsi | Diperlukan | 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 simpul atau tepi. GDB Writer dapat memperoleh label dari kolom dalam tabel sumber. Misalnya, jika Anda menyetel parameter ini ke #{0}, GDB Writer menggunakan nilai kolom pertama sebagai label. Indeks kolom dimulai dari 0. | Ya | Tidak ada nilai default |
labelType | Jenis label. Nilai 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 valid:
| Ya | INSERT |
idTransRule | Aturan untuk mengonversi kunci utama. Nilai valid:
| Ya | none |
srcIdTransRule | Aturan untuk mengonversi kunci utama simpul awal saat parameter labelType disetel ke EDGE. Nilai valid:
| Diperlukan saat parameter labelType disetel ke EDGE | none |
dstIdTransRule | Aturan untuk mengonversi kunci utama simpul akhir saat parameter labelType disetel ke EDGE. Nilai valid:
| Diperlukan saat parameter labelType disetel ke EDGE | none |
column | Simpul atau tepi yang ingin Anda sinkronkan.
Contoh properti | Ya | Tidak ada nilai default |