Tobias Ivarsson, from Neo4j, discusses domain modeling with Django and Neo4j the NoSQL graph database. We've spoken about graph databases a number of times on this blog, and specifically we've discussed Neo4j a number of times as well. So rather than rehash some of the same old details I'm going to focus on some new tidbits from this presentation.
Couple of notes from the business end of things:
- License of Neo4j is AGPLv3
- Commercial ("dual license") license available
- First server is free, second server is inexpensive
What about business application development? Tobias provides an excellent slide to discuss the typical workflow and licensing required to take your application from prototype to production.
- Try it out, build a prototype, Neo4j is open source and free see if it fits the problem you are trying to solve. At this point source must be made available to users (right now this is employees and co-workers).
- Release the application to the users. The first application server is free, load is probably going to be low as you build traction in your app. Neo4j provides you with a single server license at this point.
- As your application grows, you can purchase more licenses.
Some numbers with regard to scale on a single server, 12 billion nodes and relationships on a single node. So that free license might get more mileage than you expect.
How do indexes differ from a traditional relation database vs. Neo4j?
- RDBMS use them for JOINs
- Neo4j use them for simple lookups
Couple of specific points of index usage in Neo4j:
- The Graph "is" the main index
- Index structures are built inside the graph
- External indexes are used "for lookup"
Tobias also makes note of some pretty impressive performance numbers. Imagine a social graph, like a Facebook, where each friend had 50 or so friends. Now imagine traversing through the "social network" of 1 million people. How long, do you think, would it take? 60 seconds? 600? How about 2ms, yes that is milliseconds.
Few extra tidbits about Neo4j and python:
- Works with both Jython and CPython (without code modifications)
- The concurrency model between Jython and CPython are slightly different
- Python clients exist
In addition, to all of these point, Tobias is able to provide in much greater detail the domain modeling aspects that Python provides for users of Neo4j.