09 2012 档案
摘要:接着前面的,本节介绍剩下的索引信息管理和视图信息管理。3、(IndexMgr)索引信息管理IndexMgr随着系统启动而创建,如果系统已经有idxcat.tbl,说明事先已经创建过索引信息表,直接读取文件内容即可,否则需要创建一个新的索引信息表。表结构如下:indexNametableNamefie...
阅读全文
摘要:续前节。2、(StatMgr)统计信息管理统计信息管理器主要维护了一个表的三种统计信息:表文件包含Block的个数,包含记录的条数,以及每个字段非重复记录数。图1 统计信息管理注:StatInfo中,每个字段的非重复记录数是一个经验估计值,大约是1 + (numRecs / 3)。如前面所说,统计信...
阅读全文
摘要:前面介绍了SQL语句的解析,在开始介绍查询动作的实现之前,有必要先看下simpledb对元数据(Metadata)的管理。出去完整性的考虑,对应着代码,这里会把record和metadata放在一起介绍。以下,是metadata和record的类图:图1 metadata和record类图通过类图,可以看出,simpledb维护了四种元数据:表信息(包含字段信息),视图信息,索引信息和统计信息。这四种数据,有的会持久化到磁盘上,如:表信息,字段信息,视图信息,索引信息;有的则是在运行时内存中维护,如统计信息。图2 Metadata组成示意以下将分别对这四种信息的管理,逐一介绍。1、(Table
阅读全文
摘要:在(1)里面提到,lexer作为一个工具,完成了对SQL字符串的切割,将语句转化成一个tokens数组。Parser完成了SQL解析的后序部分:使用一个lexer对象作为工具,切出tokens,然后解析语义,绑定相关的系统接口。在这里先要回顾下simpledb的支持的SQL的语法,这个影响了它在解析字符串时使用的方法。<Query> := SELECT <SelectList> FROM <TableList> [ WHERE <Predicate> ]<SelectList> := <Field> [ , <Sel
阅读全文
摘要:前面的几个部分,基本实现了数据的读写。对于数据库使用者来说,SQL(Structured Query Language)是访问数据库的窗口,这一节就来看下simpledb对SQL语句的解析。首先要说的是,simpledb实现了一个SQL-92的子集,具体支持的语法如下所示: 1: 2: <Query> := SELECT <SelectList> FROM <TableList> [ WHERE <Predicate> ] 3: <SelectList> := <Field> [ , <SelectList>
阅读全文
摘要:前面已经讲过了事务的并发管理和崩溃恢复整个事务管理,剩下了最后个点: 1、事务自己的缓冲管理 2、Transaction管理数据读写 > 事务自己的缓冲管理 Transaction下维护了一个BufferList,这个BufferList维护着事务当前pin着的缓冲片 图1 BufferList类图 维护一个Dictionary<Block,Buffer>对象buffers,保存当...
阅读全文
摘要:> getline 控制输入 使用getline可以对输入进行更多的控制。用变量名作为参数传递给getline,getline能将数据读入到这个变量。 1: # gawk sample: g1 2: BEGIN { 3: getline aa 4: print aa 5: } 6: -------...
阅读全文
摘要:由于之前师兄的内推,昨天去参加了某公司的openday。上午是交流会,技术副总做公司简介和QA,下午是面试。面试是连着三轮,从下午1点多到5点,一气儿三轮下来。只能说一个感觉,懵了,完全懵了。。。第一面,2v1 。先问的项目,数据库的存储结构,这个讲了下;后来又问索引如何加锁查询,自己的的review还没有到这里,很无奈地说跳过了;后来讲了想log的存储和读取。对了,中间还问sql语句的解析,这个简单讲了下, 但是有bug,确实没有review到这里,思路不是很完善,完事翻了下ipad里面的文档,确实在面的时候说的算法是有问题的。后来问:给定一颗二叉树的先序遍历和后序遍历,如何确定出这棵树。确
阅读全文
摘要:> pattern的细化首先说下BEGIN和END之间的多个模式的执行顺序,我写了下面的程序来验证下:图1 多个模式的执行顺序验证(数据文件为cars)如上图,BEGIN,END中间有三个模式,缺省模式,判断出厂时间($3>2000),判断品牌($1 ~ /ford/),运行结果如下:图2 运行结果可见,对数据文件中的一条记录,gawk的多个文件是依次匹配的。· pattern中用到的语法和运算符:1、正则表达式如图1中看到的,用 / / 将正则表达式括起来,即可将该表达式作为模式使用:单独的“ /ford/ ” 表示用该表达式匹配整个记录也可以至少用“ ~ ”,如“$1
阅读全文
摘要:第一次看见awk这三个字母,是在某实习童鞋的QQ状态里面,赞同事写的awk如何高效。昨天在书畅草草看了下IBM官方技术博里的文章,觉得很赞,很激动,但是有点看不太懂,还是自己抱着教科书,老老实实从头看起吧。哦,这里说一下,最近看的shell相关的东西,都是跟着《A Pratical Guide to Linux Commands,Editors, and Shell Programming》这本书的。gawk是awk的GNU版本。> 使用条件主要是用gawk来处理结构化的数据。什么是结构化呢,我的理解,就是一个文件里面的内容,可以按照某种记录记录格式,一条记录一条记录地读,同时,每一条记
阅读全文