Understanding the upper limit of 100TB databases


I am exploring the use of FoundationDB as the storage layer for a large number of services in a multi-region deployment. I believe we have a similar problem space to Apple’s CloudKit, which uses many different FoundationDB clusters (from the QuiCK queuing system paper). How is this scale is achieved?

The documentation states:

FoundationDB has been tested with databases up to 100 TB (total size of key-value pairs – required disk space will be significantly higher after replication and overhead).

I understand that 100 TB actually becomes ~500 TB (Github discussion) when replication/overhead is taken into account, but this feels like an incredibly small limit. I can buy a 100TB RAID array to put next to my desk.

The recommended solution from this “Scalability performance benchmark” forum post was to shard across multiple clusters. But doesn’t this break transaction guarantees?

I suspect I’m misunderstand something. Maybe there is a design pattern that addresses these problems. Can anyone explain this, or point me to relevant info?

Here is QuiCK paper that I referenced. It seems to indicate the best practice is to scale out the number of clusters.