summaryrefslogtreecommitdiff
path: root/db/mod_db4/ABOUT
blob: 5c7a73da7293ba6e47f2e5969bf7e55f740cb5aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48


This is the mod_db4 apache module, providing a safe framework
for running db4 applications in the Apache 1.3 environment. In
general, it is dangerous to run db4 in a multi-process system
without some facility to coordinate recovery between 
participating processes. Apache natively provides no
interface for commuication between processes, so the mod_db4 
module exists to provide this communication.

Specifically, mod_db4 provides the following facilities:

o New constructors for DB and DB_ENV structures, which install
replacement open/close methods.
o Transparent caching of open DB and DB_ENV structures
o Reference counting on all structures, allowing the module to
detect the initial opening of any managed database
and automatically perform recovery.
o Automatic detection of unexpected failures (segfaults, or a
module actually calling exit() and avoiding shutdown phases,
and automatic termination of all child processes with open 
database resources to attempt consistency.

mod_db4 is designed to be used as an alternative interface to db4.
To have another Apache module (for example, mod_foo) use mod_db4, 
do not link mod_foo against libdb-4.2.  In your mod_foo makefile,
you should 

#include "mod_db4_export.h"

and add your Apache include directory to your CPPFLAGS.

In mod_foo, to create a mod_db4 managed DB_ENV, use the following:

int mod_db4_db_env_create(DB_ENV **dbenvp, u_int32_t flags);

which takes identical arguments to db_env_create().

To create a mod_db4 managed DB, use

int mod_db4_db_create(DB **dbp, DB_ENV *dbenv, u_int32_t flags);

which takes identical arguments to db_create().

Otherwise the API is completely consistent with the standard Berkeley
DB API.

For installation instructions, see the INSTALL file.