实现高并发的Btree结构从内存到磁盘的映射(草稿,未完成)
一、问题介绍
对于一个数据库管理系统来说, BTree是它实现存储管理的基础.
实现一个原理简洁,并发性能好的BTree,是实现数据较高性能的基本要求.
所以我们用最新的,又成熟BTree结构.
而实际的论文通常是内寸结构形式来描述的。理解它,并较高效实现从
内存到磁盘的映射对没有经验的人来说是个不小的挑战.
二、普通对象和有内存对象的区别
1.Java提供的工具
java提供对象序列化工具,它实现java对象的序列化大磁盘,然后可以从磁盘中反序列化出来。
要实现只要有以下一种接口
该接口是一个无方法的接口, 当一个Class实现该接口时,它的对象可以直接被writeObjet(),
而readObject()来实现反序列化(有意思的是:反序列化过程中,它不会调用Class的构造方法).
它有几个缺点,就是我们不能控制那个Field不用序列化(这个可以用transient部分解决),
不清楚它对象的各个Field存在什么位置, 本身对象占多少字节。
所以它一般用于,不在乎对象大小的情况,比如状态对象,和对象的网络传输
该接口要实现两方法 writeExternal(ObjectOutput out)和readExternal(ObjectInput in)(它会调用调用Class的缺省构造方法)
2.直接对byte array存储操作
这是最原始,也是直接的控制Btree对象的序列化,和反序列化。
它是直接要把存储的对象,转换成byte array, 然后把它写入磁盘,反序列花时也是先读出byte array, 然后把她转化成对象
三、我的BTree的实现
由于初次写BTree的映射实现, 我首先采用直接byte array 操作, 然后进行refactor,希望有好的结构,然后想利用java Externalizable 接口
Btree的磁盘映射,当然是以Block(1024 * 2^n bytes) 为单位,每个Block存储Btree的一个node
1. 直接对byte array存储操作的实现
实现大致分为一下几步
-
- 定义Btree Header 在block存储的结构
- 定义每个Node在Block上的存储
- 建立Btree class
先讲讲Btree class的结构
同内寸对象不同的, 除了class 的构造涵数,应该包括以下方法
-
- createBtree() 创建一个新的Btree
- opneBtree() 从磁盘中读去Btree
- writeBtree() 把Btree写回磁盘
分享到:
相关推荐
基于KD-Tree实现的近似查询处理AQP问题python源码(课程大作业).zip基于KD-Tree实现的近似查询处理AQP问题python源码(课程大作业).zip基于KD-Tree实现的近似查询处理AQP问题python源码(课程大作业).zip基于KD-Tree...
例程可正常使用,非常的简单,基本上学过几天代码的人都能够正常使用。采用纯js编写,不复杂
勾选右侧的已选资源,效果同左侧一样; 2、勾选全选,则资源全部添加到右侧,左侧的则显示为空 ...4、后台给到的数据是:所有的资源(多维数组)和已分配的资源(一维数组,包含(半勾选)父级数据)
kdtree 实现KNN search,包含测试数据 测试了很多次了 希望对大家有用
自己手写一个tree实例,tree实现其实很简单,主要先弄清楚html如何显示tree,可以先查看html元素,会发现tree的每个节点都是一个元素,很有规律;然后使用javascript操作dom,例子中有些使用javascript的面向对象,...
今天小编就为大家分享一篇layui-tree实现Ajax异步请求后动态添加节点的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
alvtree实现库存控制报表,主节点是成本物料,展开节点为组件物料,要求添加完全展开和合并功能源代码,方便查询库存明细
平衡二叉树实现 平衡二叉树的实质就是保持树“尽量胖,尽量矮
Go中的MerkleizedIAVL+Tree实现.zip
用Huffman Tree实现了一个文件的压缩与解压程序 说明 压缩后文件类型为.huf 格式: HEAD文件+Huffman压缩后的内容 解压后在原文件名前加上"Re" GraphCPro 基于命令行的景区景点路径规划系统 说明 寻路方式为DFS,...
机器学习算法 机器学习算法之决策树DecisionTree实现
基于Qt和C++的B-Tree实现,优秀数据结构程序设计,新手必看! 基于Qt和C++的B-Tree实现,优秀数据结构程序设计,新手必看! 基于Qt和C++的B-Tree实现,优秀数据结构程序设计,新手必看! 基于Qt和C++的B-Tree实现,...
使用java实现B+ tree, 可以编译运行通过。
kd-tree的简约实现。该实现既可以通过MEX调用在MATLAB内部使用,也可以直接从C / C ++程序中作为独立工具使用。网站上的图像已使用“ fulltest.m”创建。 此实现提供以下功能: -kdtree_build:kd树构造O -kdtree_...
SelectTree是组合element里面的select和tree两者实现的,可以实现多选,单选,同时选中以后关闭下拉框等操作
这里面是kd_tree的实现算法,看完对kd_tree将会有更深的了解
React+Antd+tree实现树多选功能(选中项受控) https://blog.csdn.net/yalywq/article/details/136056430?spm=1001.2014.3001.5501
python3.2实现FP-TREE挖掘算法,可以显示每一步FP树的图片
本文实例讲述了asp.net使用DataGridTree实现下拉树的方法。分享给大家供大家参考。具体实现方法如下: 下拉树实现原理:输出json到客户端,客户端实现动态加载,中间不会和服务端交互。数据量支持上经测试几千还是...
这是网上整理的2维、3维的Kd树实现源代码,对kd树的开发很有帮助。