I am an applications developer, primarily web and Windows desktop (not Windows Store Apps). So while I find neo4j fascinating and have several projects that could use a graph database, before dedicating a large block of time mastering it, I need to know that I can use it with my applications.
Here are some comments/questions:
- I do not expect my users to learn or use Cypher directly. The user will use my UI, all Cypher queries will be in the application code.
- All dependencies should be bundled with the application.
a. Question 1: do I need to bundle the Community Server or the Desktop?
b. Question 2: Which if any can I install for webs (I presume just the server)?
-
Visualization. To me, a large part of the value of using a graph is to visualize the graph. I haven’t been able to find any examples (that compiles) that illustrate visualization in a web or desktop application (preferably both).
a. Question 3: does neo4j community software provide the ability to have a visualization panel in an application (Windows and web)?
Samples
I have spent several hours going through a handful of samples on GitHub trying to answer my own questions above.
I have found:
- Some reference Alpha versions (???)
- I have yet to get anything to compile and run (for example, some have really out-of-date NuGet packages that simply won’t update).
- Some want you to manually start one of the neo4j versions (not clear which one but I think they’re saying the Desktop version) and then manually populate a database.
a. Comment: at the very least I would expect that both of these actions should be handled in code without extra steps by the end-user.
b. If these samples actually ran then no doubt, I could play around with the code but alas none of the samples I’ve tried actually work.
- In summary, I have found these code samples old and broken.
Question 4: does anyone have any suggestions of samples that compile (work) and demonstrate the features I need described above?
Thanks,
Dennis Cullen
Welcome to graph databases. Here's my opinion to the questions you have. To establish a foundation Neo4j is a database like any other db and you'd still apply the same application paradigm as you would with MySQL or any other DB. I think an important thing to highlight that Neo4j Desktop is a separate from Neo4j database. To draw a parallel from other common tech stacks: Neo4j is to MySQL and Neo4j Desktop is to phpMyAdmin. The desktop app is for you the developer. It's your query IDE. Once you go to production, you're working with a database server with an API layer and a UI layer like any other tech stack.
-
Your application should handle writing and executing the database query. Just as your application to execute SQL your application should execute the Cypher. Your application should abstract from the user what DB technology is running behind the scene. You could be running SQL or mongoDB or graph, the application and user shouldn't care. (There is the Neo4j Bloom application but I don't think what that tool offers is what you're asking for here)
-
Your application would run just the database server. Either community edition or Enterprise edition depending on what you want/need to comply with licensing. If you're building a web app, your webserver would have the DB and your website invokes your APIs which have the connections to the database.
-
Visualization is just JavaScript within your app. I believe Neo4j Desktoputilizes the D3.js library if you wish to emulate from their visualization choices, but I'm not aware of any ability to integrate the Neo4j Desktop app to be embedded within other apps. Relating back to question 1, if your application was backed by a SQL DB, your UI could still chose to visualize the data as a graph. And the inverse could be true, maybe your application has a lot of forms and appears to be tabular but behind the scene your storing it in a graph.
Hopefully this has provided some good insight. Neo4j had a beautiful query IDE with their desktop app but in end it's still just a DB. Solving issues of getting the data in through ETL or wiring up applications with the appropriate language driver to insert and select data, and building a UI on top of the data still has to coded just like any other tech stack.