- 主题:请问一个数据库索引的问题 (转载)
不同的key没问题啊。说的是同一个key下有多个值。
【 在 ylh0315 的大作中提到: 】
: 理论上可以再挂B+树,按不同的key排序。
--
FROM 123.112.135.*
我的需要是查找的时候把同一个key的多个值一下都读出来。这样的话,第二层树其实有点浪费,因为这一层本不需要查找。
【 在 ylh0315 的大作中提到: 】
: 对。第一层树是一个key,这个key相同了,在用下一个key做第二层树。
--
FROM 123.112.135.*
是的,链表可以。
【 在 ylh0315 的大作中提到: 】
: 那就链表呗。
--
FROM 111.196.134.*
这种我想过,但是b+树的第二级表怎么表示?
首先通过第一级b+树找到这个key的节点。它指向另一个地方。这个地方需要存一些同是这个key的值。关键就是这个值的数量不是固定的。需要在磁盘上给值也分配一种块,比如专门存值的块 100个字节。块还需要链接起来,因为一个块可能不够。。。。
是这个思路?
【 在 poggy 的大作中提到: 】
: 所谓二层不就是secondary db吗, 也就是次索引。
: berkeley db里面, 次级索引就是一个二级表而已, 至于浪不浪费也得看需求吧, 即便现在没需求,
: 也得要考虑以后会不会扩展。
: ...................
--
FROM 111.196.134.*
不是这样的。b+树的前提之一就是key唯一。
【 在 poggy 的大作中提到: 】
: 我觉得, B+树, 相同的值, 并不影响排序, 并没有理由合并到一个节点里面, 索引也是按照游标找到第一个点, 然后往下访问就行了, 无论是相同值还是要求范围值, 都是依条件按序访问的,并没有区别。
--
FROM 111.196.134.*
我也想知道有什么办法。搜了一圈。有说用overflow page。但没说怎么弄。提到了会浪费空间。想必是用b+树的page来存重复键值。
【 在 poggy 的大作中提到: 】
: 哦, 那看来我的印象模糊了, 因为我记得berkeley的BTree也是支持主键重复的记录的。
: hash结构的表, 通过拉链实现, 不知道berkeley db Btree里面做的什么特殊处理。
--
FROM 111.196.134.*
不是使用。我想自己试试
【 在 poggy 的大作中提到: 】
:
: 我不太明白, 你的需求, 如果只是使用, 很简单啊, 这些现成的kv数据库, 使用很简单,
: 没有什么你需要不需要的问题, 如果是python, 就是装个库, 10行二十行调用代码就解决了。
: ...................
--
FROM 114.246.237.*
是有办法,但我找了很多地方,都没说清楚。大致是相对于加一个链表...
【 在 ylh1969 的大作中提到: 】
: b树可以设置可重复
--
FROM 111.196.69.*
前段时间查了一下。最后没弄。决定随后再搞这个问题。
【 在 ylh1969 的大作中提到: 】
: 大致如此。
--
FROM 111.196.69.*