Any idea about these low performances? Il giorno lunedì 19 maggio 2014 19:41:05 UTC+2, Angelo Immediata ha scritto: > > Hi there > > We are using Neo4j 2.0.3 in order to build a routing system. We are using > the classical A Start implementation, tough we saw that there is a > TraversalAstar implementation but it seems to be in experimental status yet. > > By the way, we read an OSM file and create our graph; actually we have > around 1 million of points. around 2 million of relationships and around 5 > million of properites on relationships; by reading neo4j documentation it > seems to me that this DB dimension is really small and it's really well > handled by neo4j but in my case this doesn't seem to be real (maybe I'm > missing something) > > Actually our node creation code is the following one: > > private long createGraphNode(OsmNodeWrapper osmNodeWrapper) > { > try > { > Map<String, Object> nodeProps = new HashMap<String, Object>(); > double x = osmNodeWrapper.getLongitude(); > double y = osmNodeWrapper.getLatitude(); > nodeProps.put(OSMAttribute.LATITUDE_PROPERTY, y); > nodeProps.put(OSMAttribute.LONGITUDE_PROPERTY, x); > nodeProps.put(OSMAttribute.OSM_NODE_ID_PROPERTY, osmNodeWrapper. > getOsmNodeId()); > if (osmNodeWrapper.isTrafficSignal()) > nodeProps.put(OSMAttribute.TRAFFIC_SIGNAL, true); > // Creo il nodo > long graphNodeId = inserter.createNode(nodeProps, mainNodeLabel); > // aggiungo l'identificativo del nodo sul grafo > osmNodeWrapper.setGraphNodeId(graphNodeId); > return graphNodeId; > } > > In our graph, we have only 2 types of relationships: > > - *CAR_ONE_WAY_RELATION* for one way road with Direction OUTCOMING > - *CAR_BIDIRECTIONAL_WAY_RELATION* for bidirectional road with > Direction BOTH > > This is the relationship creation code: > //Create RelationShip > Map<String, Object> relationProps = new HashMap<String, Object>(); > relationProps.put(OSMAttribute.EDGE_LENGTH_PROPERTY, lunghezzaArco); > ....//other properties > long relId = inserter.createRelationship(startNode, endNode, > "CAR_ONE_WAY_RELATION", relationProps); > > osmWayIdPropertyIndex.add(relId, relationProps) > > We configured the neo4j embedded by using the following parameters: > > neostore.nodestore.db.mapped_memory=100M > neostore.relationshipstore.db.mapped_memory=3G > neostore.propertystore.db.mapped_memory=100M > neostore.propertystore.db.strings.mapped_memory=200M > neostore.propertystore.db.arrays.mapped_memory=50M > cache_type=strong > > As you can see we use a strong cache type; this means we cache all data in > memory. Moreover when out application starts we load all nodes and > properties in memory; n order to do this we use this code: > > > private void loadWholeGraphInMemory() throws PinfGraphServiceException{ > StopWatch sw = new StopWatch(); > sw.start(); > Node start; > for ( Node n : ggo.getAllNodes() ) { > n.getPropertyKeys(); > for ( Relationship relationship : n.getRelationships() ) { > start = relationship.getStartNode(); > } > } > for ( Relationship r : ggo.getAllRelationships() ) { > start = r.getStartNode(); > r.getPropertyKeys(); > } > sw.stop(); > logger.info("Grafo caricato in "+sw.getLastTaskTimeMillis()+" millis"); > > > } > > We tried to execute the AStar algorithm between 2 points. The distance > between points is around 130 kilometers. In order to execute the algorithm > Neo4j takes around 4 seconds for returning a path and it seems to me really > too much; if i compare it to other software on the same OSM I have really > really really really different performance. > Is there any way to improve the Algorithm performance? Where can we act to > have better performance? would be better to use the Traversal AStar? > Moreover is there any plan to implement bi-directional AStar and/or > Dijkstra? > > I guess that with this kind of perfomance, Neo4j is not suitable for my > scenario > > Thank you > Angelo > > > > >
-- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.