Seth Woolley's Man Viewer

hash(3) - hash, hash - hash database access method - man 3 hash

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

HASH(3)                                                                HASH(3)



NAME
       hash - hash database access(2,5) method

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

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

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

       The access(2,5) method specific data structure provided to dbopen is defined
       in(1,8) the <db.h> include file(1,n) 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
              Ffactor  indicates  a desired density within the hash table.  It
              is an approximation of the number of keys allowed to  accumulate
              in(1,8)  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(7,n,1 builtins)  or  set(7,n,1 builtins) too low, hash tables will expand gracefully as
              keys are entered, although a slight performance degradation  may
              be noticed.  The default value is 1.

       cachesize
              A  suggested  maximum size, in(1,8) bytes, of the memory cache.  This
              value is only advisory, and the access(2,5) 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(3,n) and a length) and return a 32-bit quan-
              tity to be used as the hash value.

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

       If the file(1,n) 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
       used.

       If a hash function is specified, hash_open will attempt to determine if(3,n)
       the hash function specified is the same as the one with which the data-
       base was created, and will fail if(3,n) it is not.

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

ERRORS
       The hash access(2,5) method routines may fail and set(7,n,1 builtins) errno for any  of  the
       errors specified for the library routine dbopen(3).

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

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

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

BUGS
       Only big and little endian byte order is supported.



4.4 Berkeley Distribution         1994-08-18                           HASH(3)

References for this manual (incoming links)