I plan to decompose the application, which I began to build in the form of a monolith, with a graphical database into microservices. But the dilemma I encountered is trying to find the right solution to separate the various services and not lose the benefits provided by the graph database.
The idea that I originally considered was to split each individual object into its own microservice, using a document repository to store data for each service. Then define a higher level service for relationship management.
For example, with the relation (A) → (B), 3 microservices will be created, a service for objects of type A, another for objects of type B and a third higher level with a graph database, nodes of type A and B containing only the identifier and relations between them .
Question 1 : Is there anything wrong with this approach regarding combination, fault tolerance, or something else that I can't think of now?
Question 2 : when you throw a third object into the game, for example (A) → (B), (A) → (C) and (C) → (B), which one would be the best approach in this scenario?
- I adhere to the strategy of only one higher-level service in order to maintain all relations?
- Am I creating several higher level services to support each type of relationship?
3. , (Person) - isFriendOf → (Person), , ?
, .
, , .
:

, , , , , , .