10. RAIDb Basics

10.1. RAIDb Definition

RAIDb stands for Redundant Array of Inexpensive Databases. This acronym has been used in reference to the RAID (Redundant Array of Inexpensive Disks) concept that achieves scalability and high availability of disk subsystems at a low cost. RAIDb aims at providing better performance and fault tolerance than a single database by combining multiple inexpensive database instances into an array of databases.

One of the goals of RAIDb is to hide the distribution complexity and to provide the database clients with the view of a single database. As for RAID, a controller sits in front of the underlying resources. The clients send their requests to the RAIDb controller that balances them among the set of RDBMS backends.

10.2. RAIDb-0

RAIDb-0 consists in partitioning the database tables among the database backend nodes. A table itself cannot be partitionned but the different tables can be distributed on different backend nodes. RAIDb-0 requires at least two database backends, provides moderate performance scalability but does not offer fault tolerance. Figure 3, “RAIDb-0 example” shows an example of a RAIDb-0 configuration.

Figure 3. RAIDb-0 example

RAIDb-0 example

10.3. RAIDb-1

RAIDb-1 offers a full mirroring or full replication of the database on the backends. It offers the best fault tolerance scheme since the system is still available with only one backend. On the minus side, there is no speedup on writes (UPDATE, INSERT, DELETE requests) since they have to be broadcasted to all nodes. Figure 4, “RAIDb-1 example” shows an example of a RAIDb-1 configuration.

Figure 4. RAIDb-1 example

RAIDb-1 example

10.4. RAIDb-2

RAIDb-2 is a tradeoff between RAIDb-0 and RAIDb-1. It provides partial replication to tune the degree of replication of each database table to obtain the best read/write throughput. RAIDb-2 requires that each database table is available on at least two nodes. Figure 5, “RAIDb-2 example” shows an example of a RAIDb-2 configuration.

Figure 5. RAIDb-2 example

RAIDb-2 example

10.5. Nested RAIDb Levels

It is possible to compose several RAIDb levels to build large scale configurations or meet specific needs. The next example is a RAIDb-1-0 configuration where a top level RAIDb-1 controller dispatches the requests to three full databases implemented with a RAIDb-0 controller. Figure 6, “RAIDb-1-0 example” shows an example of a RAIDb-1-0 configuration.

Figure 6. RAIDb-1-0 example

RAIDb-1-0 example

This last example (Figure 7, “RAIDb-0-1 example”) shows a RAIDb-0-1 composition. The top level is a RAIDb-0 controller and fault tolerance is achieved on each partition using a RAIDb-1 controller.

Figure 7. RAIDb-0-1 example

RAIDb-0-1 example