Format data muat Gremlin - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Format data muat Gremlin

Untuk memuat data Apache TinkerPop Gremlin menggunakan CSV format, Anda harus menentukan simpul dan tepi dalam file terpisah.

Loader dapat memuat dari beberapa file vertex dan beberapa file edge dalam pekerjaan pemuatan tunggal.

Untuk setiap perintah pemuatan, rangkaian file yang akan dimuat harus dalam folder yang sama di bucket Amazon S3, dan Anda menentukan nama folder untuk parameter source. Nama file dan ekstensi nama file tidak penting.

Format Amazon CSV Neptunus mengikuti RFC spesifikasi 4180. CSV Untuk informasi selengkapnya, lihat Format Umum dan MIME Jenis CSV File di situs web Internet Engineering Task Force (IETF).

catatan

Semua file harus dikodekan dalam format UTF -8.

Setiap file memiliki baris header yang dipisahkan koma. Baris header terdiri dari kedua header kolom sistem dan header kolom properti.

Header Kolom Sistem

Header kolom sistem yang diperlukan dan diizinkan berbeda untuk file vertex dan file edge.

Setiap kolom sistem hanya dapat muncul satu kali di header.

Semua label peka terhadap besar kecilnya huruf.

Header Vertex

  • ~id- Diperlukan

    ID untuk vertex.

  • ~label

    Label untuk vertex. Beberapa nilai label diperbolehkan, dipisahkan dengan titik koma (;).

    Jika tidak ~label ada, TinkerPop berikan label dengan nilaivertex, karena setiap simpul harus memiliki setidaknya satu label.

Header tepi

  • ~id- Diperlukan

    ID untuk edge.

  • ~from- Diperlukan

    ID vertex dari vertex from.

  • ~to- Diperlukan

    ID vertex dari vertex to.

  • ~label

    Label untuk edge. Edge hanya dapat memiliki satu label.

    Jika tidak ~label ada, TinkerPop berikan label dengan nilainyaedge, karena setiap tepi harus memiliki label.

Header Kolom Properti

Anda dapat menentukan kolom (:) untuk properti dengan menggunakan sintaks berikut. Nama jenis tidak peka dengan huruf besar/kecil. Perhatikan, bagaimanapun, bahwa jika titik dua muncul dalam nama properti, itu harus diloloskan dengan mendahuluinya dengan garis miring terbalik:. \:

propertyname:type
catatan

Spasi, koma, carriage return, dan karakter baris baru tidak diperbolehkan di header kolom, sehingga nama properti tidak dapat menyertakan karakter ini.

Anda dapat menentukan kolom untuk jenis array dengan menambahkan [] ke jenisnya:

propertyname:type[]
catatan

Properti edge hanya dapat memiliki satu nilai dan akan menyebabkan kesalahan jika jenis array yang ditentukan atau nilai kedua ditentukan.

Contoh berikut menunjukkan header kolom untuk properti bernama age dengan tipe Int.

age:Int

Setiap baris dalam file akan perlu memiliki integer dalam posisi itu atau dibiarkan kosong.

Array dari string diperbolehkan, tetapi string dalam array tidak dapat mencakup titik koma (;) kecuali ia di-escape menggunakan garis miring terbalik (seperti ini: \;).

Menentukan Kardinalitas Kolom

Dimulai di Rilis 1.0.1.0.200366.0 (2019-07-26), header kolom dapat digunakan untuk menentukan kardinalitas untuk properti yang diidentifikasi oleh kolom. Hal ini memungkinkan loader massal untuk menghormati kardinalitas yang sama dengan cara yang kueri Gremlin lakukan.

Anda menentukan kardinalitas kolom seperti ini:

propertyname:type(cardinality)

Bagian cardinality nilainya bisa berupa single atauset. Default-nya diasumsikan sebagai set, yang berarti bahwa kolom dapat menerima beberapa nilai. Dalam kasus file edge, kardinalitas selalu tunggal dan menentukan kardinalitas lainnya menyebabkan loader melempar pengecualian.

