Most computerized systems today follow a “request-response” pattern where an end client (either a human end user or another software application) submits a request to a remote system, which then runs a task that results in a response. Popular examples of this type of interaction include e-commerce purchases, lookups in a corporate application, or even the swipe of a credit card. We can broadly refer to these interactions as “transactions.” In this context, a transaction is simply a 1-to-1 exchange of information. These transactions are not necessarily financially based, nor are they necessarily associated with the transactions that make up the operations of a relational database management system (RDBMS). What we are referring to in this paper is simply about receiving a request from the client, running a computation on that request, and then returning an output back to the client.
Oftentimes in today’s digital and high-tech world, these transactions involve RDBMSs, or more generally, with systems that store data. These systems typically store data to disk drives or solid-state drives (SSDs), which represent a bottleneck in the throughput of the transaction. And as the volume of transactions grows, the impact of the bottleneck gets more pronounced.