管理我的数据 GDBM

前言: GDBM(GNU database manager)是一套简单的资料管理程序。最新版本是gdbm-1.10,在大部分的UNIX和Linux系统中已经默认提供,如果没有提供,也可以到官方主页下载来安装。如果想在windows下使用GDBM,目前有MinGW和cygwin,不过由于它们都需要一些复杂的支持,而我只是想单纯的使用GDBM,所以我对gdbm-1.8.3做了windows port(windows7 64bits),不过那是以后的话题,和这篇文章关系不大!

  Author       : He YiJun  (storysnail<at>gmail.com QQ:363559089)   Develop Team : 7fane Team  Editor       : Yang QiuXi   Art Designer : He YiJun   License      : 7fane Team  License 1.0   Last Update  : 2013-01-09

========DBM数据库简介========

       一般的linux发行版中都会自带了一个符合X/Open技术规范的DBM数据库,这个数据库适合存储相对比较静态的索引化数据。有些人认为DBM根本算不上是个数据库,顶多算是个索引化的文件存储系统,事实也确实如此。DBM原来被称为 DB,最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现,它的第一个发行版出现在1991年,当时还包含了B+树数据访问算法。在1992年,BSD UNIX-4.4发行版中包含了DB1.85版。大家基本上认为这是DB的第一个正式版。在1996年中期,开源软件公司Sleepycat成立 (),推出了一个名为”The Berkley Database”的开放源代码的产品并提供商业支持。从这以后,DB得到了广泛的应用,并且出现了很多种分支,例如GDBM。2005年2月15日,甲骨文公司(Oracle Corporation)收购了开源软件公司Sleepycat,并将The Berkley Database数据库添加到了Oracle嵌入式数据库产品线中。

    GDBM是由GNU()实现的DBM数据库,其特点是简单、小巧、可靠、高性能,并且已经被移植到了windows平台( /releases/)。GDBM数据库包含若干条记录,每一个记录由关键字和数据记录(KEY/VALUE)构成。保存在GDBM数据库中的每一个记录都必须有一个独一无二的关键字,数据可以是简单的数据类型,虚拟主机,也可以是复杂的数据类型,例如C语言中的结构。技术规范里允许具体实现时把关键字和数据的最大长度限制在1024个字节,但这个限制通常没有什么意义,因为具体实现出来的东西往往比规范更灵活。

========GDBM的数据类型========

    GDBM在头文件gdbm.h中定义了两个新的类型:GDBM_FILE和datum.

typedef struct {int dummy[10];} *GDBM_FILE;{char *dptr;int dsize;} datum;

    GDBM_FILE类型指向打开的数据库文件。datum是用typedef语句定义的类型,在使用GDBM数据库时,如果想引用一个数据记录,必须先声明一个datum类型的结构,然后让参数dptr指向数据库里数据记录的起始点,把数据记录的长度放在dsize参数里。

    下面是错误代码,指出了出错类型,通过gdbm_strerr()函数可以得到详细的出错信息。

    0   GDBM_NO_ERROR                 No error     1    GDBM_MALLOC_ERROR            Malloc error    2    GDBM_BLOCK_SIZE_ERROR        Block size error    3    GDBM_FILE_OPEN_ERROR        File open error    4    GDBM_FILE_WRITE_ERROR        File write error    5    GDBM_FILE_SEEK_ERROR        File seek error    6    GDBM_FILE_READ_ERROR        File read error    7    GDBM_BAD_MAGIC_NUMBER        Bad magic number    8    GDBM_EMPTY_DATABASE            Empty database    9    GDBM_CANT_BE_READER            Can’t be reader    10    GDBM_CANT_BE_WRITER            Can’t be writer    11    GDBM_READER_CANT_DELETE        Reader can’t delete    12    GDBM_READER_CANT_STORE        Reader can’t store    13    GDBM_READER_CANT_REORGANIZE    Reader can’t reorganize    14    GDBM_UNKNOWN_UPDATE            Unknown update    15    GDBM_ITEM_NOT_FOUND            Item not found    16    GDBM_REORGANIZE_FAILED        Reorganize failed    17    GDBM_CANNOT_REPLACE            Cannot replace    18    GDBM_ILLEGAL_DATA            Illegal data    19    GDBM_OPT_ALREADY_SET        Option already set    20    GDBM_OPT_ILLEGAL            Illegal option

========GDBM数据库的访问函数========

  1:数据库的创建与打开     创建和打开数据库使用gdbm_open()函数,它返回一个GDBM_FILE类型的指针,指向打开的数据库文件。如果打开失败,则返回NULL。

GDBM_FILE gdbm_open(char *name,int block_size,int read_write,int mode,void (*fatal_func) ())

    参数简介:

都可以…孔子的,老子的. 孙子的…都可以

管理我的数据 GDBM

相关文章:

你感兴趣的文章:

标签云: