*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> hash (3)              



NAME    [Toc]    [Back]

       hash - hash database access method

SYNOPSIS    [Toc]    [Back]

       #include <sys/types.h>
       #include <db.h>

DESCRIPTION    [Toc]    [Back]

       The  routine dbopen is the library interface to database files.	One of
       the supported file formats is hash files.  The general  description  of
       the database access methods is in dbopen(3), this manual page describes
       only the hash specific information.

       The hash data structure is an extensible, dynamic hashing scheme.

       The access method specific data structure provided to dbopen is defined
       in the <db.h> include file as follows:

       typedef struct {
	      u_int bsize;
	      u_int ffactor;
	      u_int nelem;
	      u_int cachesize;
	      u_int32_t (*hash)(const void *, size_t);
	      int lorder;
       } HASHINFO;

       The elements of this structure are as follows:

       bsize  Bsize  defines  the  hash table bucket size, and is, by default,
	      256 bytes.  It may be preferable to increase the page  size  for
	      disk-resident tables and tables with large data items.

	      Ffactor  indicates  a desired density within the hash table.  It
	      is an approximation of the number of keys allowed to  accumulate
	      in  any  one  bucket,  determining  when the hash table grows or
	      shrinks.	The default value is 8.

       nelem  Nelem is an estimate of the final size of the  hash  table.   If
	      not  set	or  set too low, hash tables will expand gracefully as
	      keys are entered, although a slight performance degradation  may
	      be noticed.  The default value is 1.

	      A  suggested  maximum size, in bytes, of the memory cache.  This
	      value is only advisory, and the access method will allocate more
	      memory rather than fail.

       hash   Hash  is	a  user defined hash function.	Since no hash function
	      performs equally well on all possible data, the  user  may  find
	      that the built-in hash function does poorly on a particular data
	      set.  User specified hash functions must take two  arguments  (a
	      pointer to a byte string and a length) and return a 32-bit quantity
 to be used as the hash value.

       lorder The byte order for integers in  the  stored  database  metadata.
	      The  number  should represent the order as an integer; for example,
 big endian order would be the number 4,321.	If lorder is 0
	      (no  order is specified) the current host order is used.	If the
	      file already exists, the specified  value  is  ignored  and  the
	      value specified when the tree was created is used.

       If the file already exists (and the O_TRUNC flag is not specified), the
       values specified for the parameters bsize, ffactor,  lorder  and  nelem
       are  ignored  and  the  values  specified when the tree was created are

       If a hash function is specified, hash_open will attempt to determine if
       the hash function specified is the same as the one with which the database
 was created, and will fail if it is not.

       Backward compatible interfaces to the routines described in dbm(3), and
       ndbm(3)	are provided, however these interfaces are not compatible with
       previous file formats.

ERRORS    [Toc]    [Back]

       The hash access method routines may fail and set errno for any  of  the
       errors specified for the library routine dbopen(3).

SEE ALSO    [Toc]    [Back]

       btree(3), dbopen(3), mpool(3), recno(3)

       Dynamic	Hash  Tables, Per-Ake Larson, Communications of the ACM, April

       A New Hash Package for UNIX, Margo Seltzer, USENIX Proceedings,	Winter

BUGS    [Toc]    [Back]

       Only big and little endian byte order is supported.

4.4 Berkeley Distribution	  1994-08-18			       HASH(3)
[ Back ]
 Similar pages
Name OS Title
btree IRIX btree database access method
btree NetBSD btree database access method
btree FreeBSD btree database access method
btree Linux btree database access method
btree OpenBSD btree database access method
btree Tru64 btree database access method
recno FreeBSD record number database access method
recno IRIX record number database access method
recno Linux record number database access method
recno OpenBSD record number database access method
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service