曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 9491|回复: 0
打印 上一主题 下一主题

[数据库] 数据库之dbm

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-4-25 14:59:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
dbm是个轻量级的数据库。它可以通过索引存储多种尺寸的数据结构,并且也可以通过索引取回所存储的数据结构--也可以只需要简单的对数据库进行连续的扫描。
dmb 比较适合用在对数据访问比较频繁而更新比较少的情况,因为它查询及取回数据比较快,而在其中建立数据条目则比较慢。

dmb 有几种类型,比如最初始的旧版本 dbm,“新的” 的 dbm ( 也叫 ndbm ),还有 GNU 版本 gdbm。GNU 的版本可以仿真旧版本的 dbm 和 ndbm 接口,但只是仿真,实际上底层的实现还是有很大的不同。不同的 Linux 发行版带了不同版本的 dbm 库,但比较常见带的是 gdbm 库,因为它可以对其它两种接口类型进行方针。

这里介绍 ndbm 接口,因为一来它是 X/OPEN 标准化的一部分,二来是因为它比其 gdbm 来显得相对简单些,但这里假设机子上已经装好了 gdbm。关于 gdbm 的源码及想光信息访问:http://www.gnu.org/software/gdbm/gdbm.html

在使用 ndbm 下编译程序( 程序中包含 ndbm.h 头文件,有些 Linux 发行版可能无法采用以下的编译方式而且包含的头文件也不一样如要包含 gdbm-ndbm.h ):
 gcc -g dbm1.c -o dbm1.exe -lgdbm_compat -lgdbm
上面,-lgdbm-compat  是因为用 ndbm 所以采取了兼容模式;而因为使用的仍然是 gdbm 库,所以还要使用 -lgdbm 选项。

操作 dbm 数据库主要有两个方面,一是要存储的数据块;二是要存储的索引。

数据块是自己定义的一堆数据,可能用结构体来表示;索引是按照一定规律构造的一个“关键字”,这个规律可以自行定义。

操作要存储的数据块和索引都需要用到共同一个结构 datum。在这个结构里,主要有两个成员:
void *dptr;
size_t dsize

dptr 指针用来指向要存储的数据块或要存储的索引;
dsize 参数用来表明要存储数据块或要存储的索引的大小。

关于 dbm 函数说明举例:http://www.groad.net/bbs/read.php?tid=737
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 01:18 , Processed in 0.063996 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表