Did you know? DZone has great portals for Python, Cloud, NoSQL, and HTML5!
NoSQL Zone is brought to you in partnership with:

Eric is a former teacher and future time traveler who has returned to the present to work at DZone - the coolest site on earth. He likes reading and curating about NoSQL and Cloud development, and is always excited to see something new, shiny, and distracting. In his free time, Eric likes knowing more about movies than you do, and looking forward to when the unified Chinese-American Corpocracy will develop the technology needed for transport to the year 2056. Eric is a DZone Zone Leader and has posted 149 posts at DZone. You can read more from them at their website. View Full User Profile

Get Introduced to Graph Databases with a Webinar from Neo4j

02.14.2012
Email
Views: 2654
  • submit to reddit
This article is part of the DZone NoSQL Resource Portal, which is brought to you in collaboration with Neo Technology and DataStax. Visit the NoSQL Resource Portal for additional tutorials, videos, opinions, and other resources on this topic.

The content of this article was written by Allison Sparrow at the Neo4j Blog.

Hey everyone,

Another awesome turnout at our Intro to Graph Databases webinar last week. We had loads of questions throughout the session, and we thank all of you for attending and participating!


Here are the questions captured in the Q&A section. If you don't see your question here, please be sure to join our Neo4j User Group, where our community will be sure to help you out.

To model a graph database, do you start directly with nodes and do not provide an ER diagram first?

  • Graph modeling often begins with whiteboarding the data in your domain. Usually, what you draw is what you graph.

Can I have custom RelTypes ?

  • Absolutely. All relationship types are defined by the application, so you can create them as appropriate.

Is there a way to keep the graph in memory all the time (except using a ram-disk)?

  • While there is no memory-storage mode, it is possible to keep the entire graph in memory by configuring large enough caches, then reading the entire graph (and properties) into memory.

Is it possible to versionize nodes and relationships in the graph?

  • Neo4j does not have native versioning, so you would have to model versioning of nodes using a linked list. Relationships could be versioned by using a unique Property to indicate the version.

Does Neo4j support XA transactions?

  • Yes, Neo4j is a proper XA transaction citizen.

How are nodes with defined relationships between them located? Do they have embedded pointers stored with the node that point to the address where the related nodes reside in the database? I'm thinking of the network model used by IDMS.

  • On disk, there are separate stores for nodes, relationships and properties. For details, consider reading posts from our own Chris Gioran's blog.

How can I return the node which is the last node of traversing (basically the leaf nodes) ?

  • With Cypher, you would bind to and return to the last node. For instance, in `start a=node(0) match (a)--(b)--(c) return c` the result would list all of the nodes 'c' that are at the end of a depth-2 traversal from 'a'.

Is subgraph isomorphism possible?

  • Subgraph matching is not directly supported, just path pattern-matching. So the match would have to be expressed as a path pattern.

What's the impact of node v. relationship? i.e. is a database more performant with a lot of nodes or relationships?

  • The database handles both nodes and relationships very well, though query performance generally favors following relationships over checking property constraints.

Aside from social networks, what other types of applications might a graph database like Neo4j be well suited for?

Graph databases are extremely useful when dealing with large amounts of complex and highly connected data. Social networks are one example, here are some others:
  • Collaboration programs
  • Configuration Management
  • Geo-Spatial applications
  • Impact Analysis
  • Master Data Management
  • Network Management
  • Product Line Management
  • Recommendation Engines

How does Neo4j handle nodes that have a lot of relationships (let's say one node connected to all other nodes)? Is there an index on all relationships a node has?

  • There is work ongoing now to address what we call "supernodes" with huge numbers (more than 100k) of relationships.

When will production level sharding (even with Eventual Consistency) will be available ?

  • Our most bearded developers are locked away working on this right now, though we can't promise a time-frame other than sometime this year.

I am used to thinking of a graph database as set of RDF triples. What are sort of differences between RDF triples and Neo4j data model if any?

  • With RDF, each property of an entity requires another triple. In a Property Graph, both the nodes and relationships of the graph can store properties, making it much more efficient.

Is there any known commercial product that uses Neo4j?

  • Absolutely! Be sure to check out our Customer Page for a highlighted list of Neo4j in production.

We have some great meetups and events coming up, and don't forget to sign up for our next webinar discussing Neo4j, taking place February 9th.

 -ayeseson

 


Source: http://blog.neo4j.org/2012/02/webinar-follow-up-intro-to-graph.html

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Neo Technology and DataStax are leading the charge for the NoSQL movement.  You can learn more about the Neo4j Graph Database in the project discussion forums and try out the new Spring Data Neo4j, which enables POJO-based development.  You can also see how Apache Cassandra, a ColumnFamily data store, is pushing the boundaries of persistence with cloud capabilities and deployments at SocialFlow and Netflix.