We often get asked how FoundationDB can achieve high performance for transaction processing over a scalable, distributed cluster. Here is a brief overview.
To maintain high performance, the transactional authority is implemented by a number of individual transaction servers, each of which manages a portion of the incoming stream of transactions. FoundationDB’s design decomposes transaction processing into its individual functions and scales them independently. The separate functions are:
batching incoming transactions;
checking transaction conflicts;
durably storing the data.
Of these functions, many people intuitively focus on transaction conflict checking stage as a potential bottleneck. Fortunately, it turns out that this function is scalable. FoundationDB uses a sophisticated data-parallel and multithreaded algorithm to optimize conflict-checking so that it requires only a small percentage of the system’s total work. This optimization allows a few transaction servers to keep up with a large cluster of storage servers.