Thank you so much for the reply Lundin. I really apreciate it. Okay, yesterday I just tested my experiment again. And the result was not what I imagined and expected before. Okay, before I tested *1M* users, I reduced the number of users into *1000* users and tested it not in my social network but directly in database only(Neo4j Shell) to find out that it was not caused by the performance of pc. But the result of returning *1000*users was *200ms and 1 row* and the result of returning *friends at depth of two* was *85000ms and 2500 rows* and are *200ms* and *85000ms* fast to you? and what does *ms*stand for? is it *milliseconds* or *microseconds*?
the query I use for returning *1000* users is *MATCH (U:User) RETURN COUNT(U);* and the query I use for returning *friends at depth of two* is *MATCH (U:User)-[F:Friend]->(FU:User)-[FF:Friend]->(FFU:User)WHERE U.user_id=1 AND FFU.user_id<>U.user_id AND NOT (U)-[:Friend]->(FFU)RETURN FFU.username* Please note that I tested with default configuration of Neo4j and created users with *1000* random nodes and created friends relationships with *50000* random relationships(*1* user has *50* friends). Each relationship has a label Friend and no properties on it. Each node has a label User, 4 properties: user_id, username, password and profile_picture. Each property has a value of 1-60 characters. average of characters of user_id=1-1000 characters, all usernames have 10 characters randomly, all passwords have 60 characters because I MD5 it, and profile_picture has 1-60 characters. And about your statement "Otherwise if you really need to present that many "things" just paging the result with SKIP,LIMIT. I has never made sense to present 1M of anything at a time for a user.", I already did according to your statement above but it is still the same, Neo4j returns result slower. And I'm wondering if Neo4j already applied one of graph algorithms(shortest path, djikstra, A*, etc) in its system or not. Thank you. On Friday, March 28, 2014 3:43:49 AM UTC+7, Lundin wrote: > > Rio, any version will do. They can all handle million nodes on common > hardware, no magic at all. When hundred of millions of billions then we > might need to look into specfication more in detail. But in that case with > that kind of data there are other bottlencks for a social network or any > web appp that needs to be taken care of as well. > > you said: > >> Given any two persons chosen at random, is there a path that connects >> them that is at most five relationships long? For a social network >> containing 1,000,000 people, each with approximately 50 friends, the >> results strongly suggest that graph databases are the best choice for >> connected data. And graph database can still work 150 times faster than >> relational database at third degree and 1000 times faster at fourth degre >> > > I fail to see how this is connected to your attempt to list 1M users in > one go at the first page. You would want to seek if there is a relationship > and return that path between users. You need two start nodes and seek a > path by traveser the relationsip rather than scan tables and that would be > the comparison. > Otherwise if you really need to present that many "things" just paging the > result with SKIP,LIMIT. I has never made sense to present 1M of anything at > a time for a user. Again, that wouldn't really serve your experiment much > good to prove graph theory. > > What is the result of MATCH(U:User) RETURN count(U); ? > > Also when you do your test make sure to add the warm/cold cache effect > (better/worse performance) > > Den torsdagen den 27:e mars 2014 kl. 17:57:10 UTC+1 skrev Rio Eduardo: >> >> I just knew about memory allocation and just read Server Performance >> Tuning of Neo4j. neo4j.properties: >> # Default values for the low-level graph engine >> >> #neostore.nodestore.db.mapped_memory=25M >> #neostore.relationshipstore.db.mapped_memory=50M >> #neostore.propertystore.db.mapped_memory=90M >> #neostore.propertystore.db.strings.mapped_memory=130M >> #neostore.propertystore.db.arrays.mapped_memory=130M >> >> Should I change this to get high performance? If yes, please suggest me. >> >> And I just knew about Neo4j Licenses, they are Community, Personal, >> Startups, Business and Enterprise. And at Neo4j website all features are >> explained. So which Neo4j should I use for my case that has millions nodes >> and relationships? >> >> Please answer. I need your help so much. >> >> Thanks. >> >> On Tuesday, March 25, 2014 12:03:58 AM UTC+7, Rio Eduardo wrote: >>> >>> I'm testing my thesis which is about transforming from relational >>> database to graph database. After transforming from relational database to >>> graph database, I will test their own performance according to query >>> response time and throughput. In relational database, I use MySQL while in >>> graph database I use Neo4j for testing. I will have 3 Million more nodes >>> and 6 Million more relationships. But when I just added 60000 nodes, my >>> Neo4j is already dead. When I tried to return all 60000 nodes, it returned >>> unknown. I did the same to MySQL, I added 60000 records but it could return >>> all 60000 records. It's weird because it's against the papers I read that >>> told me graph database is faster than relational database So Why is Neo4j >>> slower(totally dead) in lower specification of pc/notebook while MySQL is >>> not? And What specification of pc/notebook do I should use to give the best >>> performance during testing with millions of nodes and relationships? >>> >>> Thank you. >>> >> -- 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.
