Databases have come a long way since the early 1980s when they only ran on mainframes and your choice was between CODASYL databases and relational databases. CODASYL databases tended to be twice as fast as relational databases, but eventually the improvements in computer hardware and the convenience of SQL queries (versus writing navigational database code) led to relational databases dominating the market.
Now there are databases to run anywhere, from your smartphone, to servers in your data center, to geographically distributed cloud databases. In addition to relational tabular databases, there are databases for time series, graph, spatial, text, online analytical processing (OLAP), XML, and JSON data. Some databases specialize in a single kind of data; some offer a choice of data types, but only one at a time; some allow multiple data types to coexist in the same database instance. Some databases specialize in online transaction processing (OLTP), some in analysis (OLAP), and some work well with combined transactional and analysis workloads.
For this article, we will concentrate on transactional workloads running in the cloud, and leave cloud data warehouses for another article. Some of the databases we’ll discuss can also run on-premises; some have specialized cloud support but are compatible with on-prem databases; and some are “cloud-native,” meaning they are available only from a cloud provider.
Determining database requirements
A database is almost never a thing unto itself. Instead, a database is generally the back end or storage layer of an application.