Is there a way that I can deploy Neo4j along with my standalone application for every customer? If yes, is there a way to access Neo4j database in-process without hosting as a service?

We need Graph database for my desktop application that will be installed at each customer's on-premise environment.

Neo4j desktop is available but that is not for production use. Can I know if there is any flavor we can use for on-premise applications?

If possible, is there a way to make the graph database light weight e.g. access database in-process just with drivers without having dedicated services?

Hi @ganapathi.dommeti ,

You'd want to take a look at using Neo4j embedded in a Java application:

Neo4j Desktop is a reasonable example of how you might package up a Java application along with a Java runtime environment. Desktop hosts both Neo4j (a java application) and a small nodejs server for the front-end apps. Instead, you could host just the java application, which would expose an HTTP endpoint for the front-end, which gets presented within a window.

What is the rest of your application written in? Do you have an existing server-side component?

Best,
ABK

Hi @abk ,

Thanks for your response. My application is actually .Net based. I have .Net Core APIs hosted as windows service. Is it possible to embed Neo4j in .Net application?

Great question. I do not think that would work. It used to be possible to port Java to run on the CLR, but AFAIK that is no longer supported. Past that, I believe Neo4j relies on enough JVM-specific facilities that language-level compilation is not enough.

For that deployment, you would want to find a way to either package or install a JVM alongside the .net application, then fork the Neo4j process.

-ABK

1 Like

I should also mention that OEM licensing could be an option for you: Neo4j OEM Partners - Neo4j Graph Data Platform

-ABK

Hi @abk,

Couple of questions around the alternative of forking Neo4j process.

  1. Is there any support I can get how to fork Neo4j process? and how to interact with the Neo4j process to get our job done?

  2. How about licensing part?

Thanks,
Ganapathi

Hi @ganapathi.dommeti ,

  1. For forking Neo4j, you should be able to use the .Net process management framework, invoking Neo4j as if you were starting it from the command line. The tricky part is making sure that a JVM is available to the Neo4j start script.
  2. Redistributing Neo4j along with your application would probably require an OEM license. You can register at https://neo4j.com/partners/oem-partners/?_gl=1*8jg6vg*_ga*Mjg2NjY0Nzg2LjE2MzAzMTQ2MDA.*_ga_DL38Q8KGQC*MTYzODE3NTg1Mi4yMjUuMS4xNjM4MTc4NTgxLjA.&_ga=2.112626180.1048390508.1638175853-286664786.1630314600

You'll find the Neo4j launch scripts here:

Best,
ABK

1 Like