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à.
Pilastro dell'efficienza delle prestazioni
Il pilastro dell'efficienza delle prestazioni del AWS Well-Architected Framework si concentra su come ottimizzare le prestazioni durante l'acquisizione o l'interrogazione dei dati. L'ottimizzazione delle prestazioni è un processo incrementale e continuo che prevede quanto segue:
-
Conferma dei requisiti aziendali
-
Misurazione delle prestazioni del carico di lavoro
-
Identificazione dei componenti poco performanti
-
Ottimizzazione dei componenti per soddisfare le esigenze aziendali
Il pilastro relativo all'efficienza delle prestazioni fornisce linee guida specifiche per ogni caso d'uso che possono aiutarti a identificare il modello di dati grafico e i linguaggi di interrogazione corretti da utilizzare. Include anche le migliori pratiche da seguire per l'inserimento e l'utilizzo di dati da Neptune Analytics.
Il pilastro dell'efficienza delle prestazioni si concentra sulle seguenti aree chiave:
-
Modellazione grafica
-
Ottimizzazione delle query
-
Ridimensionamento corretto del grafico
-
Ottimizzazione della scrittura
Comprendi la modellazione grafica per l'analisi
La guida Appliing the AWS Well-Architected Framework for Amazon Neptune illustra la modellazione grafica per l'efficienza delle prestazioni. Le decisioni di modellazione che influiscono sulle prestazioni includono la scelta dei nodi e degli spigoli necessari, delle relative etichette e proprietà IDs, della direzione degli spigoli, se le etichette devono essere generiche o specifiche e, in generale, dell'efficienza con cui il motore di query può navigare nel grafico per elaborare le query più comuni.
Queste considerazioni si applicano anche a Neptune Analytics; tuttavia, è importante distinguere tra modelli di utilizzo transazionali e analitici. Potrebbe essere necessario rimodellare un modello grafico efficiente per le query in un database transazionale come un database Neptune per l'analisi.
Ad esempio, si consideri un grafico delle frodi in un database di Neptune il cui scopo è verificare la presenza di schemi fraudolenti nei pagamenti con carta di credito. Questo grafico potrebbe contenere nodi che rappresentano account, pagamenti e funzionalità (come indirizzo e-mail, indirizzo IP, numero di telefono) sia dell'account che del pagamento. Questo grafico connesso supporta interrogazioni come l'attraversamento di un percorso a lunghezza variabile che parte da un determinato pagamento e richiede diversi passaggi per trovare funzionalità e account correlati. La figura seguente mostra un grafico di questo tipo.

Il requisito analitico potrebbe essere più specifico, ad esempio trovare comunità di account collegate da una funzionalità. A tale scopo è possibile utilizzare l'algoritmo WCC (Weakly Connected Components). Eseguirlo sul modello dell'esempio precedente è inefficiente, perché deve attraversare diversi tipi di nodi e spigoli. Il modello nel diagramma seguente è più efficiente. Collega account
i nodi a un shares feature
margine se gli account stessi, o i pagamenti dagli account, condividono una funzionalità. Ad esempio, Account 123
dispone della funzionalità di posta elettronica e Account 456
utilizza xyz@example.org
la stessa e-mail per un pagamento (). Payment def

