电话:0731-83595998
导航

2020年海南南方电网招聘考试计算机专业考点:子表服务器

来源: 2019-10-26 09:47
国家电网招聘考试QQ交流群:181095196   视频课程   书籍资料  考试题
  1. 子表服务器
Bigtable中实际的数据都是以子表的形式保存在子表服务器上的,客户一般也只和子表服务器进行通信,所以子表及子表服务器是我们重点讲解的概念。子表服务器上的操作主要涉及子表定位、分配以及子表数据的最终存储问题。其中子表分配在前面已经有了详细介绍,这里略过不讲。在讲解其他问题之前我们首先介绍一下SSTable的概念以及子表的基本结构。
  1. SSTable及子表基本结构
SSTable是Google为Bigtable设计的内部数据存储格式。所有的SSTable文件都是存储在GFS上的,用户可以通过建来查询相应的值,图2-15是SSTable格式的基本示意图。
SSTable中的数据被划分成一个个的块(Block),每个块的大小是可以设置的,一般来说设置为64KB。在SSTable的结尾有一个索引(Index),这个索引保存了SSTable中块的位置信息,在SSTable打开时这个索引会被加载进内存,这样用户在查找某个块时首先在内存中查找块的位置信息,然后在硬盘上直接找到这个块,这种查找方法速度非常快。由于每个SSTable一般都不是很大,用户还可以选择将其整体加载进内存,这样查找起来会更快。
从概念上来讲子表是表中一系列行的集合,它在系统中的实际组成如图2-16所示。
每个子表都是由多个SSTable以及日志(Log)文件构成的。有一点需要注意,那就是不同子表的SSTable可以共享,也就是说某些SSTable会参与多个子表构成,而由子表构成的表则不存在子表重叠的现象。Bigtable中的日志文件是一种共享日志,也就是说系统并不是对子表服务器上每个子表都单独的建立一个日志文件,每个子表服务器上仅保存一个日志文件,某个子表日志只是这个共享日志的一个片段。这样会节省大量的空间,但在恢复时却有一定的难度,因为不同的子表可能会被分配到不同的子表服务器上,一般情况下每个子表服务器都需要读取整个共享日志来获取其对应的子表日志。Google为了避免这种情况出现,对日志做了一些改进。Bigtable规定将日志的内容按照键值进行排序,这样不同的子表服务器都可以连续读取日志文件了。一般来说每个子表的大小在100MB到200MB之间。每个子表服务器上保存的子表数量可以从几十到上千不等,通常情况下是100左右。
  1.  子表地址
子表地址的查询是经常使用的操作。在Bigtable系统的内部采用的是一种类似B+树的三层查询体系。子表地址结构如图2-17所示。
所有的子表地址都被记录在元数据表中,元数据表也是由一个个的元数据子表(Metadata Tablet)组成的。根子表是元数据表中一个比较特殊的子表,它既是元数据表的第一条记录,也包含了其他元数据子表的地址,同时Chubby中的一个文件也存储了这个根子表的信息。这样在查询时,首先从Chubby中提取这个根子表的地址,进而读取所需的元数据子表的位置,最后就可以从元数据子表中找到待查询的子表。除了这些子表的元数据之外,元数据表中还保存了其他一些有利于调试和分析的信息。比如事件日志等。
为了减少访问开销,提高客户访问效率,Bigtable使用了缓存(Cache)和预取(Prefetch)技术,这两种技术手段在体系结构设计中是很常用的。子表的地址信息被缓存在客户端,客户在寻址时直接根据缓存信息进行查找。一旦出现缓存为空或缓存信息过时的情况,客户端就需要按照图2-17所示方式进行网络的来回通信(Network Round-trips)进行寻址,在缓存为空的情况下需要三个网络来回通信。如果缓存的信息是过时的,则需要六个网络来回通信。其中三个用来确定信息是过时的,另外三个获取新的地址。预取则是在每次访问元数据表时不仅仅读取所需的子表元数据,而是读取多个子表的元数据,这样下次需要时就不用再次访问元数据表。
  1. 子表数据存储及读写操作
