至于BDB是什么? 我就不多解释了。
今天想说说关于BDB的多级索引的创建。
在BDB中提供四种算法接口, 哈希(hash) 二叉平衡树(BTREE) 队列(QUEUE) 有序记录(RECNO)
至于哪种数据结构常用,不好说。 看具体业务需求!
QUEUE/RECNO 数据结构不支持用户层索引,BDB底层提供常数型索引,对用户层来说没有实际的意义
通常用来当作栈等数据结构来用。注意的是QUEUE是一种消耗性数据结构, 通过DB句柄读取数据后然后删除刚读取的数据。
今天我要讲的是hash/btree这两种数据结构
BDB中提供一个 secondary的接口来做多级索引,但是他给的例子以及网上给的例子本人觉得不是十分的好。更确切的说不是十分的恰当。我今天想说说怎么创建多级索引,以及BDB提供的secondary的接口到底怎么用。
比如说我们想创建一个表 TABLE_USER
表的字段列表如下
KEY_1, KEY_2, KEY_3, KEY_4, FIELD_1, FIELD_2, ... ,FIELDn
如上述,表中有4个索引关键字,可是我们知道BDB中只支持1个关键字, 在BDB中提供的资料一个网上的资料中给的方案是把索引关键字KEY_1放在BDB提供的关键字中,剩下的所有关键字全部放在记录段中。但是这样做就有个问题, BDB的primary表的索引关键字必须是唯一的,如果再给KEY_1添加一个唯一性索引号,这样肯定不行,查询起来也很不方便。一般有人认为BDB提供的这个接口是用来关联2个表的,其实不是。为了满足BDB表primary的关键字必须唯一性