轻量级开源云系统发布新版本
|
这是一颗三阶的BTree,可通过键值的大小排序进行数据的查询和检索,其中叶子节点的指针都为空,因此省略没画。从上图可以发现,BTree 的树形状相较于我们之前常见的二叉树等结构,更为扁平和矮胖。 之所以这样设计,还是跟磁盘读取的特点有关。我们知道在建立索引时,也是需要占据物理空间的。而实际上当数据量比较大的时候,索引文件的大小也十分吓人。考虑到一个表上可能有多个索引、组合索引、数据行占用更小等情况,索引文件的大小可能达到物理盘中数据的1/10,甚至可达到1/3。 这就意味着索引无法全部装入内存之中。当通过索引对数据进行访问时,不可避免的需要对磁盘进行读写访问。同时我们还知道,内存的读写速度是磁盘的几个数量级。因此在对索引结构进行设计时要尽可能的减少对磁盘的读写次数,也就是所谓的磁盘 I/O 次数。 这也就是索引会采用 BTree 这种扁平树结构的原因,树的层数越少,磁盘I/O的次数自然就越少。不仅如此,我们上面提到过磁盘预读的局部性原理。根据这个原理再加上页表机制,能够在进行磁盘读取的时候更大化的提升性能。 BTree 相较于其它的二叉树结构,对磁盘的 I/O 次数已经非常少了。但是在实际的数据库应用中仍有些问题无法解决。 一是无法定位到数据行。通过 BTree 可以根据主键的排序定位出主键的位置,但是由于数据表的记录有多个字段,仅仅定位到主键是不够,还需要定位到数据行。虽然这个问题可以通过在 BTree 的节点中存储数据行或者增加定位的字段,但是这种方式会使得 BTree 的深度大幅度提高,从而也导致 I/O 次数的提高。 二是无法处理范围查询。在实际的应用中,数据库范围查询的频率非常高,而 BTree 只能定位到一个索引位置。虽然可以通过先后查询范围的左右界获得,但是这样的操作实际上无法很好的利用磁盘预读的局部性原理,先后查询可能会造成通过预读取的物理地址离散,使得 I/O 的效率并不高。 三是当数据量一大时,BTree的高度依旧会变得很高,搜索效率还是会大幅度的下降。 问题总是推动改进的前提。基于以上的问题考虑,就出现了对 BTree 的优化版本,也就是 B+Tree。 B+Tree索引
B+Tree 一看就是在 BTree 的基础上做了改进,那么到底改变了什么呢。废话不多说,先上图。 众所周知,VR是当下比较火热的技术,只需戴上一副眼镜,就能进入全新的虚拟世界,或置身不受时空限制的历史博物馆、或在浩瀚无边的景色里、抑或是身临其境的出现在游戏世界中,不论是怎样的场景,VR都可以给我们带来很对新鲜有趣的体验。 然而,如此有趣的一项技术,发展过程确是比较坎坷的,短短四五年时间,经历了从火热到遇冷再到火热的历程,之所以会这样,则是因为网络技术和产业的不成熟等诸多原因。不过随着5G的来临以及政策的不断推进,VR产业将会出现大爆发,进入属于自己的高光时刻。 不久前,工信部印发《关于推动5G加快发展的通知》,要求进一步推广5G+VR/AR(增强现实)等应用,促进新型信息消费。根据AR/VR行业市场分析机构Greenlight Insights(绿光洞察)的预测,2020年全球VR产业规模将达到1600亿元,中国市场规模将达到900亿元。
从当下来看,VR行业规模扩展迅速,已经开始出现在各行各业,除了传统的游戏娱乐领域外,VR在医疗、交通、教育、农业、制造业等领域也实现了广泛的应用,商业化前景越发凸显,市场受欢迎程度不断攀升。 (编辑:周口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