在数据的存储方面Bigtable作出了一个非常重要的选择,那就是将数据存储划分成两块。较新的数据存储在内存中的一个称为内存表(Memtable)的有序缓冲里,较早的数据则以SSTable格式保存在GFS中。这种技术在数据库中不是很常用,但Google还是作出了这种选择,实际运行的效果也证明Google的选择虽然大胆却是正确的。
从图2-18中可以看出读和写操作有很大的差异性。做写操作(Write Op)时,首先查询Chubby中保存的访问控制列表确定用户具有相应的写权限,通过认证之后写入的数据首先被保存在提交日志(Commit Log)中。提交日志中以重做记录(Redo Record)的形式保存着最近的一系列数据更改,这些重做记录在子表进行恢复时可以向系统提供已完成的更改信息。数据成功提交之后就被写入内存表中。在做读操作(Read Op)时,首先还是要通过认证,之后读操作就要结合内存表和SSTable文件来进行,因为内存表和SSTable中都保存了数据。
在数据存储中还有一个重要问题,就是数据压缩的问题。内存表的空间毕竟是很有限的,当其容量达到一个阈值时,旧的内存表就会被停止使用并压缩成SSTable格式的文件。在Bigtable中有三种形式的数据压缩,分别是次压缩(Minor Compaction)、合并压缩(Merging Compaction)和主压缩(Major Compaction)。三者之间的关系如图2-19所示。
每一次旧的内存表停止使用时都会进行一次压缩操作,这会产生一个SSTable。但如果系统中只有这种压缩的话,SSTable的数量就会无限制的增加下去。由于读操作要使用SSTable,数量过多的SSTable显然会影响读的速度。而在Bigtable中,读操作实际上比写操作更重要,因此Bigtable会定期的执行一次合并压缩的操作,将一些已有的SSTable和现有的内存表一并进行一次压缩。主压缩其实是合并压缩的一种,只不过它将所有的SSTable一次性压缩成一个大的SSTable文件。主压缩也是定期执行的,执行一次主压缩之后可以保证将所有的被压缩数据彻底删除,如此一来,既回收了空间又能保证敏感数据的安全性(因为这些敏感数据被彻底上出了)。

通过进行伟大斗争践行党的初心使命

筑牢初心使命,为伟大斗争指引正确方向,为伟大斗争凝聚磅礴力量,推动伟大斗争取得预期成效。践行初心使命的道路不会是平坦笔直的,更不会是轻轻松松、敲锣打鼓就能实现的,其中必然面临复杂多变的国际形势与国内环境,面临各种可以预见与难以预见的困难风险,因而必须时刻准备进行伟大斗争。要坚决反对一切削弱、歪曲、否定党的领导和我国社会主义制度的言行,坚决反对一切损害人民利益、脱离群众的行为,坚决破除一切顽瘴痼疾,坚决反对一切分裂祖国、破坏民族团结和社会和谐稳定的行为,坚决战胜一切在政治、经济、文化、社会等领域和自然界出现的困难和挑战,提高政治站位,坚守初心、担当使命。

中国特色社会主义进入新时代,有许多新时代历史特点的伟大斗争。习近平总书记指出:“凡是危害中国共产党领导和我国社会主义制度的各种风险挑战,凡是危害我国主权、安全、发展利益的各种风险挑战,凡是危害我国核心利益和重大原则的各种风险挑战,凡是危害我国人民根本利益的各种风险挑战,凡是危害我国实现‘两个一百年’奋斗目标、实现中华民族伟大复兴的各种风险挑战,只要来了,我们就必须进行坚决斗争,而且必须取得斗争胜利。”通过开展主题教育,不断强化广大党员干部的使命感、责任感和群众观念、宗旨意识,增强思想的力量、行动的力量和人格的力量,始终保持党的先进性和纯洁性,更加有力地进行伟大斗争,应对重大挑战,抵御重大风险,克服重大阻力,解决重大矛盾,不断夺取伟大斗争新胜利。

 
2020年国家电网招聘信息,欢迎关注长理职培官方微信号(clzp66),及时掌握考试资讯!
长理职培微信公众号二维码:

 

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端