Relational - (PostgreSQL, MySQL, SQL Server, Oracle)
- Tabular - (like an Excel spreadsheet)
- Structured - (rows and columns)
- Consistency - (datatypes & constraints. Limit allowed input to improve quality)
Best when
- Clearly defined data structures & relationships. Can be easily Normalised
- Data quality matters or needs constraining
Non-Relational - (MongoDB, Cassandra, Redis, Couchbase, DynamoDB)
- Less structured - (flexibility for inconsistent keys or arrays)
- Data largely unrelated - (no schemas, tables cannot be reliably joined)
Best when
- The data structure cannot be clearly defined
- If data inputs are variant and flexibility matters
Graph Database - (AWS Neptune, Neo4J, HyperGraphDB, ArangoDB)
- Nodes & Edges - (every node is related to other nodes via edges)
- No structure - (relationships at record level)
Best when
- Everything is related to everything else
- Deep-dive network analysis is required (e.g. fraud detection)