Jika kardinalitas single, loader melempar kesalahan jika nilai sebelumnya sudah ada ketika nilai dimuat, atau jika beberapa nilai dimuat. Perilaku ini dapat di-override sehingga nilai yang ada diganti ketika nilai baru dimuat dengan menggunakan bendera updateSingleCardinalityProperties. Lihat Perintah Loader.

Hal ini dimungkinkan untuk menggunakan pengaturan kardinalitas dengan tipe array, meskipun hal ini umumnya tidak diperlukan. Berikut adalah kombinasi yang mungkin:

  • name:type — kardinalitasnya adalah set, dan kontennya bernilai tunggal.

  • name:type[] — kardinalitasnya adalah set, dan kontennya multi-nilai.

  • name:type(single) — kardinalitasnya adalah single, dan kontennya bernilai tunggal.

  • name:type(set) — kardinalitasnya adalah set, yang sama dengan default, dan kontennya bernilai tunggal.

  • name:type(set)[] — kardinalitasnya adalah set, dan kontennya multi-nilai.

  • name:type(single)[] — ini bertentangan dan menyebabkan kesalahan dilempar.

Bagian berikut mencantumkan semua jenis data Gremlin yang tersedia.

Jenis Data Gremlin

Ini adalah daftar jenis properti yang diizinkan, dengan deskripsi masing-masing jenis.

Bool (atau Boolean)

Menunjukkan bidang Boolean. Nilai yang diizinkan: false, true

catatan

Nilai apa pun selain true akan diperlakukan sebagai false.

Jenis Angka Utuh

Nilai-nilai di luar rentang yang didefinisikan menghasilkan kesalahan.

Tipe Kisaran
Byte -128 hingga 127
Pendek -32768 ke 32767
Int -2^31 hingga 2 ^ 31-1
Long -2 ^ 63 hingga 2 ^ 63-1
Jenis Angka Desimal

Mendukung notasi desimal atau notasi ilmiah. Juga memungkinkan simbol seperti (+/-) Infinity atau NaN. INF tidak didukung.

Tipe Kisaran
Desimal Titik mengambang 32-bit IEEE 754
Ganda Titik mengambang 64-bit IEEE 754

Nilai float dan double yang terlalu panjang dimuat dan dibulatkan ke nilai terdekat untuk presisi 24-bit (float) dan 53-bit (double). Sebuah nilai tengah dibulatkan ke 0 untuk digit terakhir yang tersisa di tingkat bit.

String

