Skip to content

Overview#

In the next few chapters we will go through the internal architecture of RonDB, both of the data nodes and of the NDB API.

RonDB uses a message passing architecture, it is implemented in C++ using classes. But most of those classes are fairly big classes that we call blocks. Messages are addressed with a 32-bit address label. The messages are called signals. The most essential part of RonDB is about blocks and signals. We start by describing how these blocks and signals are mapped in the data nodes. Next we describe them in the API nodes.

To understand the presentation of the most important signal flows, we next introduce the blocks in the data nodes.

We present the most important signal flows to provide an understanding of what happens in RonDB when a query is executed towards RonDB.

RonDB is a database, thus presenting the most important data structures we use is important. This includes the data structure of our rows, our hash index our ordered index and our data structures for row locks.

To implement this architecture we have implemented a virtual machines in steps, the first was optimised for machines with 2 CPUs and the current one is scalable to more than 1000 CPUs.

We will discuss some other important internal architecture components used in many parts of RonDB such as internal triggers, the transporter architecture used for communication and our principles for memory allocation.