When Should You Use FoundationDB?

FoundationDB is a fast, scalable, and highly durable open-source distributed database known for its incredible reliability even under severe operating conditions. It's earned a strong reputation for storing critical but a recent HackerNews discussion asked this question:

I've read lots about how fantastic FDB (and unique) but I'm struggling to understand the use case / problem to use it for.

Most applications today can just use a single-instance relational database or document store. PostgreSQL, MySQL and MongoDB are all good examples that are more than fast enough, with plenty of features and tooling to make development and administration easy.

When requirements increase, and scaling up has been exhausted (or isn't viable), there are many distributed versions of relational and document databases that provide more scalability and performance. Some like MongoDB have built-in support for horizontal scaling, while others like Postgres have dozens of extensions available to enable it. And there's a whole class of modern "newsql" databases like CockroachDB or Yugabyte that are built with a distributed architecutre from the start. These options all have their pros and cons, but solve the needs the vast majority.

Key/value stores are a specific type of database that offer a low-level API for extreme requirements when nothing else works. One example is adtech platforms where user profiles and contextual data need to be accessed in a fraction of a second to respond to an ad request, often hitting millions of queries-per-second. Another example is CDNs that need to lookup a specific piece of data across a large dataset very quickly.

There are plenty of key/value stores like Redis, HBase/Bigtable, Cassandra/ScyllaDB, and Aerospike that have various trade-offs in speed, scale and flexibility. What sets FoundationDB apart is strong consistency (supporting transactions across multiple keys) and extreme reliability which makes it a good choice as a core metadata and coordination service that other complex apps and distributed systems can rely on.

For example, Apple uses it as a backend for CloudKit, and Snowflake uses it to store the metadata and operations of its cloud data warehouse. Here's a video playlist from several other companies talking about it at FoundationDB Summit: youtube.com/playlist?list=PLbzoR-pLrL6oWYrC950yAhbLk8FRRB_Bt


Original answer on HN: https://news.ycombinator.com/item?id=30647616