BENEFITS
- The database layer provides an object view of database information by applying schema semantics to database records, thereby isolating the upper layers of the directory service from the underlying database system. The database layer is an internal interface that is not exposed to users. No database access calls are made directly to the Extensible Storage Engine; instead, all database access is routed through the database layer.
- Active Directory provides a hierarchical namespace. Each object is uniquely identified in the database by its individual naming attribute, called the relative distinguished name (also known as the RDN). The relative distinguished name and the chain of successive parent object names make up the object's distinguished name (also known as the DN). The database stores the relative distinguished name for each object, as well as a reference to the parent object The database layer follows these parent references and concatenates the successive relative distinguished names to form distinguished names.
- Active Directory relative distinguished names are unique within a particular parent; that is, Active Directory does not permit two objects with the same relative distinguished name under the same parent container. The distinguished name identifies one object only and is unique (that is, no other object in the directory has its name).
- A major function of the database layer is to translate each distinguished name into an integer structure called the distinguished name tag , which is used for all internal accesses. The database layer guarantees the uniqueness of the distinguished name tag for each database record.
- All data that describes an object is held as a set of attributes, which are stored as columns in the database. The database layer is responsible for the creation, retrieval, and deletion of individual records, attributes within records, and values within attributes. To carry out these functions, the database layer uses the schema cache (an in-memory structure in the DSA) to get information about the attributes that it needs.
A database abstraction layer is an application programming interface which unifies the communication between a computer application and databases such as MySQL, PostgreSQL, Oracle or SQLite. Traditionally, all database vendors provide their own interface tailored to their products which leave it to the application programmer to implement code for all database interfaces he would like to support. Database abstraction layers reduce the amount of work by providing a consistent API to the developer and hide the database specifics behind this interface as much as possible. There exist many abstraction layers with different interfaces in numerous programming languages
