csv文件格式键值对形式存储吗_存储与检索 -- 为数据库提供动力的数据结构(哈希索引)...

让我们从键值数据的索引开始。这不是你可以索引的唯一类型的数据,但它非常常见,而且它是构建更复杂索引的一个有用的模块。

键值存储与大多数编程语言中可以找到的dictionary类型非常相似,通常是作为散列表实现的。在许多算法教科书中都描述了哈希映射,因此我们不会详细讨论它们是如何工作的。既然我们已经有了内存数据结构的哈希映射,为什么不使用它们来索引磁盘上的数据呢?

假设我们的数据存储只包括追加记录到一个文件,就像前面的例子一样。然后,最简单的索引策略是:保存一个内存中的散列映射,其中每个键都映射到数据文件中的一个字节偏移位置,这个位置的值如图3-1所示可以被找到。当你在文件中添加新的键值对时,您还将更新散列映射以反映您刚刚编写的数据的偏移量(这既用于插入新键,也用于更新现有的键)。当您想查找一个值时,使用散列映射来查找数据文件中的偏移量,查找该位置,并读取该值。

e9227b21df8db40cd384b0d003bb7be3.png


图3-1 以类csv的格式存储键值对,并使用内存散列映射进行索引。

这听起来可能过于简单,但却是可行的方法。实际上,这就是Bitcask (Riak的默认存储引擎)所做的事情。Bitcask提供高性能的读写,根据要求,所有的键都可以放在可用的RAM中,因为哈希映射被完全保存在内存中。这些值可以使用比可用内存更多的空间,因为它们可以从磁盘上加载。如果数据文件的那一部分已经在文件系统缓存中,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值