Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TCADB(3)			  Tokyo Cabinet 			TCADB(3)

NAME
     tcadb - the abstract database API

DESCRIPTION
     Abstract  database  is  a set of interfaces to use on-memory hash database,
     on-memory tree database, hash  database,  B+  tree  database,  fixed-length
     database, and table database with the same API.

     To  use  the  abstract database API, include `tcutil.h', `tcadb.h', and re-
     lated standard header files.  Usually, write the following description near
     the front of a source file.

	    #include <tcutil.h>
	    #include <tcadb.h>
	    #include <stdlib.h>
	    #include <stdbool.h>
	    #include <stdint.h>

     Objects whose type is pointer to `TCADB' are used to handle abstract  data-
     bases.  An abstract database object is created with the function `tcadbnew'
     and  is  deleted with the function `tcadbdel'.  To avoid memory leak, it is
     important to delete every object when it is no longer in use.

     Before operations to store or retrieve records, it is necessary to  connect
     the abstract database object to the concrete one.	The function `tcadbopen'
     is  used  to open a concrete database and the function `tcadbclose' is used
     to close the database.  To avoid data missing or corruption, it  is  impor-
     tant  to  close every database instance when it is no longer in use.  It is
     forbidden for multible database objects in a process to open the same data-
     base at the same time.

API
     The function `tcadbnew' is used in order to create an abstract database ob-
     ject.

	    TCADB *tcadbnew(void);
		   The return value is the new abstract database object.

     The function `tcadbdel' is used in order to delete an abstract database ob-
     ject.

	    void tcadbdel(TCADB *adb);
		   `adb' specifies the abstract database object.

     The function `tcadbopen' is used in order to open an abstract database.

	    bool tcadbopen(TCADB *adb, const char *name);
		   `adb' specifies the abstract database object.
		   `name' specifies the name of the database.  If it is "*", the
		   database will be an on-memory hash database.  If it	is  "+",
		   the database will be an on-memory tree database.  If its suf-
		   fix	is ".tch", the database will be a hash database.  If its
		   suffix is ".tcb", the database will be a  B+  tree  database.
		   If  its suffix is ".tcf", the database will be a fixed-length
		   database.  If its suffix is ".tct", the database  will  be  a
		   table  database.  Otherwise, this function fails.  Tuning pa-
		   rameters can trail the name, separated by "#".  Each  parame-
		   ter	is composed of the name and the value, separated by "=".
		   On-memory hash database supports "bnum", "capnum", and  "cap-
		   siz".   On-memory  tree  database supports "capnum" and "cap-
		   siz".  Hash database supports "mode", "bnum", "apow", "fpow",
		   "opts", "rcnum", "xmsiz", and  "dfunit".   B+  tree	database
		   supports  "mode",  "lmemb",	"nmemb", "bnum", "apow", "fpow",
		   "opts",   "lcnum",	"ncnum",    "xmsiz",	and    "dfunit".
		   Fixed-length database supports "mode", "width", and "limsiz".
		   Table  database  supports  "mode",  "bnum",	"apow",  "fpow",
		   "opts", "rcnum", "lcnum",  "ncnum",	"xmsiz",  "dfunit",  and
		   "idx".
		   If successful, the return value is true, else, it is false.
		   The	tuning	parameter "capnum" specifies the capacity number
		   of records.	"capsiz" specifies the capacity  size  of  using
		   memory.   Records  spilled  the  capacity  are removed by the
		   storing order.  "mode" can contain  "w"  of	writer,  "r"  of
		   reader,  "c"  of creating, "t" of truncating, "e" of no lock-
		   ing, and "f" of non-blocking lock.  The default mode is rele-
		   vant to "wc".  "opts" can contains "l" of large  option,  "d"
		   of  Deflate	option, "b" of BZIP2 option, and "t" of TCBS op-
		   tion.  "idx" specifies the column name of an  index	and  its
		   type     separated	 by    ":".	For    example,    "cas-
		   ket.tch#bnum=1000000#opts=ld" means	that  the  name  of  the
		   database  file  is  "casket.tch",  and  the	bucket number is
		   1000000, and the options are large and Deflate.

     The function `tcadbclose' is used in order to close  an  abstract	database
     object.

	    bool tcadbclose(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If successful, the return value is true, else, it is false.
		   Update  of a database is assured to be written when the data-
		   base is closed.  If a writer opens a database  but  does  not
		   close it appropriately, the database will be broken.

     The function `tcadbput' is used in order to store a record into an abstract
     database object.

	    bool  tcadbput(TCADB  *adb,  const	void *kbuf, int ksiz, const void
	    *vbuf, int vsiz);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in the database,  it  is
		   overwritten.

     The  function `tcadbput2' is used in order to store a string record into an
     abstract object.

	    bool tcadbput2(TCADB *adb, const char *kstr, const char *vstr);
		   `adb' specifies the abstract database object.
		   `kstr' specifies the string of the key.
		   `vstr' specifies the string of the value.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in the database,  it  is
		   overwritten.

     The  function `tcadbputkeep' is used in order to store a new record into an
     abstract database object.

	    bool tcadbputkeep(TCADB *adb, const void *kbuf, int ksiz, const void
	    *vbuf, int vsiz);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in  the  database,  this
		   function has no effect.

     The  function `tcadbputkeep2' is used in order to store a new string record
     into an abstract database object.

	    bool tcadbputkeep2(TCADB *adb, const char *kstr, const char *vstr);
		   `adb' specifies the abstract database object.
		   `kstr' specifies the string of the key.
		   `vstr' specifies the string of the value.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in  the  database,  this
		   function has no effect.

     The  function  `tcadbputcat' is used in order to concatenate a value at the
     end of the existing record in an abstract database object.

	    bool tcadbputcat(TCADB *adb, const void *kbuf, int ksiz, const  void
	    *vbuf, int vsiz);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.
		   If successful, the return value is true, else, it is false.
		   If there is no corresponding record, a new record is created.

     The  function `tcadbputcat2' is used in order to concatenate a string value
     at the end of the existing record in an abstract database object.

	    bool tcadbputcat2(TCADB *adb, const char *kstr, const char *vstr);
		   `adb' specifies the abstract database object.
		   `kstr' specifies the string of the key.
		   `vstr' specifies the string of the value.
		   If successful, the return value is true, else, it is false.
		   If there is no corresponding record, a new record is created.

     The function `tcadbout' is used in order to remove a record of an	abstract
     database object.

	    bool tcadbout(TCADB *adb, const void *kbuf, int ksiz);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   If successful, the return value is true, else, it is false.

     The  function  `tcadbout2' is used in order to remove a string record of an
     abstract database object.

	    bool tcadbout2(TCADB *adb, const char *kstr);
		   `adb' specifies the abstract database object.
		   `kstr' specifies the string of the key.
		   If successful, the return value is true, else, it is false.

     The function `tcadbget' is used in order to retrieve a  record  in  an  ab-
     stract database object.

	    void *tcadbget(TCADB *adb, const void *kbuf, int ksiz, int *sp);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   `sp'  specifies  the  pointer  to the variable into which the
		   size of the region of the return value is assigned.
		   If successful, the return value is the pointer to the  region
		   of the value of the corresponding record.  `NULL' is returned
		   if no record corresponds.
		   Because an additional zero code is appended at the end of the
		   region  of  the return value, the return value can be treated
		   as a character string.  Because  the  region  of  the  return
		   value  is  allocated with the `malloc' call, it should be re-
		   leased with the `free' call when it is no longer in use.

     The function `tcadbget2' is used in order to retrieve a string record in an
     abstract database object.

	    char *tcadbget2(TCADB *adb, const char *kstr);
		   `adb' specifies the abstract database object.
		   `kstr' specifies the string of the key.
		   If successful, the return value is the string of the value of
		   the corresponding record.  `NULL' is returned  if  no  record
		   corresponds.
		   Because  the region of the return value is allocated with the
		   `malloc' call, it should be released  with  the  `free'  call
		   when it is no longer in use.

     The function `tcadbvsiz' is used in order to get the size of the value of a
     record in an abstract database object.

	    int tcadbvsiz(TCADB *adb, const void *kbuf, int ksiz);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   If  successful,  the return value is the size of the value of
		   the corresponding record, else, it is -1.

     The function `tcadbvsiz2' is used in order to get the size of the value  of
     a string record in an abstract database object.

	    int tcadbvsiz2(TCADB *adb, const char *kstr);
		   `adb' specifies the abstract database object.
		   `kstr' specifies the string of the key.
		   If  successful,  the return value is the size of the value of
		   the corresponding record, else, it is -1.

     The function `tcadbiterinit' is used in order to initialize the iterator of
     an abstract database object.

	    bool tcadbiterinit(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If successful, the return value is true, else, it is false.
		   The iterator is used in order to  access  the  key  of  every
		   record stored in a database.

     The  function  `tcadbiternext'  is used in order to get the next key of the
     iterator of an abstract database object.

	    void *tcadbiternext(TCADB *adb, int *sp);
		   `adb' specifies the abstract database object.
		   `sp' specifies the pointer to the  variable	into  which  the
		   size of the region of the return value is assigned.
		   If  successful, the return value is the pointer to the region
		   of the next key, else, it is `NULL'.  `NULL' is returned when
		   no record is to be get out of the iterator.
		   Because an additional zero code is appended at the end of the
		   region of the return value, the return value can  be  treated
		   as  a  character  string.   Because	the region of the return
		   value is allocated with the `malloc' call, it should  be  re-
		   leased  with the `free' call when it is no longer in use.  It
		   is possible to access every record by  iteration  of  calling
		   this  function.   It  is  allowed to update or remove records
		   whose keys are fetched while the iteration.	However,  it  is
		   not	assured  if  updating the database is occurred while the
		   iteration.  Besides,  the  order  of  this  traversal  access
		   method  is  arbitrary, so it is not assured that the order of
		   storing matches the one of the traversal access.

     The function `tcadbiternext2' is used in order to get the next  key  string
     of the iterator of an abstract database object.

	    char *tcadbiternext2(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If  successful,  the  return  value is the string of the next
		   key, else, it is `NULL'.  `NULL' is returned when  no  record
		   is to be get out of the iterator.
		   Because  the region of the return value is allocated with the
		   `malloc' call, it should be released  with  the  `free'  call
		   when  it is no longer in use.  It is possible to access every
		   record by iteration of calling this function.  However, it is
		   not assured if updating the database is  occurred  while  the
		   iteration.	Besides,  the  order  of  this	traversal access
		   method is arbitrary, so it is not assured that the  order  of
		   storing matches the one of the traversal access.

     The  function  `tcadbfwmkeys' is used in order to get forward matching keys
     in an abstract database object.

	    TCLIST *tcadbfwmkeys(TCADB *adb, const void  *pbuf,  int  psiz,  int
	    max);
		   `adb' specifies the abstract database object.
		   `pbuf' specifies the pointer to the region of the prefix.
		   `psiz' specifies the size of the region of the prefix.
		   `max' specifies the maximum number of keys to be fetched.  If
		   it is negative, no limit is specified.
		   The	return value is a list object of the corresponding keys.
		   This function does never fail.  It returns an empty list even
		   if no key corresponds.
		   Because the object of the return value is  created  with  the
		   function  `tclistnew', it should be deleted with the function
		   `tclistdel' when it is no longer  in  use.	Note  that  this
		   function  may  be very slow because every key in the database
		   is scanned.

     The function `tcadbfwmkeys2' is used  in  order  to  get  forward	matching
     string keys in an abstract database object.

	    TCLIST *tcadbfwmkeys2(TCADB *adb, const char *pstr, int max);
		   `adb' specifies the abstract database object.
		   `pstr' specifies the string of the prefix.
		   `max' specifies the maximum number of keys to be fetched.  If
		   it is negative, no limit is specified.
		   The	return value is a list object of the corresponding keys.
		   This function does never fail.  It returns an empty list even
		   if no key corresponds.
		   Because the object of the return value is  created  with  the
		   function  `tclistnew', it should be deleted with the function
		   `tclistdel' when it is no longer  in  use.	Note  that  this
		   function  may  be very slow because every key in the database
		   is scanned.

     The function `tcadbaddint' is used in order to add an integer to  a  record
     in an abstract database object.

	    int tcadbaddint(TCADB *adb, const void *kbuf, int ksiz, int num);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   `num' specifies the additional value.
		   If successful, the return value is the summation value, else,
		   it is `INT_MIN'.
		   If  the  corresponding record exists, the value is treated as
		   an integer and is added to.	If no record corresponds, a  new
		   record of the additional value is stored.

     The  function  `tcadbadddouble'  is used in order to add a real number to a
     record in an abstract database object.

	    double tcadbadddouble(TCADB *adb, const void *kbuf, int ksiz, double
	    num);
		   `adb' specifies the abstract database object.
		   `kbuf' specifies the pointer to the region of the key.
		   `ksiz' specifies the size of the region of the key.
		   `num' specifies the additional value.
		   If successful, the return value is the summation value, else,
		   it is Not-a-Number.
		   If the corresponding record exists, the value is treated as a
		   real number and is added to.  If no record corresponds, a new
		   record of the additional value is stored.

     The function `tcadbsync' is used in order to synchronize  updated	contents
     of an abstract database object with the file and the device.

	    bool tcadbsync(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If successful, the return value is true, else, it is false.

     The function `tcadboptimize' is used in order to optimize the storage of an
     abstract database object.

	    bool tcadboptimize(TCADB *adb, const char *params);
		   `adb' specifies the abstract database object.
		   `params' specifies the string of the tuning parameters, which
		   works  as  with  the tuning of parameters the function `tcad-
		   bopen'.  If it is `NULL', it is not used.
		   If successful, the return value is true, else, it is false.
		   This function is useful to reduce the size  of  the	database
		   storage with data fragmentation by successive updating.

     The function `tcadbvanish' is used in order to remove all records of an ab-
     stract database object.

	    bool tcadbvanish(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If successful, the return value is true, else, it is false.

     The  function  `tcadbcopy' is used in order to copy the database file of an
     abstract database object.

	    bool tcadbcopy(TCADB *adb, const char *path);
		   `adb' specifies the abstract database object.
		   `path' specifies the path of the destination file.  If it be-
		   gins with `@', the trailing substring is executed as  a  com-
		   mand line.
		   If  successful,  the return value is true, else, it is false.
		   False is returned if the executed  command  returns	non-zero
		   code.
		   The	database file is assured to be kept synchronized and not
		   modified while the  copying	or  executing  operation  is  in
		   progress.   So,  this  function  is useful to create a backup
		   file of the database file.

     The function `tcadbtranbegin' is used in order to begin the transaction  of
     an abstract database object.

	    bool tcadbtranbegin(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If successful, the return value is true, else, it is false.
		   The database is locked by the thread while the transaction so
		   that  only  one  transaction can be activated with a database
		   object at the same time.  Thus,  the  serializable  isolation
		   level  is assumed if every database operation is performed in
		   the transaction.  All updated regions are kept  track  of  by
		   write  ahead  logging while the transaction.  If the database
		   is closed during transaction, the transaction is aborted  im-
		   plicitly.

     The  function  `tcadbtrancommit' is used in order to commit the transaction
     of an abstract database object.

	    bool tcadbtrancommit(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If successful, the return value is true, else, it is false.
		   Update in the transaction is fixed when it is committed  suc-
		   cessfully.

     The  function `tcadbtranabort' is used in order to abort the transaction of
     an abstract database object.

	    bool tcadbtranabort(TCADB *adb);
		   `adb' specifies the abstract database object.
		   If successful, the return value is true, else, it is false.
		   Update in the transaction is discarded when	it  is	aborted.
		   The	state  of  the database is rollbacked to before transac-
		   tion.

     The function `tcadbpath' is used in order to get the file path  of  an  ab-
     stract database object.

	    const char *tcadbpath(TCADB *adb);
		   `adb' specifies the abstract database object.
		   The	return	value is the path of the database file or `NULL'
		   if the object does not connect to any database.   "*"  stands
		   for	on-memory  hash database.  "+" stands for on-memory tree
		   database.

     The function `tcadbrnum' is used in order to get the number of  records  of
     an abstract database object.

	    uint64_t tcadbrnum(TCADB *adb);
		   `adb' specifies the abstract database object.
		   The	return value is the number of records or 0 if the object
		   does not connect to any database instance.

     The function `tcadbsize' is used in order to get the size of  the	database
     of an abstract database object.

	    uint64_t tcadbsize(TCADB *adb);
		   `adb' specifies the abstract database object.
		   The	return value is the size of the database or 0 if the ob-
		   ject does not connect to any database instance.

     The function `tcadbmisc' is used in order to call a versatile function  for
     miscellaneous operations of an abstract database object.

	    TCLIST *tcadbmisc(TCADB *adb, const char *name, const TCLIST *args);
		   `adb' specifies the abstract database object.
		   `name'  specifies  the  name  of the function.  All databases
		   support "put", "out", "get", "putlist", "outlist", "getlist",
		   and "getpart".  "put" is to store a record.	 It  receives  a
		   key	and a value, and returns an empty list.  "out" is to re-
		   move a record.  It receives a key, and returns an empty list.
		   "get" is to retrieve a record.  It receives a  key,	and  re-
		   turns  a  list of the values.  "putlist" is to store records.
		   It receives keys and values one after the other, and  returns
		   an  empty list.  "outlist" is to remove records.  It receives
		   keys, and returns an empty list.  "getlist"	is  to	retrieve
		   records.   It  receives  keys, and returns keys and values of
		   corresponding records one after the other.  "getpart"  is  to
		   retrieve  the  partial value of a record.  It receives a key,
		   the offset of the region, and the length of the region.
		   `args' specifies a list object containing arguments.
		   If successful, the return value is a list object of	the  re-
		   sult.  `NULL' is returned on failure.
		   Because  the  object  of the return value is created with the
		   function `tclistnew', it should be deleted with the	function
		   `tclistdel' when it is no longer in use.

SEE ALSO
     tcatest(1), tcamttest(1), tcamgr(1), tokyocabinet(3)

Man Page			   2012-08-18				TCADB(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tcadb&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help