

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

# Petunjuk kueri repeatMode Gremlin
<a name="gremlin-query-hints-repeatMode"></a>

Petunjuk kueri `repeatMode` Neptune menentukan bagaimana mesin Neptune mengevaluasi langkah `repeat()` dalam traversal Gremlin: breadth first, depth first, atau chunked depth first.

Mode evaluasi langkah `repeat()` penting ketika digunakan untuk menemukan atau mengikuti jalur, bukan hanya mengulangi langkah dalam jumlah pengulangan terbatas.

## Sintaksis
<a name="gremlin-query-hints-repeatMode-syntax"></a>

Petunjuk kueri `repeatMode` ditentukan dengan menambahkan langkah `withSideEffect` untuk kueri.

```
g.withSideEffect('Neptune#repeatMode', 'mode').gremlin-traversal
```

**catatan**  
Semua efek samping petunjuk kueri Gremlin diprefiks dengan `Neptune#`.

**Mode yang Tersedia**
+ `BFS`

  Pencarian Breadth-First

  Mode eksekusi default untuk langkah `repeat()`. Ini mendapat semua node saudara sebelum pergi lebih dalam sepanjang jalur.

  Versi ini intensif memori dan perbatasan bisa menjadi sangat besar. Ada risiko yang lebih tinggi bahwa kueri akan kehabisan memori dan dibatalkan oleh mesin Neptune. Ini paling cocok dengan implementasi Gremlin lainnya.
+ `DFS`

  Pencarian Depth-First

  Mengikuti setiap jalur ke kedalaman maksimum sebelum beralih ke solusi berikutnya.

  Ini menggunakan lebih sedikit memori. Ini dapat memberikan performa yang lebih baik dalam situasi seperti menemukan jalur tunggal dari titik awal ke beberapa hop.
+ `CHUNKED_DFS`

  Pencarian Chunked Depth-First

  Pendekatan hibrida yang mengeksplorasi depth-first grafik dalam potongan 1.000 node, bukan 1 node (`DFS`) atau semua node (`BFS)`).

  Mesin Neptune akan mendapatkan hingga 1.000 node pada setiap tingkat sebelum mengikuti jalur yang lebih dalam.

  Ini adalah pendekatan yang seimbang antara kecepatan dan penggunaan memori. 

  Hal ini juga berguna jika Anda ingin menggunakan `BFS`, tapi kueri menggunakan terlalu banyak memori.



## Contoh
<a name="gremlin-query-hints-repeatMode-example"></a>

Bagian berikut menjelaskan efek dari mode pengulangan pada traversal Gremlin.

Di Neptune, mode default untuk langkah `repeat()` adalah untuk melakukan strategi eksekusi breadth-first (`BFS`) untuk semua traversal. 

Dalam kebanyakan kasus, TinkerGraph implementasi menggunakan strategi eksekusi yang sama, tetapi dalam beberapa kasus mengubah eksekusi traversal. 

Misalnya, TinkerGraph implementasi memodifikasi query berikut.

```
g.V("3").repeat(out()).times(10).limit(1).path()
```

Langkah `repeat()` dalam traversal ini di-“unrolled” ke dalam traversal berikut, yang menghasilkan strategi depth-first (`DFS`).

```
g.V(<id>).out().out().out().out().out().out().out().out().out().out().limit(1).path()
```

**penting**  
Mesin permintaan Neptune tidak melakukan ini secara otomatis.

Breadth-first (`BFS`) adalah strategi eksekusi default, dan mirip dengan TinkerGraph dalam kebanyakan kasus. Namun, ada kasus-kasus tertentu di mana strategi depth (`DFS`) lebih baik.

 

**BFS (Default)**  
Breadth-first (BFS) adalah strategi eksekusi default untuk operator `repeat()`.

```
g.V("3").repeat(out()).times(10).limit(1).path()
```

Mesin Neptune sepenuhnya mengeksplorasi perbatasan sembilan hop pertama sebelum menemukan sepuluh hop solusi. Hal ini efektif dalam banyak kasus, seperti kueri jalur terpendek.

Namun, untuk contoh sebelumnya, traversal akan jauh lebih cepat menggunakan mode depth-first (`DFS`) untuk operator `repeat()`.

**DFS**  
Kueri berikut menggunakan mode depth-first (`DFS`) untuk operator `repeat()`.

```
g.withSideEffect("Neptune#repeatMode", "DFS").V("3").repeat(out()).times(10).limit(1)
```

Ini mengikuti setiap solusi individu ke kedalaman maksimum sebelum menjelajahi solusi berikutnya. 