Databases and data management Database characteristics This article was originally published at https://gist.github.com/joepie91/f9df0b96c600b4fb3946e68a3a3344af . NOTE: This is simplified. However, it's a useful high-level model for determining what kind of database you need for your project. Data models Documents: Single type of thing, no relations Relational: Multiple types of things, relations between different types of things Graph: Single or multiple types of things, relations between different things of the same type Consistency models Strong consistency: There is a single canonical view of the database, and everything connecting to any node in the database cluster is guaranteed to see the same data at the same moment in time. Eventual consistency: There can be multiple different views of the database (eg. different nodes in the cluster may have a different idea of what the current state of the data is), but once you stop changing stuff, they will eventually converge into a single view. No consistency: There's no guarantee that all nodes in the cluster will ever converge to the same view, whatsoever. Schemafulness Schemaful: You know the format (fields, types, etc.) of the data upfront. Fields may be optional, but every field you use is defined in the schema upfront. Schemaless: You have no idea what the format is going to be. This is rarely applicable, and only really applies when dealing with storing data from a source that doesn't produce data in a reliable format.