La complessità computazionale del WCC èO(|E|logD)
: |E|
dov'è il numero di spigoli nel grafico e qual D
è il diametro (la lunghezza del percorso più lungo) che collega i nodi. Poiché il modello transazionale omette nodi e spigoli non essenziali, ottimizza sia il numero di spigoli che il diametro e riduce la complessità dell'algoritmo WCC.
Quando usi Neptune Analytics, recupera gli algoritmi e le query analitiche richiesti. Se necessario, rimodella il modello per ottimizzare queste query. È possibile rimodellare il modello prima di caricare i dati nel grafico o scrivere query che modificano i dati esistenti nel grafico.
Ottimizza le interrogazioni
Segui questi consigli per ottimizzare le query di Neptune Analytics:
-
Utilizza le interrogazioni parametrizzate e la cache del piano di interrogazione, che è abilitata di default. Quando si utilizza la cache del piano, il motore prepara la query per un uso successivo, a condizione che la query venga completata in 100 millisecondi o meno, il che consente di risparmiare tempo nelle chiamate successive.
-
Se utilizzi la ricerca per somiglianza vettoriale, decidi se incorporamenti più piccoli producono risultati di somiglianza accurati. Puoi creare, archiviare e cercare incorporamenti più piccoli in modo più efficiente.
-
Segui le best practice documentate per l'utilizzo di OpenCypher in Neptune Analytics. Ad esempio, utilizza mappe appiattite in una clausola UNWIND e specifica le etichette dei bordi ove possibile.
-
Quando utilizzate un algoritmo grafico, comprendete gli input e gli output dell'algoritmo, la sua complessità computazionale e, in generale, come funziona.
-
Prima di richiamare un algoritmo grafico, utilizzate una
MATCH
clausola per ridurre al minimo il set di nodi di input. Ad esempio, per limitare i nodi da cui eseguire la ricerca breadth-first (BFS), segui gli esempi forniti nella documentazione di Neptune Analytics. -
Se possibile, filtra sulle etichette dei nodi e dei bordi. Ad esempio, BFS dispone di parametri di input per filtrare l'attraversamento verso una specifica etichetta di nodo (
vertexLabel
) o etichette di bordo specifiche ().edgeLabels
-
Utilizzate parametri di delimitazione, ad esempio per limitare i risultati
maxDepth
. -
Sperimentate con il
concurrency
parametro. Provalo con il valore 0, che utilizza tutti i thread dell'algoritmo disponibili per parallelizzare l'elaborazione. Confrontalo con l'esecuzione a thread singolo impostando il parametro su 1. Un algoritmo può completare più velocemente in un singolo thread, specialmente su input più piccoli, come le ricerche breadth-first poco profonde, in cui il parallelismo non offre una riduzione misurabile dei tempi di esecuzione e potrebbe comportare un sovraccarico. -
Scegli tra tipi di algoritmi simili. Ad esempio, Bellman-Ford e delta-stepping sono entrambi algoritmi con percorso più breve a fonte singola. Quando esegui il test con il tuo set di dati, prova entrambi gli algoritmi e confronta i risultati. Il delta-stepping è spesso più veloce di Bellman-Ford a causa della sua minore complessità computazionale. Tuttavia, le prestazioni dipendono dal set di dati e dai parametri di input, in particolare dal parametro.
delta
-
Ottimizza le scritture
Segui queste pratiche per ottimizzare le operazioni di scrittura in Neptune Analytics:
-
Cerca il modo più efficiente per caricare i dati in un grafico. Quando carichi dati in Amazon S3, utilizza l'importazione in blocco se le dimensioni dei dati superano i 50 GB. Per dati più piccoli, usa il caricamento in batch. Se out-of-memory riscontri errori durante l'esecuzione del caricamento in batch, valuta la possibilità di aumentare il valore m-NCU o di suddividere il carico in più richieste. Un modo per farlo consiste nel dividere i file tra più prefissi nel bucket S3. In tal caso, chiamate batch load separatamente per ogni prefisso.
-
Utilizzate l'importazione in blocco o il caricatore batch per popolare il set iniziale di dati del grafico. Usa le operazioni transazionali di creazione, aggiornamento ed eliminazione di OpenCypher solo per piccole modifiche.
-
Utilizzate l'importazione in blocco o il caricatore batch con una concorrenza di 1 (thread singolo) per inserire gli incorporamenti nel grafico. Prova a caricare gli incorporamenti in anticipo utilizzando uno di questi metodi.
-
Valuta la dimensione degli incorporamenti vettoriali necessari per una ricerca di similarità accurata negli algoritmi di ricerca per somiglianza vettoriale. Se possibile, usa una dimensione più piccola. Ciò si traduce in una maggiore velocità di caricamento per gli incorporamenti.
-
Se necessario, utilizzate algoritmi di mutazione per ricordare i risultati algoritmici. Ad esempio, l'algoritmo degree mutate centrality trova il grado di ogni nodo di input e scrive quel valore come proprietà del nodo. Se le connessioni che circondano quei nodi non cambiano successivamente, la proprietà mantiene il risultato corretto. Non è necessario eseguire nuovamente l'algoritmo.
-
Usa l'azione amministrativa di reimpostazione del grafico per cancellare tutti i nodi, gli edge e gli incorporamenti se devi ricominciare da capo. Eliminare tutti i nodi, gli spigoli e gli incorporamenti utilizzando una query OpenCypher non è possibile se il grafico è di grandi dimensioni. Una singola query drop su un set di dati di grandi dimensioni può scadere. All'aumentare delle dimensioni, la rimozione del set di dati richiede più tempo e la dimensione della transazione aumenta. Al contrario, il tempo necessario per completare la reimpostazione del grafico è all'incirca costante e l'azione offre la possibilità di creare un'istantanea prima di eseguirla.
Grafici di dimensioni corrette
Le prestazioni complessive dipendono dalla capacità fornita di un grafico di Neptune Analytics. La capacità viene misurata in unità denominate Neptune Capacity Units (m-) ottimizzate per la memoria. NCUs Assicurati che le dimensioni del grafico siano sufficienti per supportare le dimensioni del grafico e le query. Tieni presente che una maggiore capacità non migliora necessariamente le prestazioni di una singola query.
Se possibile, crea il grafico importando dati da una fonte esistente come Amazon S3 o un cluster o uno snapshot Neptune esistente. Puoi porre limiti alla capacità minima e massima. È inoltre possibile modificare la capacità assegnata su un grafico esistente.
Monitora CloudWatch metriche comeNumQueuedRequestsPerSec
,, NumOpenCypherRequestsPerSec
GraphStorageUsagePercent
GraphSizeBytes
, e CPUUtilization
valuta se il grafico è delle dimensioni corrette. Determina se è necessaria una maggiore capacità per supportare le dimensioni e il carico del grafico. Per ulteriori informazioni su come interpretare alcune di queste metriche, consulta la sezione relativa al pilastro dell'eccellenza operativa.