By Neo4j Staff | July 15, 2011 Thanks to all of those who attended our Intro to Graph Databases on Wednesday, July 13. We had a great turnout and LOADS of fantastic questions!
Below are answers to all questions posed during the webinar. For any other questions, be sure to refer to our user list. We have an incredible community that answers your questions ridiculously fast, no matter what time zone.
No, keys are just strings, and values can be primitives and strings and arrays of those. You can easily add methods that convert arbitrary objects into these primitives or graph structures at your domain level. Support for JSON types is planned.
- Can keys/values be first class objects? -@PatrickDurusau
see here: http://stackoverflow.com/questions/5680976/is-neo4j-a-good-fit-for-clojure
- What is the best Clojure library for Neo4J? Some of them seem quite old, is that because this is a “solved problem” or nobody cares…. -DJ
Neo4j is not partition tolerant. Automatic, domain agnostic graph sharding is still a problem that we have to solve to scale out. (See also the thesis of Alex Averbuch: http://alexaverbuch.blogspot.com/2010/04/me-my-names-alex-im-currently.html)
- How does CAP theorem apply to neo4j? -MK
- Is Facebook using neo4j for their social graph? -Anonymous
- Can there be multiple relationships between nodes? -Anonymous
- So, can Neo both know and love Trinity? -Anonymous
- What does the 4j in neo4j stand for? -Anonymous
- Shouldn’t it be “At depth %d => %sn” in the example? ‘np’ just a type in the slides, I guess. -DM
- Is there a performance penalty if there is a large number of nodes linked to a single node or does this not matter? -DM
- What if Trinity was in love with Morpheus? Will Trinity’s node be returned because she only has the outgoing “LOVES” relationship? There was no check if the node the relationship points to is the start node. -BP
- If possible, can you please take one simple example and explain the difference in representation between connected database and Graph database. -SR??
- Is the Cypher query language implemented in the programming language like LINQ or is it String-based? -US
- Are there other Traversers that return a set of Relations rather than a set of Nodes? -US
- Seems you have reinvented the hierarchical data model that was used in the late 60’s, 70’s and early 80’s and was then replaced by the relational model. -AG
The navigational databases back then were a pain to work with. They lacked good abstractions for working with the data, and required trained specialists to work with. Relational databases took over the market because of their structured query language, this meant that any developer could use relational databases.
A lot has changed since that time. The biggest game changer has been the advent of object oriented programming. Objects gives us the abstraction we need for making graph databases accessible as a pattern to work with for anyone. We are of course working on making Neo4j even more user friendly, with efforts such as Cypher. Having the foundation of a clear object model for the graph makes such efforts possible, and make navigational databases interesting again.
- Is the traversal asynchronous? -NV
- How do I get the node that I want to work with from the Graph DB ? I mean how do I get i.e. Mr Andersson? -RE
- How can you deal with versions of graphs? Or, just versions of key-value properties, for example, if you wanted to keep the date a relationship or a specific property on a node changed while keep the old value (the history, or last version)?