设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>计算机毕业设计 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
基于C语言的B+树BulkLoading多核并行设计 课程论文+源码及数据
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

B+树 BulkLoading 多核并行设计

目录

数据库系统课程设计报告

B+树 BulkLoading 多核并行设计

Ⅰ . B+树 BulkLoading 过程理解

1.1 BulkLoading 的基本思想

1.2 结合实现理解 BulkLoading

1.3 BulkLoading 的利弊

Ⅱ . 并行设计思路

2.1 基本想法

Ⅲ . 算法流程图

4.1 连续分配块

4.2 连续写磁盘

Ⅴ . 关键代码描述

5.2

Ⅵ . 实验结果分析

6.0 并行和性能调优的代码说明

6.0.3 如何测试代码

6.1 并行实验结果代码及分析

6.1.1 影响因素

6.1.2 实验方法

测试代码

6.2 性能调优和创新优化实验结果及分析

6.2.1 性能调优的原因

6.2.2 数据量的大小

6.2.3 线程数

6.2.4 Buffer大小

Ⅰ . B+树 BulkLoading 过程理解

1.1 BulkLoading 的基本思想

在理解 BulkLoading 过程之前,要先理解 B+ 树的结构特性:首先,B+ 树只在叶子节点中保存数据,非叶子节点只保存索引,叶子结点的数据又根据关键字从小到大顺序排序。

我们单看叶子节点一层,就可以发现起始它和一个有序的数据数组在形状上是一致的。这意味着如 果我们的现有数据是有序排列的,我们就可以直接从小到大“铺”到叶子节点上。再加上B+树的子节点的  个数有限制,故我们可以直接估算出要多少个叶子节点,多少个相邻的叶子节点有一个共同的父索引节  点,把上述过程同样运用到索引节点上,我们就可以自底向上地构建出一棵完整的B+树。

得到一个BulkLoading过程的一个完整描述:先从底层叶子节点构建,从左往右按顺序构建一个双  向链表;从下往上,一层层构建索引节点,每一层也是从左往右构建索引节点。

1.2 结合实现理解 BulkLoading

讨论 BulkLoading 的实现细节:节点的结构、磁盘文件的数据对应 。

叶子节点:相邻节点之间有互相指向的指针,叶子层构成了一个双向链表。每个节点有两个数组, 一个储存Key,一个储存Value,一个Key对应有16个Value,这里的 Value  就是实际的数据,也就是数据项(Data Entry)。

索引节点:每一层的相邻的索引节点也存在双向指针,索引节点都是根据下一层的子节点生成的, 每个索引节点有两个数组,一个存储Key,一个存储指向子节点的指针,二者数量相等。一个键值

Key和一个指针就构成了一个索引项(Index Entry)。

与磁盘文件的关系:磁盘文件被划分为一个个块(Block),每一个节点就对应一个块,块通过块 号区分,表示节点存储到文件的区域编号。这样,索引项中所谓的指针,就可以用块号来表示。

这样,BulkLoading  的过程就包含:在内存中组织叶子节点和索引节点,组织的方式就是创建与块一样大的缓冲区,将数据项、索引项拷贝进去,然后再写入到磁盘块里。(区分这些过程有利于并行实 现)

因为块号的分配是连续的,块的大小是固定的。在 BulkLoading  过程中,我们只需要记录下一层中第一个块号和最后一个块号,就可以直接算出上一层节点的所有子节点的块号,无需访问子节点。

在B+树中一个节点的索引值可以设置为第一个项的键值,因为 BulkLoading 是自底向上的构造过程,节点的索引值可以直接给出,且过程中不会改变,不需要B+树插入删除节点时的那样进行动态调    整。在设计上采用 On-the-fly  的策略,在一层一层循环构建的过程中,线程函数每次都保存一层的键值并返回,键值数组再用于构建上一层节点,无需进行IO访问。

1.3 BulkLoading 的利弊

相比于通过插入节点构造B+树,BulkLoding充分利用了数据有序的特性,让每一个节点构造过程的  复杂度都为O(1),构造过程中不存在节点的分叉、合并等调整,生成B+树的过程非常快。

通过BulkLoading构造B+树也可能存在潜在的问题:因为每一个节点从左到右都是尽可能填满的,  当需要插入新节点时,B+树结构的变动可能会非常大,会产生较大的时间开销。

或许我们可以加入一个填充因子来控制BulkLoading每次为一个叶子节点填出的数据项的个数,让  叶子节点的数据项不是满的,这样可以减弱插入节点对B+树结构造成的影响。
















  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
基于Python的在线自主考试系 基于腾讯云的个人知识库管理系统 基于Android的酒店预定系统
基于matlab变频器控制交流电 基于微信小程序的家校联动平台管理 基于时频分析与自适应滤波技术的多
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!