6.2. Distributing the Directory Data

Distributing the data allows the directory service to be scaled across multiple servers without physically containing those directory entries on each server in the enterprise. A distributed directory can therefore hold a much larger number of entries than would be possible with a single server.
In addition, the directory service can be configured to hide the distribution details from the user. As far as users and applications are concerned, there is only a single directory that answers their directory queries.
The following sections describe the mechanics of data distribution in more detail:

6.2.1. About Using Multiple Databases

Directory Server stores data in LDBM databases. This a high-performance, disk-based database. Each database consists of a set of large files that contain all of the data assigned to it.
Different portions of the directory tree can be stored in different databases.
For example, Figure 6.1, “Storing Suffix Data in Separate Databases” shows three suffixes being stored in three separate databases.
Storing Suffix Data in Separate Databases

Figure 6.1. Storing Suffix Data in Separate Databases

When the directory tree is divided between a number of databases, these databases can then be distributed across multiple servers. For example, if there are three databases, DB1, DB2, and DB3, to contain the three suffixes of the directory tree, they can be stored on two servers, Server A and Server B.
Dividing Suffix Databases Between Separate Servers

Figure 6.2. Dividing Suffix Databases Between Separate Servers

Server A contains DB1 and DB2, and Server B contains DB3.
Distributing databases across multiple servers reduces the workload on each server. The directory service can therefore be scaled to a much larger number of entries than would be possible with a single server.
In addition, Directory Server supports adding databases dynamically, which means that new databases can be added when the directory service needs them without taking the entire directory service off-line.

6.2.2. About Suffixes

Each database contains the data within a specific suffix of the Directory Server. Both root and subsuffixes can be created to organize the contents of the directory tree. A root suffix is the entry at the top of a tree. It can be the root of the directory tree or part of a larger tree designed for the Directory Server. A subsuffix is a branch beneath a root suffix. The data for root and subsuffixes are contained by databases.
For example, Example Corp. creates suffixes to represent the distribution of their directory data.
Directory Tree for Example Corp.

Figure 6.3. Directory Tree for Example Corp.

Example Corp. can spread their directory tree across five different databases, as in Figure 6.4, “Directory Tree Spread across Multiple Databases”.
Directory Tree Spread across Multiple Databases

Figure 6.4. Directory Tree Spread across Multiple Databases

The resulting suffixes would contain the following entries:
Suffixes for a Distributed Directory Tree

Figure 6.5. Suffixes for a Distributed Directory Tree

The o=NetscapeRoot and dc=example,dc=com suffixes are both root suffixes. The ou=testing,dc=example,dc=com suffix, the ou=development,dc=example,dc=com suffix, and the ou=partners,ou=development,dc=example,dc=com suffix are all subsuffixes of the dc=example,dc=com root suffix. The root suffix dc=example,dc=com contains the data in the ou=marketing branch of the original directory tree.
Using Multiple Root Suffixes

The directory service might contain more than one root suffix. For example, an ISP called "Example" might host several websites, one for example_a.com and one for example_b.com. The ISP would create two root suffixes, one corresponding to the o=example_a.com naming context and one corresponding to the o=example_b.com naming context.

Directory Tree with Multiple Root Suffixes

Figure 6.6. Directory Tree with Multiple Root Suffixes

The dc=example,dc=com entry represents a root suffix. The entry for each hosted customer is also a root suffix (o=example_a and o=example_b). The ou=people and the ou=groups branches are subsuffixes under each root suffix.