Re: [Neo4j] distributed neo4j

2010-09-07 Thread Ilya Sterin
Hmmm, I'll check out the paper, but I think the problem with any
shared memory is to maintain consistency you have to synchronize and
that will drastically reduce scale.

I think eventually consistent, share nothing graph stores with
merging/replication (master/master) is the way to go.

Ilya

On Tue, Sep 7, 2010 at 6:01 AM, Jim Webber j...@webber.name wrote:
 Hi Atle,

 I'm thinking along different lines: something like distributed shared memory 
 with caching (and performant cache invalidation). My old friend Savas 
 Parastatidis implemented such a scheme around 10 years ago for his PhD, and 
 I'm starting to think whether it'd be an appropriate approach for Neo too.

 See: www.cs.ncl.ac.uk/research/trs/papers/748.pdf

 Jim
 ___
 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] Multiple connections

2010-08-21 Thread Ilya Sterin
Peter, I looked into that, but I detracted due to the statement in
that page: The implementation is not speedy enough to be used as the
main access channel to a Graph Database for actual applications.

Also, the problem with RMI is that the webapp is running as CPython.
Again, ideally there would be an efficient binary server protocol
outside of something like RMI.

Now, protocol buffers might do, either from the python or clojure
client.  I'll have to check it out.  Are there any docs on protobuf
and neo4j?  Also, my understanding is that it still goes through RMI.
Why do you guys claim it's not speedy enough though?  Is that a
statement reflecting the implementation of the rmi database service or
it's a general statement about network latency vs. embedded?

Also, do you guys have any benchmarks of using embedded db vs. REST
server for insertion and walking throughput?

Thanks.

Ilya




On Sat, Aug 21, 2010 at 1:38 AM, Peter Neubauer
peter.neuba...@neotechnology.com wrote:
 Ilya,
 have you looked the http://components.neo4j.org/neo4j-remote-graphdb/
 which might be an option for you? It runs RMI at the moment, Google
 Protobuffer is a possible alternative transport.

 Would that be what you are looking for?

 Cheers,

 /peter neubauer

 COO and Sales, Neo Technology

 GTalk:      neubauer.peter
 Skype       peter.neubauer
 Phone       +46 704 106975
 LinkedIn   http://www.linkedin.com/in/neubauer
 Twitter      http://twitter.com/peterneubauer

 http://www.neo4j.org               - Your high performance graph database.
 http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.



 On Sat, Aug 21, 2010 at 7:27 AM, Ilya Sterin ster...@gmail.com wrote:
 So I realize that I can't have multiple EmbeddedGraphDatabase
 instantiated, due to file locking and transaction coordination, but
 I'm wondering if there is a way to do this for a high performance app
 which needs to connect with different clients without having to write
 a client wrapper ourselves.

 We have a python webapp which will want to write data as well as query the 
 db...

 We also have an analytics application which will be written in
 clojure, which needs to also connect to same database.

 I know we can just use the REST server, but we require higher
 performance for various use cases than what HTTP protocol overhead
 will dish out.

 Is there such a thing as a neo4j server which is non-rest or is there
 a way to accomplish what we need otherwise?


 Thanks.

 Ilya
 ___
 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] Multiple connections

2010-08-20 Thread Ilya Sterin
So I realize that I can't have multiple EmbeddedGraphDatabase
instantiated, due to file locking and transaction coordination, but
I'm wondering if there is a way to do this for a high performance app
which needs to connect with different clients without having to write
a client wrapper ourselves.

We have a python webapp which will want to write data as well as query the db...

We also have an analytics application which will be written in
clojure, which needs to also connect to same database.

I know we can just use the REST server, but we require higher
performance for various use cases than what HTTP protocol overhead
will dish out.

Is there such a thing as a neo4j server which is non-rest or is there
a way to accomplish what we need otherwise?


Thanks.

Ilya
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


[Neo] General questions

2010-05-03 Thread ilya
Max,

 

Thanks a lot for detailed example.  I got it now - I guess I need a bit time
to get used Neo thinking J

 

Regards,

Ilya

 

P.S.  If only I can figure out how to reply to the same thread in this
forum.  No matter what I try it creates new thread - maybe because when I
click e-mail link it opens in outlook.  Anybody can suggest how to avoid
this - please let me know.

___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


[Neo] General questions

2010-05-02 Thread ilya
Max and Anders,

 

Thanks much for your replies and detail info!

 

I think I have better understanding now about reusability via inheritance
and interfaces.  I see now that if I want to define things once and then
extend/reuse them I simply need to create my own wrappers in language of
choice (ie Java)  IMDB role as wrapper around relationship is perfect
example.

 

For multi-value I like setProperty API – very useful.

 

Categorizing/grouping – I realized I might’ve not been very clear.  So let
me provide different example.

