Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

kinerja neo4j dibandingkan dengan mysql (bagaimana bisa ditingkatkan?)

Maaf Anda tidak dapat mereproduksi hasilnya. Namun, pada MacBook Air (1,8 GHz i7, 4 GB RAM) dengan tumpukan 2 GB, cache GCR, tetapi tanpa pemanasan cache, dan tidak ada penyetelan lainnya, dengan kumpulan data berukuran sama (1 juta pengguna, 50 teman per orang) , saya berulang kali mendapatkan kira-kira 900 ms menggunakan Traversal Framework pada 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 lebih lambat, tetapi tidak selambat yang Anda sarankan:kira-kira 3 detik:

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

Salam hormat

ian



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan data pengguna tertentu di PHP

  2. Bagaimana Menghindari Perbaikan Dengan Keycache?

  3. Fungsi Konversi MySQL

  4. Hitung jumlah kemunculan string di bidang VARCHAR?

  5. Bagaimana cara melakukan penyisipan batch di MySQL