Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wydajność neo4j w porównaniu do mysql (jak można poprawić?)

Przykro mi, że nie możesz odtworzyć wyników. Jednak na MacBooku Air (1,8 GHz i7, 4 GB RAM) ze stertą 2 GB, pamięcią podręczną GCR, ale bez podgrzewania pamięci podręcznej i bez innego dostrajania, z zestawem danych o podobnej wielkości (1 milion użytkowników, 50 znajomych na osobę) , wielokrotnie uzyskuję około 900 ms przy użyciu Traversal Framework w wersji 1.9.2:

public class FriendOfAFriendDepth4
{
    private static final TraversalDescription traversalDescription = 
         Traversal.description()
            .depthFirst()
            .uniqueness( Uniqueness.NODE_GLOBAL )
            .relationships( withName( "FRIEND" ), Direction.OUTGOING )
            .evaluator( new Evaluator()
            {
                @Override
                public Evaluation evaluate( Path path )
                {
                    if ( path.length() >= 4 )
                    {
                        return Evaluation.INCLUDE_AND_PRUNE;
                    }
                    return Evaluation.EXCLUDE_AND_CONTINUE;

                }
            } );

    private final Index<Node> userIndex;

    public FriendOfAFriendDepth4( GraphDatabaseService db )
    {
        this.userIndex = db.index().forNodes( "user" );
    }

    public Iterator<Path> getFriends( String name )
    {
        return traversalDescription.traverse( 
            userIndex.get( "name", name ).getSingle() )
                .iterator();
    }

    public int countFriends( String name )
    {
        return  count( traversalDescription.traverse( 
            userIndex.get( "name", name ).getSingle() )
                 .nodes().iterator() );
    }
}

Cypher jest wolniejszy, ale wcale nie tak wolny, jak sugerujesz:około 3 sekundy:

START person=node:user(name={name})
MATCH (person)-[:FRIEND]->()-[:FRIEND]->()-[:FRIEND]->()-[:FRIEND]->(friend)
RETURN count(friend)

Z pozdrowieniami

jan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Jak SUM() i TIMEDIFF() na grupie?

  2. Dynamiczne wybieranie kolumny w MySQL

  3. MySql.Data.MySqlClient.MySqlException:„Lokalny host hosta nie obsługuje połączeń SSL”.

  4. Jak przeprowadzić migrację MySQL z Amazon EC2 do lokalnego centrum danych bez przestojów?

  5. Jak uzyskać dane z bazy mysql za pomocą javascript?