Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Skema grafik properti
neptune.graph.pg_schema()Prosedur ini memberikan gambaran komprehensif tentang struktur grafik properti Anda. Ini mengembalikan semua label node, label tepi, properti dengan tipe data mereka, dan label tripel ({~from, ~type, ~to}pola yang menggambarkan bagaimana tipe node terhubung melalui tipe tepi).
Prosedur ini saat ini hanya tersedia melalui titik akhir OpenCypher dan menemukan skema untuk semua data grafik properti.
Gunakan prosedur ini untuk tugas-tugas seperti:
Pembuatan kueri AI dan LLM - Berikan LLM struktur grafik yang mereka butuhkan untuk menghasilkan kueri Cypher yang valid dari bahasa alami (Text-to-Cypher, aplikasi GraphRag).
Visualisasi dan eksplorasi grafik — Alat seperti Graph Explorer menggunakan informasi skema untuk membuat representasi visual interaktif dari data grafik tanpa memindai seluruh database.
Penemuan skema aplikasi — Aplikasi yang perlu memahami struktur grafik saat startup, seperti generator skema GraphQL atau alat validasi data.
Perbandingan dengan Neptune Analytics
Dalam Neptune Analytics, neptune.graph.pg_schema() sinkron. Ini menghitung skema pada setiap panggilan.
Di Neptune Database, Anda secara eksplisit memicu perhitungan skema asinkron dengan memanggilneptune.graph.pg_schema.compute(), yang segera kembali. Perhitungan berjalan di latar belakang saat Anda melakukan polling untuk penyelesaian menggunakanneptune.graph.pg_schema(). Setelah dihitung, Neptunus mempertahankan skema dan mengembalikannya secara instan pada pembacaan berikutnya tanpa perhitungan ulang. Hasil paruh juga tersedia saat perhitungan masih berlangsung. Anda juga dapat menghentikan komputasi yang sedang berjalan dan melanjutkannya nanti.
Perbandingan dengan Graph Ringkasan API
Grap h Ringkasan API tidak menyediakan rangkap tiga label atau tipe data properti. Prosedur skema grafik properti mengisi celah ini. Tiga label menunjukkan pola hubungan tertentu dalam grafik Anda. Misalnya, a Person terhubung ke Company melalui worksAt tepi. Informasi ini sangat penting bagi LLM untuk menghasilkan kueri yang benar secara semantik.
Prasyarat
Versi mesin
Prosedur skema grafik properti memerlukan mesin Neptune versi 1.4.8.0 atau yang lebih baru.
Izin IAM
Tindakan IAM berikut diperlukan untuk setiap operasi skema:
CALL neptune.graph.pg_schema()— membutuhkanneptune-db:ReadDataViaQuery.CALL neptune.graph.pg_schema.compute()- membutuhkanneptune-db:ReadDataViaQuerydanneptune-db:WriteDataViaQuery.CALL neptune.graph.pg_schema.stop()- membutuhkanneptune-db:ReadDataViaQuerydanneptune-db:WriteDataViaQuery.
stop()Operasi compute() dan memerlukan izin menulis karena mereka memodifikasi status internal yang digunakan untuk cache dan mempertahankan skema.
contoh Contoh kebijakan IAM
Kebijakan berikut memberikan izin minimum yang diperlukan untuk semua operasi skema:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "neptune-db:ReadDataViaQuery", "neptune-db:WriteDataViaQuery" ], "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-resource-id/*" }] }
Untuk memberikan akses read-only ke skema (tanpa kemampuan untuk memicu komputasi), gunakan saja. neptune-db:ReadDataViaQuery
Contoh penulis dan pembaca
Anda dapat memicu komputasi skema hanya pada instance penulis. Instans replika baca dapat membaca skema (yang direplikasi dari penulis) tetapi tidak dapat menjalankan compute() ataustop().
Referensi API
Baca skema
Mengambil skema saat ini dan status komputasi.
Sintaksis:
Perilaku: Kem bali segera dengan skema dan status saat ini. Selalu tidak memblokir. Jika tidak ada skema yang dihitung, mengembalikan state: "NotStarted" dengan bidang skema kosong. Jika komputasi sedang berlangsung, mengembalikan hasil parSIAL dengan state:"InProgress".
Format tanggapan:
Respons berisi objek skema dengan bidang berikut:
Objek status:
state(String) — Status siklus hidup saat ini:NotStartedInProgress,,Completed,Stopped,Failedconcurrency(String) — Jumlah utas yang digunakan untuk perhitungan. 0 berarti otomatis (ditentukan berdasarkan perangkat keras). Rentang: 1 (terendah) hingga 16 (tertinggi).lastComputedTimestamp(String) — ISO-8601 Stempel waktu UTC dari perhitungan terakhir yang berhasil (mis.,)2026-05-29T08:00:00ZprogressPercentage(String) — Kemajuan komputasi: 0 saat tidak dimulai, 0—99 selama komputasi, 100 saat selesaierrorMessage(String) — Hadir hanya ketika permintaan ditolak atau perhitungan gagal. Menjelaskan alasannya.
Objek skema:
nodeLabels— Array semua label simpul unik dalam grafikedgeLabels— Array semua label tepi unik dalam grafiknodeLabelDetails— Untuk setiap label node: properti dan tipe datanyaedgeLabelDetails— Untuk setiap label tepi: properti dan tipe datanyalabelTriples— Array pola hubungan:{~from, ~type, ~to}menjelaskan jenis simpul mana yang terhubung melalui tipe tepi mana
Jenis data yang didukung: StringInt,Long,Double,Bool, Date
Jika properti memiliki beberapa tipe data di seluruh node yang berbeda (misalnya, beberapa node menyimpan age sebagai Int dan lainnya sebagaiString), semua tipe yang diamati terdaftar dalam datatypes array.
Skema komputasi
Memicu perhitungan skema latar belakang.
Sintaksis:
Tindakan IAM diperlukan: dan neptune-db:ReadDataViaQuery neptune-db:WriteDataViaQuery
Parameter:
concurrency(Integer, opsional) — Jumlah utas untuk perhitungan latar belakang. 0 (default) = ditentukan secara otomatis berdasarkan perangkat keras. Rentang: 1 (terendah) hingga 16 (tertinggi). Gunakan nilai yang lebih rendah pada instans yang lebih kecil untuk mengurangi dampak sumber daya.
Perilaku:
Kembali segera dengan status saat ini. Komputasi berjalan secara asinkron di latar belakang.
Jika dipanggil saat status ada
Stopped, perhitungan dilanjutkan dari tempat tinggalnya.Jika dipanggil saat status ada
Completed, mulailah perhitungan ulang baru. Skema sebelumnya terus menyajikan pembacaan sampai perhitungan baru selesai.Jika dipanggil ketika komputasi sudah ada
InProgress, Neptunus menolak permintaan dengan pesan kesalahan.Jika dipanggil selama beban massal aktif, Neptunus menolak permintaan dengan pesan kesalahan.
Respon: Mengem balikan objek status yang menunjukkan status: "InProgress" dengan progressPercentage bidang concurrency dan.
Hentikan perhitungan skema
Menghentikan komputasi latar belakang yang sedang berjalan.
Sintaksis:
Tindakan IAM diperlukan: dan neptune-db:ReadDataViaQuery neptune-db:WriteDataViaQuery
Perilaku:
Menghentikan komputasi yang sedang berjalan. Kemajuan disimpan sehingga dapat dilanjutkan dari tempat tinggalnya ketika Anda menelepon
compute()lagi.Komputasi yang dihentikan tidak dil anjutkan secara otomatis saat mesin restart. Anda harus menelepon secara eksplisit
compute().
Respon: Mengembalikan objek status yang menunjukkan state: "Stopped" dengan arusprogressPercentage.
Menggunakan YIELD dengan hasil skema
Anda dapat menggunakan YIELD untuk mengekstrak bidang skema dan menggabungkannya dengan kueri lain. Contoh berikut mengambil semua label node dan menghitung jumlah node untuk setiap label. collSort()Fungsi mengurutkan daftar menurut abjad:
CALL neptune.graph.pg_schema() YIELD schema WITH schema.nodeLabels as nl UNWIND collSort(nl) as label MATCH (n) WHERE label in labels(n) RETURN label, COUNT(n) as count
Contoh output:
{ "results": [{ "label": "airport", "count": 3503 }, { "label": "continent", "count": 7 }, { "label": "country", "count": 237 }, { "label": "version", "count": 1 }] }
Siklus hidup komputasi skema
Operasi asinkron
Komputasi skema adalah operasi asinkron. Ketika Anda menelep neptune.graph.pg_schema.compute() on, itu segera kembali dengan status saat ini. Perhitungan berjalan di latar belakang. Anda melakukan polling untuk kemajuan dan penyelesaian dengan memanggilneptune.graph.pg_schema(), yang mengembalikan status saat ini danprogressPercentage.
Status
Komputasi skema bergerak melalui status berikut:
NotStarted- Belum ada skema yang dihitung.pg_schema()mengembalikan skema kosong.InProgress— Komputasi latar belakang sedang berjalan.pg_schema()mengembalikan hasil parSIAL (penyatuan skema lengkap terakhir dan penemuan dari perhitungan saat ini).Completed— Perhitungan selesai dengan sukses. Skema lengkap tersedia.Stopped— Komputasi dihentikan, baik dengan menelepstop()on atau karena restart mesin menyela. Hasil paruh tersedia. Kemajuan disimpan sehingga komputasi dapat dilanjutkan dari tempat tinggalnya saat Anda menelepon.compute()Failed- Komputasi mengalami kesalahan. Skema terakhir yang berhasil dihitung (jika ada) tetap tersedia.
Perilaku ketekunan dan restart
Skema yang dihitung dipertahankan dan selamat dari restart mesin. Perilaku restart tergantung pada status pada saat restart:
InProgress- Jika mesin restart selama komputasi, komputasi beralih ke.StoppedPanggilcompute()untuk melanjutkan dari tempat tinggalnya. Kemajuan dipertahankan dan perhitungan berlanjut dari pos pemeriksaan terakhirnya.Stopped— Perhitungan tidak dilanjutkan secara otomatis. Anda harus meneleponcompute()untuk melanjutkan dari tempat tinggalnya.Completed— Skema dimuat dan tersedia segera.
Hasil paruh
Saat komputasi sedang berlangsung, pg_schema() mengembalikan hasil parSIAL. Ini termasuk skema yang telah selesai sebelumnya digabungkan dengan label, properti, dan rangkap tiga yang ditemukan sejauh ini dalam perhitungan saat ini. Ini berarti Anda tidak perlu menunggu perhitungan penuh untuk selesai sebelum mengambil informasi skema yang berguna.
Replika baca
Instans replika baca dapat membaca skema menggunakanCALL neptune.graph.pg_schema(). Neptunus mereplikasi skema dari instance penulis dan membuatnya tersedia pada replika segera saat elemen skema ditemukan pada penulis.
Replika baca tidak dapat dijalankan compute() ataustop(). Panggilan ini mengembalikan kesalahan:
compute()–"Schema cannot be computed on read replica"stop()–"Schema compute cannot be stopped on read replica"
Praktik terbaik
Hitung ulang setelah mutasi — Skema tidak diperbarui secara otomatis saat data berubah. Hitung ulang skema setelah pemuatan massal atau mutasi data yang signifikan. Gunakan
lastComputedTimestampbidang untuk menentukan apakah skema sudah usang relatif terhadap perubahan terbaru dalam grafik Anda.Konkurensi — Nilai konkurensi default (0) secara otomatis menyesuaikan dengan perangkat keras instans Anda. Untuk sebagian besar beban kerja, ini adalah pengaturan yang disarankan. Jika perhitungan latar belakang memengaruhi beban kerja kueri Anda, tentukan nilai yang lebih rendah (misalnya, 1 atau 2) untuk mengurangi penggunaan sumber daya.
Berhenti dan lanjutkan — Jika perhitungan latar belakang memengaruhi beban kerja kueri Anda, hentikan
stop()dan lanjutkan nanti selama periode lalu lintas rendah dengan menelepcompute()on lagi. Perhitungan berlanjut dari tempat tinggalnya.Tangani restart dengan anggun — Jika mesin restart saat komputasi skema sedang berlangsung, komputasi beralih ke.
StoppedPanggilcompute()untuk melanjutkan dari tempat tinggalnya. Kemajuan dipertahankan.Basis data besar — Untuk database dengan volume penyimpanan besar (beberapa TB), perhitungan skema penuh mungkin membutuhkan waktu yang lama. Anda dapat memulai komputasi, membiarkannya berjalan hingga 10-20% kemajuan, lalu berhenti. Hasil parSIAL yang dikumpulkan selama jendela ini menyediakan sampel skema yang berguna dengan banyak label, properti, dan rangkap tiga yang sudah ditemukan. Baca skema parSIAL dengan
pg_schema()saat perhitungan sedang berlangsung atau setelah berhenti. Lanjutkan nanti ketika beban kerja Anda memungkinkan.
Batasan
Penghapusan memerlukan komputasi ulang — Label, properti, dan rangkap tiga yang dihapus hanya dihapus dari skema setelah perhitungan ulang penuh berikutnya. Sampai saat itu, elemen yang dihapus mungkin masih muncul dalam hasil skema.
OpenCypher only — Anda dapat memanggil prosedur ini hanya melalui titik akhir kueri OpenCypher.
Tidak dapat menghitung selama pemuatan massal — Neptunus menolak perhitungan skema saat operasi beban massal aktif. Komputasi pemicu setelah beban massal selesai.
Output sampel
Contoh berikut menunjukkan keluaran skema untuk dataset rute udara:
awscurl -X POST https://your-neptune-endpoint:port/openCypher \ -H "Content-Type: application/x-www-form-urlencoded" \ --regionus-east-1--service neptune-db \ -d 'query=CALL neptune.graph.pg_schema()'
{ "results": [{ "schema": { "edgeLabelDetails": { "route": { "properties": { "dist": ["Int"] } }, "contains": { "properties": {} } }, "edgeLabels": ["route", "contains"], "status": { "concurrency": "16", "lastComputedTimestamp": "2026-06-04T23:58:17Z", "state": "Completed", "progressPercentage": "100" }, "nodeLabels": ["version", "continent", "airport", "country"], "labelTriples": [{ "~type": "route", "~from": "airport", "~to": "airport" }, { "~type": "contains", "~from": "country", "~to": "airport" }, { "~type": "contains", "~from": "continent", "~to": "airport" }], "nodeLabelDetails": { "continent": { "properties": { "type": ["String"], "code": ["String"], "desc": ["String"] } }, "airport": { "properties": { "type": ["String"], "city": ["String"], "icao": ["String"], "code": ["String"], "country": ["String"], "lat": ["Double"], "longest": ["Int"], "runways": ["Int"], "desc": ["String"], "lon": ["Double"], "region": ["String"], "elev": ["Int"] } }, "country": { "properties": { "type": ["String"], "code": ["String"], "desc": ["String"] } }, "version": { "properties": { "date": ["String"], "desc": ["String"], "author": ["String"], "type": ["String"], "code": ["String"] } } } } }] }