I did git clone your project, but have not had the chance to try run it
yet. I still think we need to actually run a performance profiler on it to
track what it is actually doing to take so much time. Have you tried that
yourself yet?


On Mon, Jun 2, 2014 at 1:14 PM, Angelo Immediata <[email protected]>
wrote:

> No update?
>
>
> 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 [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to