Menu

Home

Mark R. Bannister

DBIS Reference Implementation

What is DBIS?

DBIS (pronounced "dee-biss") is short for Directory Based Information Services. It is a modern evolution of RFC2307 and RFC2307bis and is a direct replacement for them. It is designed to provide a standard and flexible way of representing NIS maps in an LDAP directory server.

DBIS is described in detail in its own set of IETF internet drafts:

The DBIS Reference Implementation is a full implementation of all of the above internet drafts. It is mainly written in Python and consists of the following key components:

  • nss_dbis: DBIS is bundled with a version of Arthur de Jong's nss-pam-ldapd program, which is used for its NSS library. The NSS library provides the OS interface needed to access the DBIS maps via commands such as getent and C APIs such as getpwent(), getgrent() and gethostbyname().

  • dbis: client program used for querying DBIS data from the server. This provides access to all DBIS maps, even those not exposed through NSS, and provides extra information not otherwise available through the NSS library such as the DN for each map entry, all LDAP attributes associated with the entry, when it was retrieved from LDAP and when it will expire from the cache.

  • JSON support: DBIS maps can be downloaded in JSON format, for interfacing with a variety of different applications and programming languages.

  • Python APIs: a complete programming interface that can be used by any Python program to obtain the same information programmatically that can be obtained with the dbis client tool. In fact, the dbis client tool is a small wrapper around this API.

  • Perl APIs: a programming interface for Perl.

  • C APIs: a programming interface for C.

  • dbis-cachemgr: a scalable multi-threaded daemon program (the DBIS server) that runs in the background listening for requests from the local host, obtaining required data from LDAP and managing an in-memory cache. dbis-cachemgr is the back-end used by the dbis client tool, Python APIs and NSS library.

  • Pyloom: a Python library invented for DBIS that can be used by any Python program to simplify developing a multi-threaded server application. This library was developed because the existing Python libraries available for setting up multi-threaded TCP servers were lacking the scalability and flexibility required by DBIS.

What problems does DBIS solve?

RFC2307 describes how to represent NIS information in LDAP, but it did not describe how clients should access that information. A typical RFC2307 deployment involves one of many choices of product, often commercial, each of which have their own distinct way of defining how a client gets its name service information and what schema it uses. The client configuration differs from one product to the next, with some products offering more powerful features than others, and the way the client is configured may also vary between OS platforms.

DBIS solves this problem by standardising on how the maps are declared, what schema is used and provides standard enterprise-class features that are available for all, ensuring greater interoperability between products and a guaranteed minimum feature set. DBIS also fixes a few problems with the RFC2307 schema that makes it more compatible with the way the original NIS maps behave.

Why do I need DBIS?

If you are managing an environment that uses NIS, then there are many benefits to be had migrating that data to LDAP. If you are managing an environment that already has NIS maps in LDAP, chances are you're already making use of RFC2307. DBIS is the next evolutionary step, and as DBIS can use maps that are defined with the RFC2307 schema, migration is easy and the benefits quick to realise. For a list of benefits, see [DBIS and RFC2307 - A Comparison].

Latest news

DBIS 1.5.0 was released on 30th September 2015, and introduces the C API that works similarly to the Python API and Perl API.

DBIS featured at LDAPCon 2015 on 12th November at the University of Edinburgh School of Informatics Forum.

What next?

To read more about DBIS, or to download it and try it out, use the following links:


Related

Wiki: Configuring DBIS
Wiki: DBIS Presentations
Wiki: DBIS Reference Manual
Wiki: DBIS and RFC2307 - A Comparison
Wiki: Installing DBIS
Wiki: Using DBIS

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.