Papers/concepts to better understand foundationdb architecture

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.

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 RequestStreams 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.

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 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.

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 that is a useful introduction.

1 Like