Re: [Neo4j] Traversals versus Indexing
2011/6/20 Jim Webber j...@neotechnology.com Hi Massimo, Yes, those IDs can be recycled. In theory you don't know when they'll be recycled either (in practice they may be stable between reboots in the current stack, but who knows what future behaviour will be). And hence it's a bad practice to store node/relationship ids as properties. Try to solve your problems in another way if that's what you had in mind. Jim On 20 Jun 2011, at 23:11, Massimo Lusetti wrote: On Fri, Jun 17, 2011 at 2:01 PM, Mattias Persson matt...@neotechnology.com wrote: getNodeById is fast/immediate But the IDs could be recycled... isn't it? Cheers -- Massimo http://meridio.blogspot.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
getNodeById is fast/immediate 2011/6/16 Aseem Kishore aseem.kish...@gmail.com Indeed getNodeById(). Aseem On Thu, Jun 16, 2011 at 10:11 AM, Mattias Persson matt...@neotechnology.com wrote: Are you thinking of GraphDatabaseService#getNodeById / #getRelationshipById ? Or index lookups? 2011/6/16 Aseem Kishore aseem.kish...@gmail.com Are lookups by ID also so much slower than traversals? Aseem On Thu, Jun 16, 2011 at 3:45 AM, Mattias Persson matt...@neotechnology.comwrote: I don't know your use case at all, but one of the benefits you get with traversing compared to index lookups is that one hop from a node to another is instantaneous ( 1 million hops / second on a fully cached graph), whereas index lookups are several order of magnitudes slower than that. But index lookups are good for when you f.ex. have thousands/millions of names and you'd like to get the node with a certain name. Then that would be your starting point for doing a traversal to find other information local to that node, or in its vicinity. 2011/6/13 Aman aman.6...@gmail.com What is faster - Traversals or Indexing? I mean if one has a database model that can offer a choice between the two, what should one choose? Also, what about when the scalability factor comes in? ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
Cool, thanks! On Fri, Jun 17, 2011 at 5:01 AM, Mattias Persson matt...@neotechnology.comwrote: getNodeById is fast/immediate 2011/6/16 Aseem Kishore aseem.kish...@gmail.com Indeed getNodeById(). Aseem On Thu, Jun 16, 2011 at 10:11 AM, Mattias Persson matt...@neotechnology.com wrote: Are you thinking of GraphDatabaseService#getNodeById / #getRelationshipById ? Or index lookups? 2011/6/16 Aseem Kishore aseem.kish...@gmail.com Are lookups by ID also so much slower than traversals? Aseem On Thu, Jun 16, 2011 at 3:45 AM, Mattias Persson matt...@neotechnology.comwrote: I don't know your use case at all, but one of the benefits you get with traversing compared to index lookups is that one hop from a node to another is instantaneous ( 1 million hops / second on a fully cached graph), whereas index lookups are several order of magnitudes slower than that. But index lookups are good for when you f.ex. have thousands/millions of names and you'd like to get the node with a certain name. Then that would be your starting point for doing a traversal to find other information local to that node, or in its vicinity. 2011/6/13 Aman aman.6...@gmail.com What is faster - Traversals or Indexing? I mean if one has a database model that can offer a choice between the two, what should one choose? Also, what about when the scalability factor comes in? ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
I don't know your use case at all, but one of the benefits you get with traversing compared to index lookups is that one hop from a node to another is instantaneous ( 1 million hops / second on a fully cached graph), whereas index lookups are several order of magnitudes slower than that. But index lookups are good for when you f.ex. have thousands/millions of names and you'd like to get the node with a certain name. Then that would be your starting point for doing a traversal to find other information local to that node, or in its vicinity. 2011/6/13 Aman aman.6...@gmail.com What is faster - Traversals or Indexing? I mean if one has a database model that can offer a choice between the two, what should one choose? Also, what about when the scalability factor comes in? ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
Are lookups by ID also so much slower than traversals? Aseem On Thu, Jun 16, 2011 at 3:45 AM, Mattias Persson matt...@neotechnology.comwrote: I don't know your use case at all, but one of the benefits you get with traversing compared to index lookups is that one hop from a node to another is instantaneous ( 1 million hops / second on a fully cached graph), whereas index lookups are several order of magnitudes slower than that. But index lookups are good for when you f.ex. have thousands/millions of names and you'd like to get the node with a certain name. Then that would be your starting point for doing a traversal to find other information local to that node, or in its vicinity. 2011/6/13 Aman aman.6...@gmail.com What is faster - Traversals or Indexing? I mean if one has a database model that can offer a choice between the two, what should one choose? Also, what about when the scalability factor comes in? ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
Are you thinking of GraphDatabaseService#getNodeById / #getRelationshipById ? Or index lookups? 2011/6/16 Aseem Kishore aseem.kish...@gmail.com Are lookups by ID also so much slower than traversals? Aseem On Thu, Jun 16, 2011 at 3:45 AM, Mattias Persson matt...@neotechnology.comwrote: I don't know your use case at all, but one of the benefits you get with traversing compared to index lookups is that one hop from a node to another is instantaneous ( 1 million hops / second on a fully cached graph), whereas index lookups are several order of magnitudes slower than that. But index lookups are good for when you f.ex. have thousands/millions of names and you'd like to get the node with a certain name. Then that would be your starting point for doing a traversal to find other information local to that node, or in its vicinity. 2011/6/13 Aman aman.6...@gmail.com What is faster - Traversals or Indexing? I mean if one has a database model that can offer a choice between the two, what should one choose? Also, what about when the scalability factor comes in? ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
Indeed getNodeById(). Aseem On Thu, Jun 16, 2011 at 10:11 AM, Mattias Persson matt...@neotechnology.com wrote: Are you thinking of GraphDatabaseService#getNodeById / #getRelationshipById ? Or index lookups? 2011/6/16 Aseem Kishore aseem.kish...@gmail.com Are lookups by ID also so much slower than traversals? Aseem On Thu, Jun 16, 2011 at 3:45 AM, Mattias Persson matt...@neotechnology.comwrote: I don't know your use case at all, but one of the benefits you get with traversing compared to index lookups is that one hop from a node to another is instantaneous ( 1 million hops / second on a fully cached graph), whereas index lookups are several order of magnitudes slower than that. But index lookups are good for when you f.ex. have thousands/millions of names and you'd like to get the node with a certain name. Then that would be your starting point for doing a traversal to find other information local to that node, or in its vicinity. 2011/6/13 Aman aman.6...@gmail.com What is faster - Traversals or Indexing? I mean if one has a database model that can offer a choice between the two, what should one choose? Also, what about when the scalability factor comes in? ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
Think of your domain model graph as a kind of index. Traversing that should generally be faster than a generic index like lucene. Of course some things do not graph well, and you should use lucene for those. But if you can find something with a graph traversal, that is likely the way to go. Also you should think of structuring the graph to suit the queries you plan to perform. Then you will optimize the traversals. On Jun 13, 2011 11:33 AM, espeed ja...@jamesthornton.com wrote: It depends on the traversal you are running. -- View this message in context: http://neo4j-user-list.438527.n3.nabble.com/Neo4j-Traversals-versus-Indexing-tp3057515p3057538.html Sent from the Neo4J User List mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Traversals versus Indexing
It depends on the traversal you are running. -- View this message in context: http://neo4j-user-list.438527.n3.nabble.com/Neo4j-Traversals-versus-Indexing-tp3057515p3057538.html Sent from the Neo4J User List mailing list archive at Nabble.com. ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user