Berkeley DB Windows应用

来源:互联网 发布:淘宝网2016新版本电脑 编辑:程序博客网 时间:2024/06/05 01:01

    最近有涉及到个人数据本地安全性保存的问题,Google大量数据之后发现Berkeley DB,一个小巧的嵌入式数据库。但是基本的文章都是这对Linux的,通过自己的使用,总结在Windows上的应用。

    首先到http://www.oracle.com网站下载DB的源码,可以下带驱动的,可不带驱动的(含NC字样)。你可以根据你的应用生成各种类型的dll,比如生成Windows的,就选择build_windows,机器是64位机的,就选AMD_64,编译,生成lib或dll。

      数据库句柄结构DB:包含了若干描述数据库属性的参数,如数据库访问方法类型、逻辑页面大小、数据库名称等;同时,DB结构中包含了大量的数据库处理函数指针,大多数形式为 (*dosomething)(DB *, arg1, arg2, …)。其中最重要的有open,close,put,get等函数。

数据库记录结构DBT:DB中的记录由关键字和数据构成,关键字和数据都用结构DBT表示。实际上完全可以把关键字看成特殊的数据。结构中最重要的两个字段是 void * data和u_int32_t size,分别对应数据本身和数据的长度。

数据库游标结构DBC:游标(cursor)是数据库应用中常见概念,其本质上就是一个关于特定记录的遍历器。注意到DB支持多重记录(duplicate records),即多条记录有相同关键字,在对多重记录的处理中,使用游标是最容易的方式。    

     将库文件放到工程目录下,在工程中添加附加库路径。接口基本使用如下:

 

/**     DB *db;
/**     db_create(&db, NULL, 0);   生成
/**     db->open(db, NULL, fileName,  NULL, DB_HASH, DB_CREATE, 0600) != 0);  打开

/**     DBT key, data;            输入数据定义
/**     memset(&key, 0, sizeof(key));   置空
/**     memset(&data, 0, sizeof(data));
/**     key.data = key;      输入的key
/**     key.size = sizeof(key);
/**     data.data = data;    输入的data
/**     data.size = sizeof(data);
/**     db->put(db, NULL, &key, &data, 0);     输入数据

/**     db->get(db, NULL, &key, &data, 0);      读取数据

/**     db->close(db, 0);           关闭数据库

 

    其中DBT的key和data都可以是用户自定义的类型,每个操作都会有返回值,操作成功与否可以根据返回值进行判断。

    Berkeley DB并不适合所有的应用,因为简单,专一所以高效。
    嵌入式数据库,的“嵌入”是指它内嵌在程序中,而不是说他只应用在嵌入式系统上。它的特点很适合应用于嵌入式系统上。当然在我们的pc机集群或大型服务器上,也可以灵活的配置,完成更艰巨的任务。

    它适合于管理海量的,简单的数据。Google用Berkeley DB HA (High Availability) 来管理他们的帐户信息. Motorola在他的无线产品中用Berkeley DB跟踪移动单元。hp,microsoft,Sun Microsystems...等也都是它的大客户。它不能完全取代关系数据库,但在某些方面,它却有他们望尘莫及的高效性。