您的位置:首页 > 数据库

数据库引擎开发以及常见数据库内部原理学习(2)

2014-09-02 00:00 543 查看
<p>管理员,你确定其他的文章比我的更有原创性或者技术性?虽然是一个写非常简陋的NoSQL数据库的文章,虽然是基于别人的教学资料的总结,最主要的引导总结性的部分,我不好展开,原创性和技术性碾压首页上一般文章没有一点问题,移除我的文章很好玩是吗?</p>
<table cellspacing="0" cellpadding="9" class="ctable">
<tbody><tr>
<td valign="top" class="ctd" style="width: 29%;" wiz_tag_attr_bk_color="">
<span id="deskdict_main" sizcache="59" sizset="0"><span class="def">
<strong>线索</strong></span></span>
<ul>
<li><b>数据库调度流程</b></li>
</ul><div><b><br></b></div>
</td>
<td valign="top" class="ctd" wiz_tag_attr_bk_color="" style=""><strong>1.记录:<br><ol><li>请求解析</li><ol><li>请求接受</li><ol><li>从网络上接收协议抱--网路</li></ol><li>线程调度</li><ol><li>调度系统资源--进程模型</li></ol><li>解析数据</li><ol><li>得到用户请求信息--协议</li></ol><li>生成数据访问流</li><ol><li>解析SQL生成访问计划--优化</li></ol></ol><li>请求处理--运行库</li><ol><li>生成执行代码</li><ol><li>通过访问计划生成可执行代码</li></ol><li>执行代码</li><li>访问数据,写入日志</li><ol><li>数据访问</li></ol></ol><li>存储访问</li><ol><li>数据扫描--数据管理</li><li>索引扫描--索引管理</li><li>数据插入--数据管理、索引管理</li><li>数据更新--数据管理、索引管理</li><li>数据删除--数据管理、索引管理</li></ol><li>日志访问--日志管理</li><ol><li>记录添加</li><li>记录读取</li></ol><li>EmeraldDB功能</li><ol><li>客户端支持多节点集群</li><li>不存表或集合的概念</li><li>数据格式是JSON,存储格式是BSON</li><li>对数据进行插入、搜索与删除</li><li>搜索必须按照_id字段</li></ol><li>EDB整体架构</li><ol><li>通过散列算法放在指定节点</li></ol><li>EDB架构</li><ol><li>CLI--client</li><li>java Driver--driver</li><li>=======================</li><li>请求解析--MSG、PMD</li><li>请求处理--RTN</li><li>存储访问--DMS、IXM</li></ol><li>客户端类图</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101500_UByf.png" name=""></li><li>客户端吧命令发送到一个Command工厂,工厂里面再去匹配命令,而命令都是实现了ICommand接口,这个流程我觉得不是很难理解。就不多说了。</li></ol><li>引擎类以及流程</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101500_lT38.png"></li><li>PMD调用OSS层的一个函数,监听某个端口,把监听到命令转换成x给MSG,MSG把它转换成系统能识别的结构,然后调用RTN层,RTN层去调用IXM进行查询操作,最终通过DMS层完成整个数据的操作。</li></ol><li>PMD类图以及其流程</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101502_Scv0.jpg"></li><li>KRCB是内核控制块,其他控制块都是它的字块</li><li>EDU的管理器,就是线程管理器</li><li>EDUCB线程的状态</li><li>Event线程信息</li><li>Options操作选项</li></ol><li>MSG类图</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101502_zFMm.jpg" name=""></li><li>协议封装</li></ol><li>RTN类图</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101502_OFaP.png"></li><li>一般数据库最复杂得模块,但是我们这里是简化版,东西很少,本来日志,事务回滚都是这里控制的。</li></ol><li>IXM类图</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101503_vHJO.jpg" name=""></li><li>索引管理器,我们这里使用hash索引,只能做精确的匹配</li></ol><li>DMS类图</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101503_HJy0.jpg" name=""></li><li>数据库底层文件操作,以及存储结构操作</li></ol><li>OOS类图</li><ol><li><img src="http://static.oschina.net/uploads/img/201409/02101505_APuf.jpg"></li><li>封装系统底层的不同平台的基础操作。</li><li>latch、内存操作,队列</li></ol><li><br></li></ol></strong>
<b>2.简化:<br><ol><li>一般数据库可以大致分为:请求解析,请求访问,数据访问,日志访问,四大部分!</li><li>EDB的客户端是一个基于工厂模式的请求转发架构</li><li>PMD是引擎的线程调度模块</li><li>MSG是引擎的协议模块</li><li>RTN是运行支撑模块</li><li>IMX是hash索引模块</li><li>DMS是文件操作模块</li><li>OSS是跨平台基础函数模块(封装latch、内存操作、队列操作)</li></ol></b>

<b>3.背诵:<br></b>

<strong>4.思考:<br><ol><li>数据库一门语言,它的主要操作是把操作命令转换成数据库执行命令。这里面最精彩的地方莫过于sql优化引擎对sql的优化处理,但是很可惜,我这个系列的笔记暂时不会涉及到这个方面,但是,这个是我最喜欢的部分。将来有机会我也找个机会分享这个东西!</li><li>数据库的主要模块可大体分为命令的解析,这个过程其实很复杂,甚至是数据库最复杂的部分,然后就是数据的操作,这个是最核心的模块,但是逻辑我个人并不认为是非常麻烦的。当然还有日志模块,我们这个数据库系统的日志模块是非常简单,但是,将来讲到数据库日志模块的时候,我将引申到mysql,Oracle之类的数据库,我觉得数据库的日志是个非常强大的东西,甚至数据库很多衍生产品都是基于此。</li></ol></strong>
<strong>5.复习:</strong>
</td>
</tr>
<tr>
<td colspan="2" class="ctd" wiz_tag_attr_bk_color="" style=""><strong>总结<br><ol><li>数据库的组成部分有简单,有复杂,但是归根结底基础的操作是不变的,核心本质是不变。用王涛老师的一句话说,数据库的原理现在都是大路货了,人人都知道,数据库怎么处理和取舍才是构建一个数据库的重点。</li></ol></strong>
</td>
</tr>

</tbody></table>

<br /><br /><div><a title="来自为知笔记(Wiz)" href="http://www.wiz.cn/i/39676402">来自为知笔记(Wiz)</a></div><br /><br />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