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.
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.
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.
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.
Figure 6.3. Directory Tree for Example Corp.
Figure 6.4. Directory Tree Spread across Multiple Databases
The resulting suffixes would contain the following entries:
Figure 6.5. Suffixes for a Distributed Directory Tree
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.
Figure 6.6. Directory Tree with Multiple Root Suffixes
dc=example,dc=com entry represents a root suffix. The entry for each hosted customer is also a root suffix (
ou=people and the
ou=groups branches are subsuffixes under each root suffix.