Re: [Neo4j] [SPAM] Re: [SPAM] Re: [SPAM] Re: Reference node pains.

2010-12-17 Thread Alex Averbuch
1) I mentioned Lucene in my last comment but it doesn't need to be Lucene...
just an IndexService implementation.

2) Are the performance requirements of looking up a reference node any
different from those of looking up some other node? If it's a common
operation it will be cached, if it's not a common operation it's probably
not very important.

On Fri, Dec 17, 2010 at 2:15 PM, Craig Taverner  wrote:

> I think that the idea proposed by Emil, with multiple named reference
> nodes,
> is similar, and implies the use of an index to find the reference by name.
> However, I can also see that use of the lucene index for this implies that
> lucene, which is a 3rd party component, becomes a compulsory part of the
> neo4j-kernel, which might not be ideal. The other alternative is to use
> similar name lookup schemes that Neo4j already has hard-coded into the
> relationship type index and the property name index. As with relationship
> types, it probably makes sense to assume a limited number of possible
> reference nodes. I think relationship types are limited to 64k? Seems like
> a
> reasonable limit for reference nodes too.
>
> A question I have for the kernel guys, how does the current name lookup
> perform? Is it as fast as lucene, does it scale well (ie. work as fast if
> you use 10 relationship type or 10k relationship types)? Does it simply
> load
> the entire table into a big java hashmap?
>
> P.S. "64k ought to be enough for anyone." :-)
> (don't quote me<
> http://www.computerworld.com/s/article/9101699/The_640K_quote_won_t_go_away_but_did_Gates_really_say_it_
> >...)
>
> On Fri, Dec 17, 2010 at 12:29 PM, Alex Averbuch  >wrote:
>
> > Given that Neo4j has a pretty powerful indexing system with Lucene, why
> > can't users create their own reference node(s) and index them in their
> > application?
> >
> > Like (in pseudo):
> >
> > Graph g = new Graph()
> > Node n = g.newNode()
> > g.putIndex(n,"reference")
> > //later...
> > Node refNode = g.getIndex("reference")
> >
> > I've used Neo4j a lot less than any of you so maybe I don't appreciate
> > something here, but to me this "reference node" concept does seem like an
> > artifact that provides little added value, and was a source of
> frustration
> > during my thesis.
> >
> > Just my 2 cents.
> >
> > Cheers,
> > Alex
> >
> > On Wed, Dec 15, 2010 at 5:31 PM, Rick Bullotta <
> > rick.bullo...@burningskysoftware.com> wrote:
> >
> > > Thought about that too, and while it's always node zero today, but who
> > > knows
> > > what happens in some future rev with sharding, etc...I'd prefer it to
> be
> > > opaque to the "how".
> > >
> > > -Original Message-
> > > From: user-boun...@lists.neo4j.org [mailto:
> user-boun...@lists.neo4j.org]
> > > On
> > > Behalf Of Marko Rodriguez
> > > Sent: Wednesday, December 15, 2010 11:26 AM
> > > To: Neo4j user discussions
> > > Subject: [SPAM] Re: [Neo4j] [SPAM] Re: [SPAM] Re: Reference node pains.
> > >
> > > Hi,
> > >
> > > > One reason: how to you obtain that reference node later?  Seems to me
> > > you'd
> > > > need to write some code to save the node id, index it, etc...
> > >
> > > If the reference node (=the first node created) is always Vertex Id 0
> as
> > > Johan stated in a previous email as being the case, then you simply do:
> > >
> > > Graph.getNodeById(0);
> > >
> > > You can, of course, create your own method:
> > >
> > > public Node getReferenceNode() {
> > >   return graph.getNodeById(0);
> > > }
> > >
> > > > I don't understand why, for those that don't want a reference node,
> > > simply
> > > > don't call "getReferenceNode()" (assuming the lazy creation logic is
> > > added).
> > > > ;-)
> > >
> > > ...assuming "lazy creation logic." (which is smart).
> > >
> > > Another argument could be the inverse of my previous email:
> > >
> > > // I like the concept of a reference node
> > > Graph graph = new Neo4j();
> > >
> > > And for those that don't:
> > >
> > > // I don't like the concept of a reference node
> > > Graph graph = new Neo4j();
> > > graph.removeNode(graph.getReferenceNode() || graph.getNodeById(0))
> > >
> > > See ya,
> > > Marko.
> > > ___
> > > 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
> > >
> > ___
> > 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
>
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] [SPAM] Re: [SPAM] Re: [SPAM] Re: Reference node pains.

