NAME
cdbmake - create a constant database
SYNOPSIS
cdbmake
cdb
cdb.tmp
DESCRIPTION
cdbmake
reads a series of encoded records from its standard input and writes a
constant database to
R cdb .
cdbmake
ensures that
cdb
is updated atomically, so programs reading
cdb
never have to wait for
cdbmake
to finish.
It does this by first writing the database to
cdb.tmp
and then moving
cdb.tmp
on top of
R cdb .
If
cdb.tmp
already exists, it is destroyed.
The directories containing
cdb.tmp
and
cdb
must be writable to
R cdbmake ;
they must also be on the same filesystem.
cdbmake
always makes sure that
cdb.tmp
is safely written to disk before it replaces
R cdb .
If the input is in a bad format or if
cdbmake
has any trouble writing
cdb.tmp
to disk,
cdbmake
complains and leaves
cdb
alone.
RECORD FORMAT
Records are indexed by keys.
A key is a string.
cdb
is structured so that another program, starting from a key, can quickly find
the relevant record.
cdbmake
allows several records with the same key, although most readers take only
the first record, and
cdbmake
slows down somewhat if there are many records with the same key.
cdbmake
and
cdbdump(1)
preserve the order of records.
A record is encoded for
cdbmake
as +klen,dlen:key->data followed by a newline.
Here
klen
is the number of bytes in
key
and
dlen
is the number of bytes in
R data .
The end of
data
is indicated by an extra newline.
For example:
+3,5:one->Hello
+3,7:two->Goodbye
key
and
data
may contain any characters, including colons, dashes, newlines, and nulls.
Keys and data do not have to fit into memory.
A database cannot exceed 4 gigabytes.
cdb
is portable across machines.
SEE ALSO
cdbdump(1),
cdbget(1),
cdbstats(1)