This is a really out there question... What are the consequences of using Neo4J for tasks that would be done on a traditional Relational Database?
For example, say I had a User, this user has Posts, they may have Purchases. This could be tabular, but we could also represent this in graph format. Every user, then, would get a personal set of graphs. The graph database would look like a bunch of User nodes, with large trees out of each User node.
The reason I would want to do this is an underlying prototype I am building with LLMs, where complex relationships may be used to build complex prompts on the user's information. It is entirely experimental.
I'm just not sure how feasible it is for Neo4J to do stuff like this. Typically you use something like Postgres for SQL, or MongoDB for NoSQL on this sort of thing.
We did exactly what you describe for our use case.
That could have been done with Spring Data ORM and a relational database OR with Spring Data OGM and a Neo4j.
We did it with OGM and Spring Data Neo4j, because we have a quite complex domain model with quite a lot of relations between the classes/nodes and high expectations on the reading performance, too.
In a classical approach we would have to implement a lot of more or less complex join operations on the DB. As performance is crucial on our use case and we have to handle a lot of data, we decided to use Neo4j with Spring Data Neo4j.
It works well with three main consequences:
writing data to the Neo is a bit more complex if you want to do it in a robust and scalable way
reading the data is much faster if you do it with the right cypher queries
extending the data model if your data model evolves is much more easier to realize than with classical approaches for ORM (Liquibase, ...)
We are happy with our decision to do it with the Neo4j and OGM by Spring Data. However, for smaller models without many relations between the objects and less data to handle, the risk to do it with such a new technology is probably to high for your customer.
Thank you so much for the info and your decided tech stack. This is exactly what I was looking for. I'll take the shot with Neo4j. This is just an experimental project, so there is not much risk with going with a newer technology, and laying everything out, Neo4J seems to make the most sense.