Suppose I haveActor – starts in à Show – airs on à Network


I want to keep track when given actor started in given show that air on
given Network.  I’d like to keep this 3 way relationship as constant but
have property (or something similar) that will keep track of dates when
Actors/networks change while relationships and show remain constant.   

 

Max, for clustering, I checked Restful API (very useful) but still ties
everything into one app server that neo is running under.
I won’t be able to run that server as cluster unless I have some smart logic
that will have server not running Neo hit other server that runs Neo via
Rest API which is messy.  It’s definitely possibility but hope there better
way.

 

Regards,

Ilya

___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


[Neo] General questions

2010-05-01 Thread ilya
Hi all,

 

I went through all docs on Neo site and it looks very interesting.  However,
I still have couple of things I was wondering about that I couldn’t find
answers to.  I hope I can get some information or someone can point me in
the right direction on some of these.

Sorry for many questions but really appreciate it even if only some can be
answered.

 

1)  Inheritance.
Suppose I want to draw tree where every node is derived from other node; say
Car à Sedan à Toyota
So when creating Toyota node I don’t need to recreate same properties and
relationships that Sedan has.

Is there something in Neo that will help me achieve this? If not what’s the
best (or good approach) of achieving this? (ie assuming I use Java  - should
I keep my own class hierarchy?)
At the same time I wonder how this structure will affect indexing/searching
(ie find all car/sedan/Toyotas)



2)  Multi value properties
When it come to properties I see I can store key=value pairs but what if I
want to store key=values
For example, I’d like to have property possibleColors where my values are
red, blue, green, etc

Do I need to create separate nodes and properties for each color?



3)  Interfaces
If I have the following: person – drives - car,  person – drives - boat
Is there a way to define drives interface which might have its own
properties that can be used as template or even reused in both relationships
above? If not what’s the good approach to achieve this?



4)  Categorizing/grouping multiple nodes including relationships
What  is the best strategy of grouping nodes if I want to include
relationships as well?
For example, person 1 – owns à car 1car 1 – sold à person 2  then car 1
-- sold àperson 3
I want to keep track of how long each person had car 1; this also need to
account for each person having more than one car.

 

5)  Neo clustering (load balancing) / accessing from multiple sources
From what I read I understand that Neo only accessible from JVM that runs
it.
So if I want to access it from the web I would probably setup Application
server such as JBoss and have it run in the same JVM.  How does one address
the following:

-  In case I want to do load balancing say run 2 JBoss instances in
cluster mode that need to access Neo? 

-  What if I want to connect to Neo both via web and via stand alone
process (probably run on different machine) for batch processing.



Sorry for too many questions but these are really important for my
architecture.

 

Thanks a lot,

Ilya

___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


[Neo] General questions

2010-05-01 Thread ilya
Hi all,

 

I went through all docs on Neo site and it looks very interesting.  However,
I still have couple of things I was wondering about that I couldn’t find
answers to.  I hope I can get some information or someone can point me in
the right direction on some of these.

Sorry for many questions but really appreciate it even if only some can be
answered.

 

1)  Inheritance.
Suppose I want to draw tree where every node is derived from other node; say
Car à Sedan à Toyota
So when creating Toyota node I don’t need to recreate same properties and
relationships that Sedan has.

Is there something in Neo that will help me achieve this? If not what’s the
best (or good approach) of achieving this? (ie assuming I use Java  - should
I keep my own class hierarchy?)
At the same time I wonder how this structure will affect indexing/searching
(ie find all car/sedan/Toyotas)



2)  Multi value properties
When it come to properties I see I can store key=value pairs but what if I
want to store key=values
For example, I’d like to have property possibleColors where my values are
red, blue, green, etc

Do I need to create separate nodes and properties for each color?



3)  Interfaces
If I have the following: person – drives - car,  person – drives - boat
Is there a way to define drives interface which might have its own
properties that can be used as template or even reused in both relationships
above? If not what’s the good approach to achieve this?



4)  Categorizing/grouping multiple nodes including relationships
What  is the best strategy of grouping nodes if I want to include
relationships as well?
For example, person 1 – owns à car 1car 1 – sold à person 2  then car 1
-- sold àperson 3
I want to keep track of how long each person had car 1; this also need to
account for each person having more than one car.

 

5)  Neo clustering (load balancing) / accessing from multiple sources
From what I read I understand that Neo only accessible from JVM that runs
it.
So if I want to access it from the web I would probably setup Application
server such as JBoss and have it run in the same JVM.  How does one address
the following:

-  In case I want to do load balancing say run 2 JBoss instances in
cluster mode that need to access Neo? 

-  What if I want to connect to Neo both via web and via stand alone
process (probably run on different machine) for batch processing.



Sorry for too many questions but these are really important for my
architecture.

 

Thanks a lot,

Ilya

___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user