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?
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?
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.
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.