Re: [Neo4j] distributed neo4j
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
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
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
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
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 mightve 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. Id 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 wont 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. Its 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
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 couldnt 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 dont need to recreate same properties and relationships that Sedan has. Is there something in Neo that will help me achieve this? If not whats 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, Id 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 whats 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
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 couldnt 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 dont need to recreate same properties and relationships that Sedan has. Is there something in Neo that will help me achieve this? If not whats 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, Id 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 whats 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