Tanda kutip adalah opsional. Koma, baris baru, dan karakter carriage return secara otomatis di-escape jika mereka termasuk dalam string yang diapit oleh tanda kutip ganda ("). Contoh: "Hello, World"

Untuk memasukkan tanda kutip dalam string bertanda kutip, Anda dapat meng-escape tanda kutip dengan menggunakan dua berturut-turut: Contoh: "Hello ""World"""

Array dari string diperbolehkan, tetapi string dalam array tidak dapat mencakup titik koma (;) kecuali ia di-escape menggunakan garis miring terbalik (seperti ini: \;).

Jika Anda ingin mengapit string dalam array dengan tanda kutip, Anda harus mengapit keseluruhan array dengan satu set tanda kutip. Contoh: "String one; String 2; String 3"

Tanggal

Tanggal Java dalam format ISO -8601. Mendukung format berikut: yyyy-MM-dd, yyyy-MM-ddTHH:mm, yyyy-MM-ddTHH:mm:ss, yyyy-MM-ddTHH:mm:ssZ

Format Baris Gremlin

Pembatas

Bidang dalam baris dipisahkan dengan koma. Catatan dipisahkan oleh baris baru atau baris baru yang diikuti dengan carriage return.

Bidang Kosong

Bidang kosong diperbolehkan untuk kolom yang tidak diperlukan (seperti properti yang ditetapkan pengguna). Bidang kosong masih memerlukan pemisah koma. Bidang kosong pada kolom yang diperlukan akan menghasilkan kesalahan penguraian. Nilai string kosong ditafsirkan sebagai nilai string kosong untuk bidang; bukan sebagai bidang kosong. Contoh pada bagian berikutnya memiliki bidang kosong di setiap vertex contoh.

Vertex IDs

Nilai ~id harus unik untuk semua vertex di setiap file vertex. Beberapa baris vertex dengan nilai-nilai ~id identik diterapkan ke satu vertex dalam grafik. String kosong ("") adalah id yang valid, dan simpul dibuat dengan string kosong sebagai id.

Tepi IDs

Selain itu, nilai ~id harus unik untuk semua edge di setiap file edge. Beberapa baris edge dengan nilai-nilai ~id identik diterapkan ke satu edge dalam grafik. String kosong ("") adalah id yang valid, dan tepi dibuat dengan string kosong sebagai id.

Label

Label peka huruf besar/kecil dan tidak boleh kosong. Nilai "" akan menghasilkan kesalahan.

Nilai String

Tanda kutip adalah opsional. Koma, baris baru, dan karakter carriage return secara otomatis di-escape jika mereka termasuk dalam string yang diapit oleh tanda kutip ganda ("). Nilai string kosong ("") ditafsirkan sebagai nilai string kosong untuk bidang; bukan sebagai bidang kosong.

CSVSpesifikasi Format

Format CSV Neptunus mengikuti spesifikasi CSV 4180RFC, termasuk persyaratan berikut.

  • Akhir baris gaya Unix dan Windows didukung (\n atau \r n).

  • Setiap bidang dapat dikutip (menggunakan tanda kutip ganda).

  • Bidang yang berisi line-break, double-quote, atau koma harus dikutip. (Jika tidak, pemuatan dibatalkan segera.)

  • Sebuah karakter tanda kutip ganda (") dalam bidang harus diwakili oleh dua (dua) karakter tanda kutip. Misalnya, string Hello "World" harus ada sebagai "Hello ""World""" dalam data.

  • Ruang sekitar antara delimiter diabaikan. Jika baris hadir sebagaivalue1, value2, mereka disimpan sebagai "value1" dan"value2".

  • Setiap karakter lainnya yang di-escape disimpan verbatim. Misalnya, "data1\tdata2" disimpan sebagai "data1\tdata2". Tidak ada proses escape lebih lanjut yang diperlukan selama karakter ini diapit dalam tanda kutip.

  • Bidang kosong diperbolehkan. Bidang kosong dianggap sebagai nilai kosong.

  • Beberapa nilai untuk satu bidang ditentukan dengan titik koma (;) antara nilai-nilai.

Untuk informasi selengkapnya, lihat Format Umum dan MIME Jenis CSV File di situs web Internet Engineering Task Force (IETF).

Contoh Gremlin

Diagram berikut menunjukkan contoh dua simpul dan tepi yang diambil dari Grafik TinkerPop Modern.

Diagram yang menggambarkan dua vertex dan edge, berisi marko age 29 dan software lop dengan lang: java.

Berikut ini adalah grafik dalam format beban CSV Neptunus.

File vertex:

~id,name:String,age:Int,lang:String,interests:String[],~label v1,"marko",29,,"sailing;graphs",person v2,"lop",,"java",,software

Tampilan tabular dari file vertex:

~id Nama:string Umur: int lang:string Minat:string [] ~label
v1 “marko” 29 ["berlayar”, “grafik"] pribadi
v2 “lop” “jawa” software

File edge:

~id,~from,~to,~label,weight:Double e1,v1,v2,created,0.4

Tampilan tabular dari file edge:

~id ~dari ~untuk ~label Berat: ganda
e1 v1 v2 dibuat 0,4
Langkah Berikutnya

Sekarang setelah Anda tahu lebih banyak tentang format pemuatan, lihat Contoh: Memuat Data ke Instans DB Neptune.