![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
存储系统
百恼Z
这个作者很懒,什么都没留下…
展开
-
存储系统实现-构建自己的存储系统(一)
一直在断断续续的看Lucene源码,怎么也理不清其中千丝万缕的联系,遂想自己边写边理解。在写的过程中更加理解索引的意义,以及在开发过程中如何利用索引加快检索,如何利用跳跃表来实现快速查找。如何利用缓存来实现减少磁盘IO的开销。 这里先从整个流程说起,这里简单的模拟了一下数据存储和查找的过程。在写这个的过程中基本可以深刻理解索引的真实意义。 存储数据1.原创 2013-05-16 15:36:34 · 4237 阅读 · 0 评论 -
存储系统实现-数据文件格式
在第一篇中讲到了整个索引文件的实现方式与检索方式的实现,这一篇中讲到我实现的各个文件的结构。 存储管理文件:这个文件的作用主要是对数据文件进行分块管理,管理数据文件块是否使用,还有相应的偏移位置,申请数据文件块都需要从这里进行申请。对于文件的回收也相应的改这个文件的状态。下面画的是该文件的结构 索引文原创 2013-05-19 17:21:29 · 3101 阅读 · 0 评论 -
存储系统实现-如何删除数据
前一篇中简单的写了下关于索引的删除,这一篇中完整的介绍整个数据删除步骤。 1.根据ID查找索引数据(主要是获取具体数据地址,有点像数据库中的根据索引进行回表) 2.根据索引的数据偏移查找具体的空间ID(在第二篇中介绍了整个系统的存储结构,存储空间是分块的,一个数据对象可能存储在一个“逻辑空间”中,也有可能存储在多个存储空间中,取决于对象的大小)。原创 2013-06-02 16:52:36 · 2323 阅读 · 0 评论 -
存储系统实现-数据删除之索引的删除
在前几篇中一直没有提到存储删除功能。在这一篇中着重讲一下存储的删除。 可以分为两块: 1. 索引的删除;2.数据的删除。 这一节主要讲一讲索引删除,因为数据的删除会相对复杂一些。 索引的删除其实包含索引ID的复用,在存储系统中ID主键是自增的,这里主要是为了保证简单的有序插入和性能考虑,所以并未支持用户传入ID进行插入。既然有添加必然会有删除功原创 2013-05-31 09:04:52 · 2309 阅读 · 0 评论 -
存储系统实现-跳跃表实现索引检索
这一篇是我所实现的一个通过跳跃表的方式来实现对索引的检索。大概看了下跳跃表的基本思想,遂用自己的程序来实现这样一种检索方式。先用一张流程图来阐述我检索的步骤。顾名思义“跳跃表”就是利用跳跃读取的优势,而不用遍历整个索引表造成性能的损失。读索引整体流程图: 这里举一个例子具体的说一下检索的步骤,这里说一种检索到的情况,这里假设整个文件表10万条,id是连续自增,检索id=原创 2013-05-26 11:43:55 · 3813 阅读 · 0 评论