Bagaimana Neptune memproses kueri Gremlin menggunakan indeks pernyataan - Amazon Neptune

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

Bagaimana Neptune memproses kueri Gremlin menggunakan indeks pernyataan

Pernyataam diakses di Amazon Neptune dengan cara tiga indeks pernyataan, seperti yang dijelaskan dalam Bagaimana Pernyataan Diindeks di Neptune. Neptune mengekstrak sebuah pola pernyataan dari kueri Gremlin di mana beberapa posisi diketahui, dan sisanya dibiarkan untuk penemuan oleh pencarian indeks.

Neptune mengasumsikan bahwa ukuran skema grafik properti tidak besar. Ini berarti bahwa jumlah label edge yang berbeda dan nama properti cukup rendah, sehingga jumlah predikat yang berbeda rendah. Neptune melacak predikat yang berbeda dalam indeks terpisah. Menggunakan cache predikat ini untuk melakukan pemindaian serikat { all P x POGS } daripada menggunakan indeks OSGP. Menghindari kebutuhan untuk indeks OSGP traversal terbalik menghemat ruang penyimpanan dan throughput beban.

API Explain/Profile Gremlin Neptune memungkinkan Anda memperoleh jumlah predikat dalam grafik Anda. Anda kemudian dapat menentukan apakah aplikasi Anda membatalkan asumsi Neptune bahwa skema grafik properti Anda kecil.

Contoh berikut membantu menggambarkan bagaimana Neptune menggunakan indeks untuk memproses kueri Gremlin.

Pertanyaan: Apa label simpul? v1

Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*

Pertanyaan: Apa tepi luar 'tahu' dari simpul? v1

Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*

Pertanyaan: Simpul mana yang memiliki label Person simpul?

Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*

Pertanyaan: Apa simpul dari/ke dari tepi tertentu? e1

Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*

Satu indeks pernyataan yang tidak Neptune miliki adalah indeks OSGP traversal terbalik. Indeks ini dapat digunakan untuk mengumpulkan semua edge masuk di semua label edge, seperti dalam contoh berikut.

Pertanyaan: Apa v1 simpul yang berdekatan yang masuk?

Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist