# Papers/concepts to better understand foundationdb architecture

**URL:** https://forums.foundationdb.org/t/papers-concepts-to-better-understand-foundationdb-architecture/1672
**Category:** Development
**Created:** [October 7, 2019, 6:17pm UTC](https://forums.foundationdb.org/t/papers-concepts-to-better-understand-foundationdb-architecture/1672 "2019-10-07T18:17:49Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![rishabh](https://sea1.discourse-cdn.com/foundationdb/user_avatar/forums.foundationdb.org/rishabh/32/540_2.png) [@rishabh](https://forums.foundationdb.org/u/rishabh)
#### Post date: [October 7, 2019, 6:17pm UTC](https://forums.foundationdb.org/t/papers-concepts-to-better-understand-foundationdb-architecture/1672/1 "2019-10-07T18:17:49Z")

</div>

I was going through foundationdb codebase and was struggling to understand few concepts like teams etc

Is there a white paper on fdb architecture. If not, could someone guide me with a list of research papers/concepts one should read before diving into fdb codebase.

If there is a dedicated readme on how to read the codebase OR fdb concepts, please point me to the same.

---

<div class="post-metadata">

### Author: ![ryanworl](https://sea1.discourse-cdn.com/foundationdb/user_avatar/forums.foundationdb.org/ryanworl/32/440_2.png) [@ryanworl](https://forums.foundationdb.org/u/ryanworl)
#### Post date: [October 7, 2019, 6:25pm UTC](https://forums.foundationdb.org/t/papers-concepts-to-better-understand-foundationdb-architecture/1672/2 "2019-10-07T18:25:11Z")

</div>

If you want to do a thorough reading of the code at the network/RPC level, I would suggest starting with greping the source for this string:

> `RequestStream<`

Angle bracket is important there. You’ll mostly find files with the names like `StorageServerInterface.h` or `CoordinatorInterface.h`

These `RequestStream` instances will guide you through the RPC layer of what happens when different components of FDB receive different RPCs. Where those `RequestStream`s are declared, which request types they are parameterized on, and how they are used inside actors themselves will be useful.

This isn’t a general answer to how to understand FDB completely, but there are a lot of files that are implementation details which you can skip over. If you follow the RPCs you can get a good idea of which components talk to each other, what they are sending around, etc.

---

<div class="post-metadata">

### Author: ![alexmiller](https://sea1.discourse-cdn.com/foundationdb/user_avatar/forums.foundationdb.org/alexmiller/32/326_2.png) [@alexmiller](https://forums.foundationdb.org/u/alexmiller)
#### Post date: [October 7, 2019, 6:33pm UTC](https://forums.foundationdb.org/t/papers-concepts-to-better-understand-foundationdb-architecture/1672/3 "2019-10-07T18:33:45Z")

</div>

There’s not a lot of existing material focused on trying to introduce a person to FDB from a code and architecture perspective. It’s an area that we should improve, but for now, I think [Technical overview of the database](https://forums.foundationdb.org/t/technical-overview-of-the-database/135) has most of the available material linked somewhere in it.

If you have more targeted questions, you’re welcome to ask, and our answers here will probably end up getting worked into the documentation eventually anyway.

---

<div class="post-metadata">

### Author: ![trevor.clinkenbeard](https://avatars.discourse-cdn.com/v4/letter/t/9fc29f/32.png) [@trevor.clinkenbeard](https://forums.foundationdb.org/u/trevor.clinkenbeard)
#### Post date: [October 9, 2019, 8:16pm UTC](https://forums.foundationdb.org/t/papers-concepts-to-better-understand-foundationdb-architecture/1672/4 "2019-10-09T20:16:16Z")

</div>

To better understand the Flow programming language that FoundationDB is written in, as well as the basics of how the RPCs work, there is a video [here](https://github.com/apple/foundationdb/wiki/FDB-Video-Library) that is a useful introduction.
