<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Copyright 2005 The Apache Software Foundation or its licensors, as
 applicable.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_dbd.xml.meta">

<name>mod_dbd</name>
<description>Manages SQL database connections</description>
<status>Extension</status>
<sourcefile>mod_dbd.c</sourcefile>
<identifier>dbd_module</identifier>
<compatibility>Version 2.1 and later</compatibility>

<summary>
    <p><module>mod_dbd</module> manages SQL database connections using
    <a href="http://people.apache.org/~niq/dbd.html">apr_dbd</a>.
    It provides database connections on request to modules
    requiring SQL database functions, and takes care of
    managing databases with optimal efficiency and scalability
    for both threaded and non-threaded MPMs.</p>
</summary>

<section id="pooling"><title>Connection Pooling</title>
    <p>This module manages database connections, in a manner
    optimised for the platform.  On non-threaded platforms,
    it provides a persistent connection in the manner of
    classic LAMP (Linux, Apache, Mysql, Perl/PHP/Python).
    On threaded platform, it provides an altogether more
    scalable and efficient <em>connection pool</em>, as
    described in <a href="http://www.apachetutor.org/dev/reslist"
    >this article at ApacheTutor</a>. <module>mod_dbd</module> supersedes
    the modules presented in that article.</p>
</section>

<section id="API"><title>Apache DBD API</title>
    <p><module>mod_dbd</module> exports five functions for other modules
    to use. The API is as follows:</p>

    <example>
<pre><code>typedef struct {
    apr_dbd_t *handle;
    apr_dbd_driver_t *driver;
    apr_hash_t *prepared;
} ap_dbd_t;

/* Export functions to access the database */

/* acquire a connection that MUST be explicitly closed.
 * Returns NULL on error
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_open(apr_pool_t*, server_rec*);

/* release a connection acquired with ap_dbd_open */
AP_DECLARE(void) ap_dbd_close(server_rec*, ap_dbd_t*);

/* acquire a connection that will have the lifetime of a request
 * and MUST NOT be explicitly closed.  Return NULL on error.
 * This is the preferred function for most applications.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_acquire(request_rec*);

/* acquire a connection that will have the lifetime of a connection
 * and MUST NOT be explicitly closed.  Return NULL on error.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_cacquire(request_rec*);

/* Prepare a statement for use by a client module */
AP_DECLARE(void) ap_dbd_prepare(server_rec*, const char*, const char*);

/* Also export them as optional functions for modules that prefer it */
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_open, (apr_pool_t*, server_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_close, (server_rec*, ap_dbd_t*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_acquire, (request_rec*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_cacquire, (conn_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_prepare, (server_rec*, const char*, const char*));
</code></pre>
    </example>
</section>

<section id="prepared"><title>SQL Prepared Statements</title>
    <p><module>mod_dbd</module> supports SQL prepared statements on behalf
    of modules that may wish to use them.  Each prepared statement
    must be assigned a name (label), and they are stored in a hash:
    the <code>prepared</code> field of an <code>ap_dbd_t</code>.
    Hash entries are of type <code>apr_dbd_prepared_t</code>
    and can be used in any of the apr_dbd prepared statement
    SQL query or select commands.</p>

    <p>It is up to dbd user modules to use the prepared statements
    and document what statements can be specified in httpd.conf,
    or to provide their own directives and use <code>ap_dbd_prepare</code>.</p>
</section>

<directivesynopsis>
<name>DBDriver</name>
<description>Specify an SQL driver</description>
<syntax>DBDriver <var>name</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Selects an apr_dbd driver by name.  The driver must be installed
    on your system (on most systems, it will be a shared object or dll).
    For example, <code>DBDriver mysql</code> will select the MySQL
    driver in apr_dbd_mysql.so.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DBDParams</name>
<description>Parameters for database connection</description>
<syntax>DBDParams
<var>param1</var>=<var>value1</var>[,<var>param2</var>=<var>value2</var>]</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>As required by the underlying driver.  Typically this will be
    used to pass whatever cannot be defaulted amongst username,
    password, database name, hostname and port number for connection.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DBDPersist</name>
<description>Whether to use persistent connections</description>
<syntax>DBDPersist 0|1</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>If set to 0, persistent and pooled connections are disabled.
    A new database connection is opened when requested by a client,
    and closed immediately on release.  This option is for debugging
    and low-usage servers.</p>

    <p>The default is to enable a pool of persistent connections
    (or a single LAMP-style persistent connection in the case of a
    non-threaded server), and should almost always be used in operation.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DBDPrepareSQL</name>
<description>Define an SQL prepared statement</description>
<syntax>DBDPrepareSQL <var>"SQL statement"</var> <var>label</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>For modules such as authentication that use repeatedly use a
    single SQL statement, optimum performance is achieved by preparing
    the statement at startup rather than every time it is used.
    This directive prepares an SQL statement and assigns it a label.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DBDMin</name>
<description>Minimum number of connections</description>
<syntax>DBDMin <var>number</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Set the minimum number of connections per process (threaded
    platforms only).</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DBDKeep</name>
<description>Maximum sustainednumber of connections</description>
<syntax>DBDKeep <var>number</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Set the maximum number of connections per process to be
    sustained, other than for handling peak demand (threaded
    platforms only).</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DBDMax</name>
<description>Maximum number of connections</description>
<syntax>DBDMax <var>number</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Set the hard maximum number of connections per process
    (threaded platforms only).</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DBDExptime</name>
<description>Keepalive time for idle connections</description>
<syntax>DBDExptime <var>time-in-seconds</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Set the time to keep idle connections alive where the number
    of connections specified in DBDKeep has been exceeded (threaded
    platforms only).</p>
</usage>
</directivesynopsis>

</modulesynopsis>
