<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj" -->

---
title: Building a global object store on FoundationDB | daily.dev
description: A Tigris Data co-founder explains how the globally distributed S3-compatible object store is built on FoundationDB for metadata, indices, and task queues. The...
canonical: https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Building a global object store on FoundationDB | daily.dev
og:description: A Tigris Data co-founder explains how the globally distributed S3-compatible object store is built on FoundationDB for metadata, indices, and task queues. The...
og:url: https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj
og:image: https://api.daily.dev/og/posts/1asqsxYcJ.png
og:image:alt: Building a global object store on FoundationDB
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building a global object store on FoundationDB

**[Tigris](https://daily.dev/sources/tigris)** · 9 min read · 1 upvotes · 0 comments

## Summary

A Tigris Data co-founder explains how the globally distributed S3-compatible object store is built on FoundationDB for metadata, indices, and task queues. The talk covers why FoundationDB was chosen (ACID transactions, ordered keyspace, operational safety), how writes bundle metadata updates and queue tasks into a single atomic transaction, how reads are resolved across regions via caching and reverse-proxy fetches, and how a custom queueing system modeled on Apple's QuiCK paper drives global replication without a separate coordination system like Kafka.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.tigrisdata.com/blog/fdb-krea-talk>

## Questions this post answers

### Why would you use FoundationDB instead of a message queue like Kafka for coordinating background tasks in a distributed storage system?

FoundationDB's ordered keyspace and transactional model let you build a queue directly inside the database, so a single ACID transaction can atomically write object metadata, update indices, and enqueue background tasks together. This avoids running a separate distributed transaction across a database and a message broker, and guarantees at-least-once task delivery since tasks live in the same transactional keyspace as the metadata.

_daily.dev surfaces engineering deep dives like this for teams weighing FoundationDB against a dedicated queue._

### How does a global object store serve a GET request for an object that isn't stored in the local region?

The request is reverse-proxied to the block store in the region where the object actually lives, since metadata replicated across FoundationDB clusters in every region records the object's true location. After serving that read, a replication job is enqueued so the object gets copied to the requesting region, making future GETs for the same object fast from local cache.

_Engineers designing multi-region caching and replication strategies can find write-ups like this through daily.dev._

### What companies use FoundationDB in production for critical infrastructure?

Apple and Snowflake both use FoundationDB as the foundation of their cloud infrastructure, and Apple's CloudKit team published the QuiCK paper describing a queueing system built on top of it. Tigris Data also relies on FoundationDB as the core metadata and queueing layer for its globally distributed object store.

_daily.dev helps developers track how proven databases like FoundationDB get adopted across the industry._

## Similar posts on daily.dev

- [We used a database as a message queue. Now we use Kafka.](https://daily.dev/posts/we-used-a-database-as-a-message-queue-now-we-use-kafka--qwyhbrgup) · Tigris · 0 upvotes · 1 comments
- [How Bucket Forking Brings GitHub-Style Forking To Object Storage](https://daily.dev/posts/how-bucket-forking-brings-github-style-forking-to-object-storage-perbev2qb) · The New Stack · 0 upvotes · 0 comments
- [Append-Only Object Storage: The Foundation Behind Cheap Bucket Forking](https://daily.dev/posts/append-only-object-storage-the-foundation-behind-cheap-bucket-forking-gll5lbynw) · Tigris · 0 upvotes · 0 comments
- [Building a Database on S3](https://daily.dev/posts/building-a-database-on-s3-z6q1mg0wr) · Metadata · 47 upvotes · 0 comments
- [Object storage is all you need](https://daily.dev/posts/object-storage-is-all-you-need-hsmxpbxss) · Tigris · 29 upvotes · 3 comments

---

Tags: [#architecture](https://daily.dev/tags/architecture), [#distributed-systems](https://daily.dev/tags/distributed-systems)

[View this post on daily.dev](https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Building a global object store on FoundationDB","url":"https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj"},"datePublished":"2026-08-18T15:15:19.400Z","dateModified":"2026-09-14T06:05:48.114Z","description":"A Tigris Data co-founder explains how the globally distributed S3-compatible object store is built on FoundationDB for metadata, indices, and task queues. The...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f8ff7ba5fa277a482ad05eb5a63960dd?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f8ff7ba5fa277a482ad05eb5a63960dd?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Tigris","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Tigris","logo":"https://media.daily.dev/image/upload/s--A5ku_6TS--/f_auto/v1716186679/logos/tigris","url":"https://daily.dev/sources/tigris"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"architecture,distributed-systems","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Tigris","item":"https://daily.dev/sources/tigris"},{"@type":"ListItem","position":3,"name":"Building a global object store on FoundationDB"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/building-a-global-object-store-on-foundationdb-1asqsxycj#faq","mainEntity":[{"@type":"Question","name":"Why would you use FoundationDB instead of a message queue like Kafka for coordinating background tasks in a distributed storage system?","acceptedAnswer":{"@type":"Answer","text":"FoundationDB's ordered keyspace and transactional model let you build a queue directly inside the database, so a single ACID transaction can atomically write object metadata, update indices, and enqueue background tasks together. This avoids running a separate distributed transaction across a database and a message broker, and guarantees at-least-once task delivery since tasks live in the same transactional keyspace as the metadata. daily.dev surfaces engineering deep dives like this for teams weighing FoundationDB against a dedicated queue."}},{"@type":"Question","name":"How does a global object store serve a GET request for an object that isn't stored in the local region?","acceptedAnswer":{"@type":"Answer","text":"The request is reverse-proxied to the block store in the region where the object actually lives, since metadata replicated across FoundationDB clusters in every region records the object's true location. After serving that read, a replication job is enqueued so the object gets copied to the requesting region, making future GETs for the same object fast from local cache. Engineers designing multi-region caching and replication strategies can find write-ups like this through daily.dev."}},{"@type":"Question","name":"What companies use FoundationDB in production for critical infrastructure?","acceptedAnswer":{"@type":"Answer","text":"Apple and Snowflake both use FoundationDB as the foundation of their cloud infrastructure, and Apple's CloudKit team published the QuiCK paper describing a queueing system built on top of it. Tigris Data also relies on FoundationDB as the core metadata and queueing layer for its globally distributed object store. daily.dev helps developers track how proven databases like FoundationDB get adopted across the industry."}}]}
```

