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.
- Absolutely. All relationship types are defined by the application, so you can create them as appropriate.
- 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.
- 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.
- Yes, Neo4j is a proper XA transaction citizen.
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.
- 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'.
- Subgraph matching is not directly supported, just path pattern-matching. So the match would have to be expressed as a path pattern.
- The database handles both nodes and relationships very well, though query performance generally favors following relationships over checking property constraints.
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
- There is work ongoing now to address what we call "supernodes" with huge numbers (more than 100k) of relationships.
- 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.
- 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.
- Absolutely! Be sure to check out our Customer Page for a highlighted list of Neo4j in production.