DBM简介 dbm(database manager) 是使用本地文件来存储数据的数据库,基于Key -Value对数据进行存储、读取,且有些dbm的实现( berkeley db)还支持BTree索引。dbm效率相对较高,甚至在某些情况下比关
DBM简介dbm(database manager) 是使用本地文件来存储数据的数据库,基于Key -Value对数据进行存储、读取,且有些dbm的实现( berkeley db)还支持BTree索引。dbm效率相对较高,甚至在某些情况下比关系型数据库系统的速度还更高,因为几乎所有dbm都支持比BTree效率要高的hash索引方式。 有多种dbm实现:标准dbm、ndbm( new dbm)、gdbm(GNU DBM)、sdbm( small dbm)、Berkeley db等, gdbm是对ndbm的扩展,它支持缓存功能。 DBM数据存储原理
Ruby使用gdbmRuby中要使用gdbm,它依赖于gdbm扩展库和头文件,所以需先安装:
使用类方法GDBM.new()或者GDBM.open()可打开gdbm来操作db文件。
查看其文件内容:
其中…表示的是乱码部分。 注意其大小为8K,且数据区默认在db文件的尾部,包含了key和value。 从db中检索数据:
new()、open()new()或open():open()可给定语句块,语句块退出时自动关闭IO流,未给定语句块时,open()等价于new()。
当指定要操作的db文件不存在时,会创建文件,可指定创建文件时的权限。此外,flag参数接受如下值:
在未给定任何选项时,即默认情况下,总是先尝试以WRCREAT的方式打开,即以writer打开且文件不存在时创建。但如果打开失败(比如另一个进程已经打开且还未关闭),则尝试使用reader方式打开。 reader和reader之间互相兼容,writer和writer之间以及writer和reader之间互斥。所以,在某一时刻,允许同时有多个reader,但只能有一个writer。 当打开gdbm实例后,它可以按照操作hash结构的方式去操作db,此外,gdbm已经mix-in Enumerable模块,所以可以直接使用该模块中的一些方法,比如find、grep、map等。 gdbm方法
|
2022-09-21