cdb man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

cdb(5)									cdb(5)

NAME
       cdb - Constant DataBase file format

DESCRIPTION
       A  cdb database is a single file used to map `keys' to `values', having
       records of (key,value) pairs.  File consists of 3 parts: toc (table  of
       contents), data and index (hash tables).

       Toc  has	 fixed	length	of 2048 bytes, containing 256 pointers to hash
       tables inside index sections.  Every pointer consists of position of  a
       hash  table in bytes from the beginning of a file, and a size of a hash
       table in entries, both are 4-bytes (32 bits) unsigned integers in  lit‐
       tle-endian  form.  Hash table length may have zero length, meaning that
       corresponding hash table is empty.

       Right after toc section, data section follows  without  any  alingment.
       It  consists  of	 series of records, each is a key length, value (data)
       length, key and value.  Again, key and value length are 4-byte unsigned
       integers.  Each next record follows previous without any special align‐
       ment.

       After data section, index (hash tables) section follows.	 It should  be
       looked  to  in conjunction with toc section, where each of max 256 hash
       tables are defined.  Index section consists of series of	 hash  tables,
       with  starting  position and length defined in toc section.  Every hash
       table is a sequence of records each holds two numbers: key's hash value
       and  record position inside data section (bytes from the beginning of a
       file to first byte of key length	 starting  data	 record).   If	record
       position	 is  zero,  then  this is an empty hash table slot, pointed to
       nowhere.

       CDB hash function is
	 hv = ((hv << 5) + hv) ^ c
       for every single c byte of a key, starting with hv = 5381.

       Toc section indexed by (hv % 256), i.e. hash value modulo  256  (number
       of entries in toc section).

       In  order  to  find a record, one should: first, compute the hash value
       (hv) of a key.  Second, look to hash table number hv modulo 256.	 If it
       is  empty,  then there is no such key exists.  If it is not empty, then
       third, loop by slots inside that hash table, starting  from  slot  with
       number  hv divided by 256 modulo length of that table, or ((hv / 256) %
       htlen), searching for this hv in hash table.  Stop search on empty slot
       (if  record position is zero) or when all slots was probed (note cyclic
       search, jumping from end to beginning of a table).  When hash value  in
       question	 is  found in hash table, look to key of corresponding record,
       comparing it with key in question.  If them  of	the  same  length  and
       equals  to each other, then record is found, overwise, repeat with next
       hash table slot.	 Note that there may be several records with the  same
       key.

SEE ALSO
       cdb(1), cdb(3).

AUTHOR
       The  tinycdb  package written by Michael Tokarev <mjt@corpit.ru>, based
       on ideas and shares file format with original cdb library by Dan	 Bern‐
       stein.

LICENSE
       Public domain.

				   Apr, 2005				cdb(5)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net