NAME

Apache2::Translation::DB - A provider for Apache2::Translation

SYNOPSIS

<TranslationProvider DB>
    Database  dbi:mysql:dbname:host
    User      username
    Password  password
    Singleton 1
    Table     tablename
    Key       keycolumn
    Uri       uricolumn
    Block     blockcolumn
    Order     ordercolumn
    Action    actioncolumn
    Cachetbl  cachetablename
    Cachecol  cachecolumn
    Cachesize 1000
</TranslationProvider>

or

$provider=Apache2::Translation::DB->new(Database=>..., ...);

$provider->start;
$provider->stop;

DESCRIPTION

The DB provider implements the Apache2::Translation provider interface as documented in Apache2::Translation::_base. It provides for all optional functions. No additional functions are supported.

Parameters

database DSN

a string describing a DBI database

user NAME
password PW

the user and password to use

table NAME

names the translation table.

key NAME
uri NAME
block NAME
order NAME
action NAME
id NAME
notes NAME

name the columns of the translation table to use. The id and notes columns are necessary only in combination with the admin interface. The id column if specified must have a default value on INSERT generating unique keys, something like autoincrement in MySQL or nextval('sequence') in PostgreSQL.

cachetbl NAME
cachecol NAME

name the cache table and its column

cachesize NUMBER|infinite

sets the maximum number of cached block lists, default is 1000.

If set to infinite the cache has no limits.

A Tie::Cache::LRU cache is used.

Apache2::Translation::DB caches database entries as lists of blocks. Each list of blocks consumes one cache entry.

For each request first the following lookup is done:

SELECT MAX($cachecol) FROM $cachetbl

The resulting value is then compared with the previous read value. If it has changed, it means the cache is invalid. If not, the cache is valid and if all information is found in the cache, no further database lookups are needed.

singleton BOOLEAN

Normally, Apache2::Translation tries to connect to the database at server startup. Then it inspects the database handle to see if Apache::DBI or Apache::DBI::Cache are loaded. If so, it will connect and disconnect for each translation phase / request, thus, put back the connection to the connection pool.

If neither of them is loaded the DB connection is used as a singleton. It is connected once at server startup and then held open (and reconnected if dropped by the database server).

With the optional singleton parameter you can decide to use a singleton connection even if a connection pool is in effect. If no connection pool is loaded, then of course setting singleton to false has no effect.

SEE ALSO

Apache2::Translation
Apache2::Translation::BDB
Apache2::Translation::File
Apache2::Translation::_base

AUTHOR

Torsten Foertsch, <torsten.foertsch@gmx.net>

COPYRIGHT AND LICENSE

Copyright (C) 2005-2008 by Torsten Foertsch

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.