Supporting Horizontal Scalability of Addressbook Server

In the previous release of the Sun Java System Communications Express, the Personal
Address Book entries for a particular domain was stored in a single LDAP location
that was represented by the defaultserver instance defined in the
db_config.properties file. The db_config.properties file
existed in the directory pointed by the personalstore.properties for
the domain. For example, uwc-install/WEB-INF/config/ldappstore .

This deployment was unable to scale to support large number of users and contacts
per Personal Address Book. To overcome this limitation, the psRoot attribute
in Sun Java System Communications Express 6.2, enables the administrator provision
users so that PAB data for different users can be is spread across different LDAP
locations.

For example, ldap://mydir.com:389/piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb

Figure 3-1 provides a high level overview of the architecture used to scale
Addressbook Server horizontally.

The key components of the Address Book Horizontal Scalability architecture are:

Personal Store

DB

DBMap

A Personal Store maintains the address book information of a user. It contains
the definition of all the address books a user has created along with all the entries
in those address books. Personal Stores are expressed as URLs, which describe the
directory instance in which they are located and the DN within that particular directory
instance.

A DB contains a collection of Personal Stores and as shown in Figure 3-1, any
number of DB’s can be accessed by the Address Book Server. Every DB is defined
by a DB-ID that defines the connection parameters for that DB. A DB can be of different
types and can point to different DB locations.

A DBMap is a collection of DBs of the same type. Each DBMap has an ID which
refers to the configuration information for that DBMap.

Figure 3–1 Horizontal Scalability of Address Book

The psRoot is an attribute in the User’s LDAP that
specifies the host, port of the directory instance and the DN where the Address Book
entries for the user is stored. The psRoot is in the form: ldap://ldap_host:ldap_port/DN.

The value of psRoot attribute determines the DB type and DB location.

In the psRoot example, ldap://mydir.com:389/piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb

ldap:// indicates that the Address Book Personal Store for
the user is accessed using LDAP DB Plugin.

mydir.com:389 specifies the LDAP Host and Port.

piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb specifies the
DN of the Personal Store.

Note –

The Addressbook Server does not provide any utility to distribute psRoot
values for users, per any scalability policy. Administrators need to set a specific
policy suited best for the organization and use custom scripts to set the psRoot value
for that policy.

The psRoot attribute can be turned on or off using the db.UserPsRoot parameter present in the domain specific personalstore.properties file. Set the parameter to “false” to use the defaultserver parameters in db_config.properties file. Set the parameter
to “true” to use the user’s psRoot value. The
Personal Store parameters listed in Configuring the Address Book Personal Store Parameters in db_config.properties file must be provided
for each unique directory server instance used in psRoot. At runtime,
the value of psRoot attribute is resolved to a directory instance
using db-key.ldaphost and db-key.ldapport, where db-key is
an arbitrary string that distinguishes one instance from the other. When no match
is found for the db-key.ldaphost and
db-key.ldapport, the defaultserver instance is used.

Setting the psRoot Value Automatically

When a new user logs in, default values are set for the psRoot attribute in the User’s entry.

For new users a psRoot value is constructed using the psRoot pattern defined in personalstore.properties file,
and the defaultserverhost and defaultserverPort values, in the db_config.properties file. For example, using
the default psRoot pattern, the default psRoot value
will be in the format: