La cache di ricerca di Neptune può accelerare le query di lettura - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

La cache di ricerca di Neptune può accelerare le query di lettura

Amazon Neptune implementa una cache di ricerca che utilizza la cache SSD basata sull'istanza per migliorare R5d le prestazioni NVMe di lettura per le query con ricerche frequenti e ripetitive di valori di proprietà o valori letterali. RDF La cache di ricerca memorizza temporaneamente questi valori nel volume in cui è possibile accedervi rapidamente. NVMe SSD

Questa funzionalità è disponibile a partire dal Motore Amazon Neptune versione 1.0.4.2.R2 (01/06/2021).

Le query di lettura che restituiscono le proprietà di un gran numero di vertici e spigoli, o di molte RDF triple, possono avere una latenza elevata se i valori o i valori letterali delle proprietà devono essere recuperati dai volumi di archiviazione del cluster anziché dalla memoria. Gli esempi includono le query di lettura di lunga durata che restituiscono un gran numero di nomi completi da un grafo di identità o di indirizzi IP da un grafo di rilevamento delle frodi. All'aumentare del numero di valori o valori RDF letterali delle proprietà restituiti dalla query, la memoria disponibile diminuisce e l'esecuzione della query può peggiorare notevolmente.

Casi d'uso per la cache di ricerca di Neptune

La cache di ricerca è utile solo quando le query di lettura restituiscono le proprietà di un numero molto elevato di vertici e spigoli o di triple. RDF

Per ottimizzare le prestazioni delle query, Amazon Neptune utilizza il tipo di istanza R5d per creare una cache di grandi dimensioni per tali valori di proprietà o valori letterali. Il recupero dalla cache è quindi molto più rapido rispetto al recupero dai volumi di archiviazione del cluster.

Come regola generale, vale la pena abilitare la cache di ricerca solo se sono soddisfatte tutte e tre le seguenti condizioni:

  • Si osserva un aumento della latenza nelle query di lettura.

  • Stai anche osservando un calo della BufferCacheHitRatio CloudWatch metrica durante l'esecuzione di query di lettura (vedi). Monitoraggio di Neptune tramite Amazon CloudWatch

  • Le query di lettura impiegano molto tempo per materializzare i valori restituiti prima del rendering dei risultati (vedi l'esempio del profilo Gremlin riportato di seguito per determinare quanti valori di proprietà vengono materializzati per una query).

Nota

Questa funzionalità è utile solo nello scenario specifico descritto sopra. Ad esempio, la cache di ricerca non aiuta affatto le query di aggregazione. A meno che non si eseguano query che potrebbero trarre vantaggio dalla cache di ricerca, non c'è motivo di utilizzare un tipo di istanza R5d anziché un tipo di istanza R5 equivalente e meno costoso.

Se si utilizza Gremlin, è possibile valutare i costi di materializzazione di una query con Gremlin profile API. In "Operazioni di indice" viene mostrato il numero di termini materializzati durante l'esecuzione:

Index Operations Query execution: # of statement index ops: 3 # of unique statement index ops: 3 Duplication ratio: 1.0 # of terms materialized: 5273 Serialization: # of statement index ops: 200 # of unique statement index ops: 140 Duplication ratio: 1.43 # of terms materialized: 32693

Il numero di termini non numerici che vengono materializzati è direttamente proporzionale al numero di ricerche di termini che Neptune deve eseguire.

Utilizzo della cache di ricerca

La cache di ricerca è disponibile solo su un tipo di istanza R5d, dove è abilitata automaticamente per impostazione predefinita. Le istanze R5d Neptune hanno le stesse specifiche R5 delle istanze, oltre a un massimo di 1,8 TB di storage locale. NVMe SSD Le cache di ricerca sono specifiche dell'istanza e i carichi di lavoro che ne traggono vantaggio possono essere indirizzati specificamente alle istanze R5d di un cluster Neptune, mentre altri carichi di lavoro possono essere indirizzati a R5 o ad altri tipi di istanze.

Per utilizzare la cache di ricerca su un'istanza Neptune, è sufficiente aggiornare l'istanza al tipo di istanza R5d. Quando lo fai, Neptune imposta automaticamente il parametro neptune_lookup_cache 1 del cluster DB su (abilitato) e crea la cache di ricerca su quella particolare istanza. È quindi possibile utilizzare il Stato dell'istanza API per confermare che la cache è stata abilitata.

Analogamente, per disabilitare la cache di ricerca su una determinata istanza, dimensionare l'istanza da un tipo di istanza R5d a un tipo di istanza R5 equivalente.

Quando viene avviata un'istanza R5d, la cache di ricerca è abilitata e in modalità di avvio a freddo, ovvero è vuota. Neptune verifica innanzitutto nella cache di ricerca i valori delle proprietà RDF o i valori letterali durante l'elaborazione delle query e li aggiunge se non sono ancora presenti. In questo modo la cache si riscalda gradualmente.

Quando si indirizzano le query di lettura che richiedono ricerche in base ai valori di proprietà o ai valori RDF letterali a un'istanza di lettura R5d, le prestazioni di lettura diminuiscono leggermente durante il riscaldamento della cache. Quando la cache si riscalda, tuttavia, le prestazioni di lettura aumentano notevolmente e si può anche notare un calo dei costi di I/O legati alle ricerche che vengono effettuate sulla cache anziché sull'archiviazione del cluster. Migliora anche l'utilizzo della memoria.

Se l'istanza di scrittura è R5d, riscalda automaticamente la cache di ricerca a ogni operazione di scrittura. Questo approccio aumenta leggermente la latenza per le query di scrittura, ma riscalda la cache di ricerca in modo più efficiente. Quindi, se indirizzate le query di lettura che richiedono ricerche con valore di proprietà o con valore RDF letterale all'istanza writer, iniziate immediatamente a migliorare le prestazioni di lettura, poiché i valori sono già stati memorizzati nella cache.

Inoltre, se si esegue lo strumento di caricamento in blocco su un'istanza di scrittura R5d, si può notare che le sue prestazioni sono leggermente ridotte a causa della cache.

Poiché la cache di ricerca è specifica per ogni nodo, la sostituzione dell'host ripristina la cache su un avvio a freddo.

È possibile disabilitare temporaneamente la cache di ricerca su tutte le istanze del cluster DB impostando il parametro del cluster DB su (disabilitato). neptune_lookup_cache 0 In generale, tuttavia, ha più senso disabilitare la cache in istanze specifiche dimensionandole dal tipo di istanza R5d al tipo R5.