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)
1. Relational Database (example from the Product table in our SQL-Mart database) 2. Non-Relational Database (objects and arrays. Various attributes of a test person) 3. Graph Database (example design of a 'friendship network' between people)