

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

# Bagaimana Pernyataan Diindeks di Neptune
<a name="feature-overview-storage-indexing"></a>

Ketika Anda mengkueri grafik quad, untuk setiap posisi quad, Anda dapat menentukan kendala nilai, atau tidak. Kueri mengembalikan semua quad yang cocok dengan kendala nilai yang Anda tentukan.

 Neptunus menggunakan indeks untuk menyelesaikan pola kueri grafik. Indeks ini berada di atas empat komponen utama dari tepi grafik: Subjek (simpul sumber dalam LPG); Predikat (RDF), atau Label Properti atau Tepi (LPG); Objek (simpul target atau nilai properti dalam LPG); dan Grafik (RDF) atau Pengenal Tepi (LPG). Ada 16 (2 ^ 4) kemungkinan pola akses untuk empat posisi komponen quad ini. Anda dapat menanyakan semua 16 pola secara efisien tanpa harus memindai dan memfilter dengan menggunakan enam indeks. Setiap indeks pernyataan quad menggunakan kunci yang terdiri dari empat nilai posisi bersambung dalam urutan yang berbeda. Salah satu kemungkinan kombinasi indeks pernyataan quad yang akan mencakup semua 16 jalur akses adalah: 

```
       Access Pattern                                     Index key order
  ----------------------------------------------------    ---------------
   1.  ????  (No constraints; returns every quad)             SPOG
   2.  SPOG  (Every position is constrained)                  SPOG
   3.  SPO?  (S, P, and O are constrained; G is not)          SPOG
   4.  SP??  (S and P are constrained; O and G are not)       SPOG
   5.  S???  (S is constrained; P, O, and G are not)          SPOG
   6.  S??G  (S and G are constrained; P and O are not)       SPOG

   7.  ?POG  (P, O, and G are constrained; S is not)          POGS
   8.  ?PO?  (P and O are constrained; S and G are not)       POGS
   9.  ?P??  (P is constrained; S, O, and G are not)          POGS

  10.  ?P?G  (P and G are constrained; S and O are not)       GPSO
  11.  SP?G  (S, P, and G are constrained; O is not)          GPSO
  12.  ???G  (G is constrained; S, P, and O are not)          GPSO

  13.  S?OG  (S, O, and G are constrained; P is not)          OGSP
  14.  ??OG  (O and G are constrained; S and P are not)       OGSP
  15.  ??O?  (O is constrained; S, P, and G are not)          OGSP

  16.  S?O?  (S and O are constrained; P and G are not)       OSGP
```

Neptune menciptakan dan mempertahankan hanya tiga dari keenam indeks tersebut secara default:
+ `SPOG –  ` Menggunakan kunci yang terdiri dari `Subject + Predicate + Object + Graph`.
+ `POGS –  ` Menggunakan kunci yang terdiri dari `Predicate + Object + Graph + Subject`.
+ `GPSO –  ` Menggunakan kunci yang terdiri dari `Graph + Predicate + Subject + Object`.

Ketiga indeks ini menangani banyak pola akses yang paling umum. Mempertahankan hanya tiga indeks pernyataan penuh alih-alih keenamnya sangat mengurangi sumber daya yang Anda butuhkan untuk mendukung akses cepat tanpa pemindaian dan penyaringan. Misalnya, indeks `SPOG` memungkinkan pencarian efisien setiap kali prefiks dari posisi, seperti vertex atau vertex dan pengidentifikasi properti, terikat. Indeks `POGS` memungkinkan akses yang efisien ketika hanya edge atau label properti disimpan dalam posisi `P` terikat.

API tingkat rendah untuk menemukan pernyataan mengambil pola pernyataan di mana beberapa posisi diketahui dan sisanya dibiarkan untuk penemuan oleh pencarian indeks. Dengan menyusun posisi yang dikenal menjadi prefiks kunci sesuai dengan urutan kunci indeks untuk salah satu indeks pernyataan, Neptune melakukan pemindaian rentang untuk mengambil semua pernyataan yang cocok dengan posisi yang diketahui.

Namun, salah satu indeks pernyataan yang *tidak* dibuat Neptune secara default adalah indeks `OSGP` traversal terbalik, yang dapat mengumpulkan predikat di seluruh objek dan subjek. Sebaliknya, Neptune secara default melacak predikat yang berbeda dalam indeks terpisah yang digunakan untuk melakukan pemindaian gabungan `{all P x POGS}`. Ketika Anda bekerja dengan Gremlin, predikat sesuai dengan properti atau label edge.

Jika jumlah predikat yang berbeda dalam grafik menjadi besar, strategi akses Neptune default dapat menjadi tidak efisien. Di Gremlin, misalnya, sebuah langkah `in()` di mana tidak ada label edge diberikan, atau langkah apa pun yang menggunakan `in()` secara internal seperti `both()` atau `drop()`, bisa menjadi sangat tidak efisien.

## Mengaktifkan Pembuatan Indeks OSGP Menggunakan Mode Lab
<a name="feature-overview-storage-indexing-osgp"></a>

Jika model data Anda membuat sejumlah besar predikat berbeda, Anda mungkin mengalami penurunan kinerja dan biaya operasional yang lebih tinggi yang dapat ditingkatkan secara dramatis dengan menggunakan Mode Lab untuk mengaktifkan indeks [OSGP selain tiga indeks](features-lab-mode.md#features-lab-mode-features-osgp-index) yang dipertahankan Neptunus secara default.

Mengaktifkan indeks OSGP dapat memiliki beberapa sisi negatif:
+ Tingkat insert dapat memperlambat hingga 23%.
+ Penyimpanan meningkat hingga 20%.
+ Kueri baca yang menyentuh semua indeks secara seimbang (yang cukup langka) mungkin memiliki peningkatan latensi.

Namun, secara umum mengaktifkan indeks OSGP untuk Klaster DB dengan jumlah besar predikat yang berbeda sangat menguntungkan. Pencarian berbasis objek menjadi sangat efisien (misalnya, menemukan semua edge yang masuk ke vertex, atau semua subjek yang terhubung ke objek tertentu), dan sebagai hasilnya menjatuhkan vertex juga menjadi jauh lebih efisien.

**penting**  
Anda hanya dapat mengaktifkan indeks OSGP dalam klaster DB kosong, sebelum Anda memuat data ke dalamnya.

   

## Pernyataan Gremlin dalam model data Neptune
<a name="feature-overview-storage-indexing-gremlin"></a>

Data properti-grafik Gremlin dinyatakan dalam model SPOG menggunakan tiga kelas pernyataan, yaitu:
+ [Pernyataan Label Vertex Gremlin](gremlin-explain-background-statements.md#gremlin-explain-background-vertex-labels)
+ [Pernyataan Edge](gremlin-explain-background-statements.md#gremlin-explain-background-edge-statements) 
+ [Pernyataan Properti](gremlin-explain-background-statements.md#gremlin-explain-background-property-statements) 

Untuk penjelasan tentang bagaimana ketiganya digunakan dalam kueri Gremlin, lihat [Memahami bagaimana kueri Gremlin bekerja di Neptune](gremlin-explain-background.md).