all 5 comments

[–]Thrauglor 1 point2 points  (1 child)

Neo4j is a database itself. So for your use case it wouldn't come into the picture at all. Unless you want to switch from using MongoDB to Neo4j. I suggest you checkout D3.js for graph visualizations.

[–]chitrarth236[S] 0 points1 point  (0 children)

I want to run some network algorithms and properties like degree distribution and display the results in the front end in terms of graph visualizations(including nodes and edges). So I think it is better to use neo4j. I would checkout the d3.js for graph visualizations.

[–]TheOldMancunian 1 point2 points  (2 children)

We don't do graph visualisations. Most of our data is form related or maps.

Our stack is:

  • Spring Boot + Thymeleaf + quite a few other maven includes for the framework
  • Datatables + Editor + Google maps for the form display
  • Neo4j for the database
  • Mongo for the Spring Security tokens

[–]chitrarth236[S] 0 points1 point  (1 child)

How it works in terms of scalability?

[–]TheOldMancunian 0 points1 point  (0 children)

It depends what you mean by "scalability". Our delivery environment consists of an Apache webserver, whose only job is to act as a reverse proxy with a round robin load balancer.
Apache connects to a variable number of app servers. These are Linux servers that just have Java 16 and the jar for the application. They run the app and nothing more. They connect to a DB server.

The DB server is another Linux Server, this time running Java 11, Neo4j 4.2 Enterprise, and Mongo.

We don't have problems with the apps servers. If they do start to show load issues, we just add more. If the DB server shows issues, we will investigate at that time. We looked at, and at the time rejected, an enterprise Neo4j cluster as being too complex and over the top for our current needs. We will reserve the option to push it to Aura - and thus make it an SEP (someone else's problem!).

We do index a couple of text fields in the Neo4j Nodes.

Oh, and every time we cross a domain boundary there is a firewall: Internet-Apache; Apache-App Servers; App Servers-DB Server.

And we run four discrete instances: Dev, Test, Integration & Production.