2010-12-17 Thread Craig Taverner
I think that the idea proposed by Emil, with multiple named reference nodes,
is similar, and implies the use of an index to find the reference by name.
However, I can also see that use of the lucene index for this implies that
lucene, which is a 3rd party component, becomes a compulsory part of the
neo4j-kernel, which might not be ideal. The other alternative is to use
similar name lookup schemes that Neo4j already has hard-coded into the
relationship type index and the property name index. As with relationship
types, it probably makes sense to assume a limited number of possible
reference nodes. I think relationship types are limited to 64k? Seems like a
reasonable limit for reference nodes too.

A question I have for the kernel guys, how does the current name lookup
perform? Is it as fast as lucene, does it scale well (ie. work as fast if
you use 10 relationship type or 10k relationship types)? Does it simply load
the entire table into a big java hashmap?

P.S. "64k ought to be enough for anyone." :-)
(don't quote 
me...)

On Fri, Dec 17, 2010 at 12:29 PM, Alex Averbuch wrote:

> Given that Neo4j has a pretty powerful indexing system with Lucene, why
> can't users create their own reference node(s) and index them in their
> application?
>
> Like (in pseudo):
>
> Graph g = new Graph()
> Node n = g.newNode()
> g.putIndex(n,"reference")
> //later...
> Node refNode = g.getIndex("reference")
>
> I've used Neo4j a lot less than any of you so maybe I don't appreciate
> something here, but to me this "reference node" concept does seem like an
> artifact that provides little added value, and was a source of frustration
> during my thesis.
>
> Just my 2 cents.
>
> Cheers,
> Alex
>
> On Wed, Dec 15, 2010 at 5:31 PM, Rick Bullotta <
> rick.bullo...@burningskysoftware.com> wrote:
>
> > Thought about that too, and while it's always node zero today, but who
> > knows
> > what happens in some future rev with sharding, etc...I'd prefer it to be
> > opaque to the "how".
> >
> > -Original Message-
> > From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org]
> > On
> > Behalf Of Marko Rodriguez
> > Sent: Wednesday, December 15, 2010 11:26 AM
> > To: Neo4j user discussions
> > Subject: [SPAM] Re: [Neo4j] [SPAM] Re: [SPAM] Re: Reference node pains.
> >
> > Hi,
> >
> > > One reason: how to you obtain that reference node later?  Seems to me
> > you'd
> > > need to write some code to save the node id, index it, etc...
> >
> > If the reference node (=the first node created) is always Vertex Id 0 as
> > Johan stated in a previous email as being the case, then you simply do:
> >
> > Graph.getNodeById(0);
> >
> > You can, of course, create your own method:
> >
> > public Node getReferenceNode() {
> >   return graph.getNodeById(0);
> > }
> >
> > > I don't understand why, for those that don't want a reference node,
> > simply
> > > don't call "getReferenceNode()" (assuming the lazy creation logic is
> > added).
> > > ;-)
> >
> > ...assuming "lazy creation logic." (which is smart).
> >
> > Another argument could be the inverse of my previous email:
> >
> > // I like the concept of a reference node
> > Graph graph = new Neo4j();
> >
> > And for those that don't:
> >
> > // I don't like the concept of a reference node
> > Graph graph = new Neo4j();
> > graph.removeNode(graph.getReferenceNode() || graph.getNodeById(0))
> >
> > See ya,
> > Marko.
> > ___
> > 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
> >
> ___
> 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] [SPAM] Re: [SPAM] Re: [SPAM] Re: Reference node pains.

