[ 用户 chunhui 在转载时对文章内容进行了编辑 ]
发信人: chunhui (北瓜), 信区: Programming
标 题: 请问一个数据库索引的问题
发信站: 水木社区 (Thu May 30 17:24:43 2024), 站内
比如这种情况:
记录写入了一个文件。索引写入另一个文件。记录的key唯一。这时候,索引可以是一个树,查询到的结果对应一个唯一的key(和记录的位置)。
但是有这种情况:
记录有多个。key有一个。安装上面的思路,那索引树的结果就需要指向多个记录的位置。
这种情况如果在内存里还好处理。多个位置也就是一个动态数组或者链表。来新的就申请空间即可。但是索引是存在文件中的话,就非常难办。
想问一下,这种情况在数据库里应该是一个常见的模式,有什么标准常规的办法来处理这种情况呢?
b+树我看书上也没有提到重复键值的问题。即便可以插入重复键值,但是查找的时候还有一个要求,就是要定位到第一个值,然后遍历得到所有的值。
当然,我不一定非要用b+树解决重复键值的问题。其他办法也可以。也可以b+树定位到值表,这个值表保持多个键值。但是这个保存多个值的表也会面临在一纬的文件空间上如何动态增长多个键值的问题。而且我想在写入的时候不用读写磁盘。写完之后批量一次写入磁盘。如果允许在写入的时候读写磁盘,就没这么麻烦了。
感觉这应该是数据库中很常见的问题,请问有没有相关的资料推荐?多谢。
--
修改:chunhui FROM 125.33.237.*
FROM 103.90.179.*