9. Database Technology (Relational/Graph)¶
Technical Story: Evaluate database technologies #46
9.1. Context and Problem Statement¶
We want to use a state of the art database that can store services/applications according to our data Model and is easy to integrate with Spring Boot.
9.2. Decision Drivers¶
- Integration with Spring Boot
- Different versions of a service will be stored as individual services
- Applications will be seen as concrete instances of services
9.2.1. Data Model Relational¶
Important
The Service Description
entity in the model describes a Service Interface.
9.2.2. Data Model Graph¶
Important
The Service Description
entity in the model describes a Service Interface.
9.3. Considered Options¶
- Relational database:
- MySQL
- MariaDB
- PostgreSQL
- SQlite
- Graph database:
- Neo4J
9.4. Decision Outcome¶
Chosen option: The graph database Neo4J, because it fits our data model best.
9.5. Pros and Cons of the Options¶
9.5.1. Relational database¶
- Good, because team already has sql knowledge
- Good, because Spring Boot integrations and ORM for java available
- Good, because sql scheme
- Bad, because sql scheme needs to be defined
- Bad, because data migrations to new database format need to update schema and data
9.5.2. Graph database¶
- Good, because applications and services naturally form a graph
- Good, because Spring Boot integrations and OGM for java available
- Good, because node/edge properties are dynamic
- Bad, because new query language
- Bad, because no rigid schema like in sql databases and therefore more necessary checks (e.g. type, exists) in code