2010-12-17 Thread Alex Averbuch
Given that Neo4j has a pretty powerful indexing system with Lucene, why
can't users create their own reference node(s) and index them in their
application?

Like (in pseudo):

Graph g = new Graph()
Node n = g.newNode()
g.putIndex(n,"reference")
//later...
Node refNode = g.getIndex("reference")

I've used Neo4j a lot less than any of you so maybe I don't appreciate
something here, but to me this "reference node" concept does seem like an
artifact that provides little added value, and was a source of frustration
during my thesis.

Just my 2 cents.

Cheers,
Alex

On Wed, Dec 15, 2010 at 5:31 PM, Rick Bullotta <
rick.bullo...@burningskysoftware.com> wrote:

> Thought about that too, and while it's always node zero today, but who
> knows
> what happens in some future rev with sharding, etc...I'd prefer it to be
> opaque to the "how".
>
> -Original Message-
> From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org]
> On
> Behalf Of Marko Rodriguez
> Sent: Wednesday, December 15, 2010 11:26 AM
> To: Neo4j user discussions
> Subject: [SPAM] Re: [Neo4j] [SPAM] Re: [SPAM] Re: Reference node pains.
>
> Hi,
>
> > One reason: how to you obtain that reference node later?  Seems to me
> you'd
> > need to write some code to save the node id, index it, etc...
>
> If the reference node (=the first node created) is always Vertex Id 0 as
> Johan stated in a previous email as being the case, then you simply do:
>
> Graph.getNodeById(0);
>
> You can, of course, create your own method:
>
> public Node getReferenceNode() {
>   return graph.getNodeById(0);
> }
>
> > I don't understand why, for those that don't want a reference node,
> simply
> > don't call "getReferenceNode()" (assuming the lazy creation logic is
> added).
> > ;-)
>
> ...assuming "lazy creation logic." (which is smart).
>
> Another argument could be the inverse of my previous email:
>
> // I like the concept of a reference node
> Graph graph = new Neo4j();
>
> And for those that don't:
>
> // I don't like the concept of a reference node
> Graph graph = new Neo4j();
> graph.removeNode(graph.getReferenceNode() || graph.getNodeById(0))
>
> See ya,
> Marko.
> ___
> 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
>
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] [SPAM] Re: [SPAM] Re: [SPAM] Re: Reference node pains.

2010-12-15 Thread Rick Bullotta
Thought about that too, and while it's always node zero today, but who knows
what happens in some future rev with sharding, etc...I'd prefer it to be
opaque to the "how".  

-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On
Behalf Of Marko Rodriguez
Sent: Wednesday, December 15, 2010 11:26 AM
To: Neo4j user discussions
Subject: [SPAM] Re: [Neo4j] [SPAM] Re: [SPAM] Re: Reference node pains.

Hi,

> One reason: how to you obtain that reference node later?  Seems to me
you'd
> need to write some code to save the node id, index it, etc...

If the reference node (=the first node created) is always Vertex Id 0 as
Johan stated in a previous email as being the case, then you simply do:

Graph.getNodeById(0);

You can, of course, create your own method:

public Node getReferenceNode() {
   return graph.getNodeById(0);
}

> I don't understand why, for those that don't want a reference node, simply
> don't call "getReferenceNode()" (assuming the lazy creation logic is
added).
> ;-)

...assuming "lazy creation logic." (which is smart). 

Another argument could be the inverse of my previous email:

// I like the concept of a reference node
Graph graph = new Neo4j();

And for those that don't:

// I don't like the concept of a reference node
Graph graph = new Neo4j();
graph.removeNode(graph.getReferenceNode() || graph.getNodeById(0))

See ya,
Marko.
___
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