Hi Team,
I am trying to insert edges in DSE Graph but not getting satisfactory performance.
I want to insert 1 million edge but able to insert roughly 95K in an hour. Here is what I am trying to do. Please let me know how can I improve the performance.
1. Batch is executed for 500 edges at a time.
BatchGraphStatementBuilder builder = BatchGraphStatement.builder();
2. Traverse through all the edges to be inserted (Steps 3 - 8)
3. Get Source Vertex.
Vertex sourceVertex = getSourceVertex(edgeRecord.getFromId());
4. Get Target Vertex.
Vertex targetVertex = getTargetVertex(edgeRecord.getToId());
5. Create edge label if not exists.
String createEdgeLabel = "schema.edgeLabel('" + edgeRecord.getName() + "').ifNotExists().create()";
6. Create Graph Traversal Object
GraphTraversal<Vertex, Edge> graphTraversal = g.V(sourceVertex.id()).addE(edgeRecord.getName()).to(targetVertex);
7. For each edge property(There are 5 properties per edge)
- Create edge index:
createEdgeIndexIfNoExists(edgeIndex); - Add property to graph traversal
graphTraversal.property(key, fields.get(key));
8. Add Graph traversal object to batch statement builder
builder = builder.addTraversal(graphTraversal);
9. After adding all the edges, execute the batch
GraphResultSet result = cqlSession.execute(batchGraphStatement);