Can someone at OrientDB kindly help to resolve this issue? We chose OrientDB for a client project but without getting past this simple issue we wont be able to continue with OrientDB and have to chose some other solution.
Thanks! Raj On Tuesday, March 14, 2017 at 12:17:16 AM UTC-7, Raj wrote: > > I am using Tinkerpop Blueprints to create a OrientDB graph for a dataset > with millions of nodes and 100M edges on a laptop with 16gb memory, 64-bit > Ubuntu, 64-bit jvm. > > > Here are the results from our benchmarking – the vertices get added fine > but each edge addition takes almost a second. > > > > > <https://lh3.googleusercontent.com/-7hCsS_Ky8lk/WMc7aYtsE3I/AAAAAAAAADg/TioxDNNklfgEsUJ_0aGnnJO1ZuCsnYBMACLcB/s1600/Screenshot%2Bfrom%2B2017-03-10%2B12-37-07.png> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Can you suggest what we are not doing right wrt to the edge creation and > how we can get it to improve to a more reasonable latency? > > > > Here's the code associated with the above table: > > > > > > package orientdbtest > > import com.orientechnologies.orient.core.metadata.schema.OType > import com.tinkerpop.blueprints.{Direction, Edge, Vertex} > import com.tinkerpop.blueprints.impls.orient._ > import com.orientechnologies.orient.core.intent.OIntentMassiveInsert > > object Example { > > def addRandomVertex(graph: OrientGraphNoTx, uuid: String) : Vertex = > graph.addVertex("class:Random", "uuid", uuid) > > def addRandomEdge(source: Vertex, target: Vertex, id: String) = graph. > addEdge(null, source, target, id) > def createRandomNetworkDatabase(graph: OrientGraphNoTx, numNodes: Int, > numEdges: Int, useLightWeightEdges: Boolean):(Long, Long) = { > > if (graph.getVertexType("Random") == null) { > println("Creating random type") > val random_vertex_type: OrientVertexType = graph.createVertexType( > "Random") > random_vertex_type.createProperty("id", OType.STRING) > } else { > println("Random type exists") > } > > val timeStartNodeCreation = System.currentTimeMillis() > > val nodeList: List[Vertex] = Range(0,numNodes).toList.map(x => > addRandomVertex(graph, x.toString())) > > val timeEndNodeCreation = System.currentTimeMillis() > > println("Time to create " + numNodes + " is " + (timeEndNodeCreation- > timeStartNodeCreation)) > > val nodeListFirstHalf = nodeList.slice(0,nodeList.length/2) > val nodeListSecondHalf = nodeList.slice(nodeList.length/2+1,nodeList. > length) > > var edgeID = 1 > if(useLightWeightEdges) graph.setUseLightweightEdges(true) > val timeStartEdgeCreation = System.currentTimeMillis() > // createEdges from first half to the second half > > nodeListFirstHalf.foreach(sourceVertex => { > nodeListSecondHalf.foreach(targetVertex => { > while(edgeID < numEdges) > { > addRandomEdge(sourceVertex, targetVertex, edgeID.toString()) > edgeID = edgeID +1 > graph.commit() > } > }) > }) > > val timeEndEdgeCreation = System.currentTimeMillis() > println("Time to create " + edgeID + " is " + (timeEndEdgeCreation- > timeStartEdgeCreation)) > (0L, 0L) > } > > def main(args: Array[String]): Unit = { > > val numNodes = 10 > val numEdges = 25 > val useLightWeightEdges = false > > val uri: String = "plocal:target/database/random_sample_" + numNodes + > "_" + numEdges + useLightWeightEdges.toString() > val graph: OrientGraphNoTx = new OrientGraphNoTx(uri) > > graph.setKeepInMemoryReferences(false); > graph.getRawGraph().getLocalCache().setEnable(false) > graph.declareIntent(new OIntentMassiveInsert()) > try { > createRandomNetworkDatabase(graph, numNodes, numEdges, > useLightWeightEdges) > graph.declareIntent(null) > } finally { > graph.shutdown() > } > println("Adios") > } > } > > > > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
