林子雨老师团队暑假第五次小组讨论会会议纪要

数据库实验室林子雨老师团队暑假第五次小组讨论会会议纪要

会议时间:2012年08月17日14时30分到18时00分

会议地点:厦门大学海韵园科研二号楼303室

与会者:林子雨、赖明星、刘颖杰、殷耀明、韩静

会议纪要撰写:赖明星

会议内容:

厦门大学计算机系数据库实验室林子雨老师小组第五次小组会议如期召开,会议首先由林子雨老师对数据库领域前沿知识进行补充、介绍,这次介绍的主题是《闪存扮演的不同角色》,随后由刘颖杰同学作题为《tank代码详解及java的io编程规范》的学习汇报,汇报详细介绍tank代码架构,然后通过简易记事本代码讲解java的io编程规范,最后由赖明星同学作题为《An efficient index buffer management scheme for implementing a B-tree on NAND flash memory》的论文阅读报告,本次报告共持续了三个半小时,下面是详细内容。

  • 林子雨老师作题为《数据库领域前沿研究调研报告》的报告

林老师此次报告的副标题为《闪存扮演的不同角色》,此次报告主要分析了闪存在今后的可能的应用方向,并且通过多个实例讲解了闪存的应用。闪存的角色有如下几种:

  1. 直接替代硬盘,作为独立的存储系统
  2. 与硬盘并列构成混合的存储系统

将闪存与硬盘并列构成混合的存储系统主要是指将随机写集中的数据写入到硬盘中,将随机读集中的数据存储在闪存中,并通过相关算法来预测数据时随机写的还是线性写的,这种方法的关键就在于数据随机性的预测。

  1. 作为硬盘和内存之间的缓存
  • 刘颖杰同学作题为《tank代码详解及java的io编程规范》的学习汇报

   刘颖杰同学此次的报告包括三部分的内容:(1)Tank游戏的源代码分析(2)系统的设计原则(3)Java中的io编程规范,以下是详细内容。

  1. Tank游戏的源代码分析

刘颖杰同学对Tank游戏的源代码进行了详细分析,从不同方面进行了介绍,包括Tank的系统设计、详细设计和具体实现。

  1. 系统的设计原则

此次报告并没有对代码的设计原则进行详细介绍,仅对Tank中用到的部分原则进行了简单说明,其中报告:(1)分层原则(2)模块化原则(3)接口实现分离原则(4)细节隐藏原则(5)依赖倒置原则。

  1. Java 中的io编程规范

刘颖杰同学对Java中的io编程规范进行的详细讲解,并通过一个记事本实例对Java中不同的io编码方式进行了比较。在报告最后,韩静同学对此次进行了一点补充,补充的主要知识是Java中,需要手动实现窗口关闭按钮的相应事件。

  • 赖明星同学作题为《An efficient index buffer management scheme for implementing a B-tree on NAND flash memory》的论文阅读报告

在此次会议的最后由明星同学作论文阅读报告,该报告的主要内容是分析如何在闪存上建立有效的B-Tree索引,此次报告共分析了两种在闪存上建立B-tree索引的方法,一种是BFTL,一种是IBSF,其中,后者是前者的改进。

  1. BFTL

BFTL 是建立在应用程序与闪存之间的一个中间层,由保留缓存区和地址转换表组成,保留缓冲区用于缓冲插入的索引单元,然后将若干索引单元写入同一页中,以此来减少空间的浪费,以及每次B-tree修改时的写操作次数。并且由于,一个节点的各个索引单元可能存在于不同的页中,为了快速的找到相应的页,在BFTL中间层上建立了一个地址转换表。

由于BFTL的内在特性,它有一些显著的缺点:(1)需要多次读操作来构造一个节点(2)地址转换表占用很多空间(3)存在无用的索引单元。基于以上缺点,论文提出了一种全新的方法,称为IBSF。

  1. IBSF

IBSF也是位于应用程序与闪存中的一个中间层,与BFTL不同的是,它只有一个索引缓冲区,索引缓冲区用于存储各个索引单元,索引单元反应了B-Tree的变动。并通过插入策略、删除策略和提交策略来管理索引缓冲区。IBSF与BFTL的显著区别在于IBSF将同一节点的不同单元存储于同一页中,当读取一个节点的时候只需要一次读操作,因为提高了效率。

    在此报告最后,小组成员对此论文中存在的问题进行了热烈讨论,讨论的主要内容有索引缓冲区里的数据如何与闪存中的数据保持一致性,当出现断电等情况,能否恢复索引。

(本会议纪要由赖明星同学撰写)