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à.
Creazione di scritture multithread Gremlin efficienti
Esistono alcune linee guida per il caricamento multithread di dati in Neptune con Gremlin.
Se possibile, fornisci a ciascun thread un set di vertici o archi da inserire o modificare che non siano in collisione. Ad esempio, il thread 1 per l'intervallo di ID 1–50.000, il thread 2 per l'intervallo di ID 50.001–100.000 e così via. In questo modo si riduce la possibilità di generare una ConcurrentModificationException
. Per sicurezza, inserisci un blocco try/catch
attorno a tutte le scritture. In caso di errore, è possibile riprovare dopo un po'.
In genere raggruppare le scritture in una dimensione batch compresa tra 50 e 100 (vertici o archi) si rivela una soluzione valida. Se per ciascun vertice viene aggiunto un numero elevato di proprietà, potrebbe essere preferibile un numero più vicino a 50 che a 100. Vale la pena di fare dei tentativi. Per le scritture in batch, è possibile utilizzare il codice seguente:
g.addV(‘test’).property(id,’1’).as(‘a’). addV(‘test’).property(id,’2’). addE(‘friend’).to(‘a’).
Tale codice viene quindi ripetuto in ciascuna operazione batch.
L'utilizzo di batch risulta significativamente più efficiente rispetto ad aggiungere un vertice o un arco per round trip Gremlin al server.
Se utilizzate un client Gremlin Language Variant (GLV), potete creare un batch a livello di codice creando prima un attraversamento. Quindi aggiungere ed eseguire l'iterazione su di esso, ad esempio:
t.addV(‘test’).property(id,’1’).as(‘a’) t.addV(‘test’).property(id,’2’) t.addE(‘friend’).to(‘a’) t.iterate()
È consigliabile utilizzare il client Gremlin Language Variant, se possibile. Tuttavia, si può fare qualcosa di analogo con un client che inoltra le query come stringhe di testo concatenando le stringhe per creare un batch.
Se utilizzate una delle librerie Gremlin Client anziché Basic HTTP per le query, i thread dovrebbero condividere tutti lo stesso client, cluster o pool di connessioni. Potrebbe essere necessario ottimizzare le impostazioni per ottenere la migliore velocità di trasmissione effettiva possibile, ad esempio le dimensioni del pool di connessioni e il numero di thread di lavoro utilizzati dal client Gremlin.