应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

分布式基础存储引擎

  题目和文章内容有点不太符合,这里存储引擎是指单机存储引擎。对于分布式存储系统来说,存储引擎是必须的。存储引擎决定了数据在内存和磁盘中具体如何存储的,如何方便地拿出来的问题。可以说直接决定了存储系统的性能和可以干什么,不可以干什么的问题;本文参考《数据密集型应用系统的设计》和《大规模分布式存储系统原理解析和架构实战》。
  存储系统的功能做机制的简化就是存储和查询,如果从一般功能出发就是基础的增删改查。从最简单的开始想起,最简单的存储系统,无非就是把数据直接写入到文件中(可以按照K,V一行方式存储),需要的时候就顺序读取文件,找到可以需要查询的行。这在少量的数据的时候并没有问题,但是如果是大批量数据,几百MB或者几GB,甚至TB,PB的时候,顺序读取大量文件那速度慢的吓人。一哈希存储引擎
  顺序读取文件做遍历查找,速度很慢,我们第一想到的思路是建索引,索引最常用的就是哈希表了,如果我们对文件中的数据建个索引,Key保存着我们下次要查询的值,Value对应这哪个文件的哪个位置。在内存中保存这个索引,下次查询的时候,我们通过哈希表快速定位到文件和位置,就可以迅速取到需要的值了。Bitcask折中日志型小型文件系统就采用这种存储方法,它可以提供高性能的读写,只需要经过一次磁盘的寻址就可以获取到所需要的数据。
  作为日志型的存储系统,Bitcask的删除和修改是通过顺序记录到文件中,并不是对原来的文件进行修改,这减少了随机磁盘的读写操作。数据写入到文件中,如果一直写,显然文件越来越大,不便于操作,所以限制文件的大小,当大小达到一定规模后,重新写入一个文件。对于更新和删除的数据,如果不处理,会产生大量的垃圾数据,占用了空间,所以后台会定时进行文件合并,合并的时候删除标记删除的具体数据。
  Bitcask1。1崩溃恢复
  哈希存储引擎的数据分为两份,一份是内存中的数据,一个是磁盘的文件,系统崩溃后,磁盘中的哈希表就没有了。如果恢复的时候通过读取文件的方式也是可以重建的,但是如果文件很多,很大,恢复的时间就会很长,Bitcask对每个段的文件的哈希表快照存储在文件中,下次恢复的时候可以快速恢复。1。2并发控制
  Bitcask只有一个写入线程追加,可以采用多个读取的线程并发读取,性能上还是很不错。1。3哈希存储引擎的缺点
  哈希存储引擎因为采用哈希表,查找的性能不错,但是同样因为采用哈希存储引擎,会导致范围查询,只能通过遍历的方式去查询数据,范围查询慢。
  刚才结构也说了,索引必须可以保存在内存中,才可以性能够好,但是如果数据量超大,内存中无法保存,保存到磁盘中,会产生大量的随机访问。另外哈希还存在着哈希冲突的问题。二LSM树存储引擎
  刚才的哈希存储引擎的两个缺点,一是范围查询性能很差,我们要做范围查询,最好数据是有序的,有序的就可以不用遍历全部数据去做范围查询了。所以我们内存的数据不就不适合哈希索引,我们可以考虑改造成一个支持排序的数据结构。另外刚才的哈希存储引擎,数据是按照顺序写入到数据文件中的,如果同一个key的多次更新,只保留最后一个数据的时候,是不是挺麻烦。
  我们可以将文件中和内存中的数据都排序,这种格式称为排序字符串,在LevelDB中叫SSTable。文件中的KV结构排序后,好处是我们在做多文件合并的时候,可以按照多路归并的算法,快速排序,用多个指针依次比较和后移就可以办到。多个文件含有同一个值的时候,我们可以保留最新的字段值。
  内存中的数据排序后,我们不一定对所有的数据的key都保存,可以只保存部分,根据key的排序特性,也可以很容易找到要找的值。由于要对内存中的数据排队,而且数据要经常插入和删除,所以红黑树和AVL树是比较适合这种场合。对于存储在磁盘上的文件,也是有序的,用普通的AVL树或红黑树,保存到磁盘上后,数据多的话,树的层次会很高,这样通过多个指针需要多次随机读取,所以一般采用专门为大数据存储磁盘而设计的B树,B树的每个节点的分叉很多,一个节点可能有上千个分支。这样很少的层次就可以支持大量的数据了。2。2LSM存储引擎如何写入和查询
  这种引擎如何写入数据:写入数据的时候将数据写入到内存的红黑树或者其他的高校增删且支持排序的数据结构,比如调表等。这种内存中树被称为内存表,当然内存表也不可能无限制增加,当达到一定的阀值后,就会将整体作为SSTable写入到磁盘文件中,直接采用顺序写入的方式写入到磁盘中。新来的数据写入新的内存表。
  如何读取数据:先在内存表中查找,如果没找到就在磁盘的最新段文件查找,如果没找到就在次新的文件查找,直到找完所有的段文件或找到了返回。由于数据是按照时间顺序写的段文件,所以先找到的数据是最新的,也是我们需要找的数据。如果磁盘文件越来越多,那么查找性能肯定很差,所以和哈希引擎一样,需要后台线程定期做段合并,减少文件个数,且合并相同的key和删除已经删除的key。需要注意一点的是,如果删除一条数据,在内存表里面虽然没有这个数据,也要记录下来,标记为删除,这样查询的时候,在内存表中查询到删除后就可以直接返回;如果不做删除标记,那么在SSTable文件中也许会查询到这个数据,返回就是错误的数据了。2。3LevelDB存储引擎举例
  这个存储引擎就是LSM存储引擎的本质了,LevelDB就是采用这个存储引擎的。
  类似的存储引擎还用于HBASE,以前还记得学习HBase的时候minorcompaction(少量的HFile合适小文件合并,为提升性能同时减少IO压力)和majorcompaction(一个Node节点的所有文件合并),还比较迷茫。从上图的LevelDB存储引擎图可以看出,数据处理过程:数据先写入MemTable,当内存中的数据到达一定规模之后,就转成不可写的MemTable,生成新的Memtable继续写入。后台有线程将不可变的Memtable写入到磁盘中即生成一个个SSTable的段文件,这样的好处是在转存的时候也不影响继续的读取和写入,完全不用加锁,这个写入过程叫Minorcompaction。后台线程在做多个SSTable段文件合并的时候,如果两个段文件大小相差很大,显然性能很差,所以最好是分层设计。LevelDB最新的是Level0层,Level0层的文件达到一定规模后,会挑选几个Level0的文件合并后形成Level1层的文件,逐步类推。由于LSM树写的是内存表,那么如果机器挂了,会有数据的丢失,为此设计了操作日志,再写完操作日志后再写内存表,这样通过一次顺序写磁盘和写内存来完成数据的写入操作。
  说明清单文件保存的是元数据信息,记录了每个SSTable文件所属的Level,文件中的key的最大值和最小值。同时由于SSTable文件经常变动的,所以增加个当前文件指向当前的清单文件这样操作起来就不用加锁了。
  特点:通过上述描述可以看出,LSM(LogstructuredMergeTree)存储引擎是基于日志特性(即数据只追加不修改)的合并和压缩排序树的存储引擎;写入之后只需要写入内存和一次操作日志的顺序写,所以写入性能比较好;如果系统进程需要查询最近的数据,那么由于最新的数据在内存中,所以性能也比较好;但是一般情况下查询的需要查内存表和多个SSTable,查询性能不太好,特别是数据不存在的情况,为此可以在SSTable中添加布隆过滤器,可以快速过滤掉不存在的情况。三BTree
  相对于以上两种引擎,B树存储引擎应用的最广泛,在关系型数据库中运用的很多。B树存储引擎不光支持随机查询,还很好地支持范围查询。像SSTable一样,B树引擎同样保持了对key的排序。在文件存储上,还是有很大的差异。LSM存储引擎的段文件大小不一,是顺序写入到磁盘的。BTree不像LSM树那样有内存表和SSTable,而只有一个B树,当然一些顶层块常在内存中。
  B树是按照块存储数据库的数据的,它一般是一个多叉树,比如InnoDB引擎采用B树存储,每个节点大概有1200个子分支。B树分为叶子节点和非叶子节点,叶子节点存储的是key和具体的数据,而非叶子节点存的是key和磁盘地址。
  B树存储结构
  以B树为例说明查询和插入的基本流程3。1查询
  读取一个节点,如果对应的节点所在的数据页不在内存中,需要按照下面的过程从磁盘中读取,然后缓存在内存中。查询的时候,我们从根页开始,通过key的范围找到下层子页,继续查找,直到找到叶子节点所在的页。叶子节点保存key和对应的值,在数据库中叶子节点保存完整的数据行。在叶子节点所在的块之后,可以通过二分查找的方式快速查询到记录值或查询结果不存在。3。2插入
  插入和更新按照InnoDB引擎为例的话,还是比较复杂。查询插入的主键的key所属的页是不是在内存中,是的话直接在内存中修改,记录redolog防止挂了。如果所属的页没有在内存中,由于使用了主键,所以必须加载数据页(changebuffer失效,写其他非唯一索引的可用)到内存,再进行插入;如果修改数据,没有使用唯一索引,可以在changebuffer中直接记录这次更新。下次读取数据页面的数据的时候,在内存中直接返回,不在内存中则加载在内存中,如果changebuffer里面有修改的记录,则需要应用changebuffer里面的动作到这个加载的数据页中。插入的时候,如数据页已经满了,则需要分裂数据页,小于中间值的位于左边,大于的位于右边,中间值作为索引节点放入到上层。
  实际中还涉及到binlog日志。可以看到实际工程中,B树引擎还是通过redolog这种WAL日志,用顺序磁盘读写替换了随机读写;changebuffer减少了随机读数据的过程,可以合并多条修改记录,一次性写,增加了性能。四总结
  B树和LSM树相比有以下特点:B树引擎特点:写入WAL日志;2。写入树本身的页,即使只是修改了几个字节,也要将整个数据页要重写;LMS树引擎特点:LSM树由于需要合并,SSTable也需要写入多次,但是由于是顺序写而且写入的SSTable更紧凑,因此写入性能更好。LSM树的数据结构更紧凑,而B树为降低分页的概率,所以预留部分空闲节点,从而造成一些碎片,无法充分利用磁盘空间。LSM树压缩合并过程中会影响到读取性能;B树响应性更加确定,每个key有唯一的位置;而LSM树不同的段中可能有一个key的不同副本。想支持事务的话,B树是更好的选择。

为什么红米手机的用户越来越多了?其实是消费者越来越精明了红米手机好用吗提到国产智能手机的话,不得不提一下小米手机。虽然雷军标榜的小米手机的性价比很高,但对于大部分手机用户来说,小米11系列手机除了青春版以外,价格真的是太贵了。……顶级音响英国宝华推出新一代旗舰蓝牙音箱,外观音质堪称典范玩音响的人肯定都听说过,英国的宝华韦健(BowersWilkins)这个音响品牌,要说论名气,宝华的国内发烧友中肯定是非常大的,在国内,曾经一度在HiFi音响销量中排名第一,宝……跨越台湾海峡,3大跨海通道直通台湾省,哪条更具价值?随着经济的日益发展,大陆台湾两岸人民的交流越来越密切,已经不仅仅满足于坐飞机或坐轮渡这两种交通方式,开始思考可不可以实现两岸自驾游或者感受我们的中国速度高铁,来到达彼岸呢?……真想不到!莱多的三双居然是广东队史的第4次三双,前3次谁拿的昨晚,广东队外援莱多在赛季首秀中拿到了28分13篮板11助攻的三双数据,其全面的表现也帮助球队以11991大胜天津队,拿到两连胜!对于广东队来说,这是一场酣畅淋漓的大胜,更是摆……1米95张常宁穿婚纱太美!搂1米7王冰冰像姐妹花,问老公看了东京奥运会结束后,铩羽而归的中国女排处于重建阶段,郎平接班人正在应聘环节,朱婷何时做手术至今是个迷,而颜妮、刘晓彤等老将相继退出,李盈莹等年轻队员逐渐成为新时期中国女排新骨干力……骁龙855干翻骁龙8Gen1?极客湾给出了答案1月23日,B站著名up主极客湾发布了一期视频,题目为《一千元打造游戏手机,干翻最新小米12Pro旗舰机!》,这期视频讲述了通过改造小米9来干翻全新小米12Pro,不仅给大家开……菜市场看似营养的菜品,可能是被甲醛泡过的,你注意到了吗?导语:如今人们的生活条件越变越好,对孩子的营养也就越来越看重,不知道大家发现没有,在八九十年代很多孩子都不知道奶粉是什么,对于普通家庭来说就是无比高端的奢侈品。但现在的孩子都是……奥林匹克专用车道1月21日启用,新增春节前调休工作日限行(记者毕轩语)记者从14日召开的2022年冬奥会和冬残奥会北京主办城市系列新闻发布会社会交通管理措施专场了解到,按照第24届冬季奥林匹克运动会主办城市合同,北京2022年冬奥会……XYG能否闯进总决赛?想要实现一穿到底,需要克服几点不足王者荣耀KPL秋季赛还进入后半程,比赛进行到现在,只剩下四支队伍了,分别是狼队、E星、广州TTG以及张大仙的战队,估计谁也想不到,作为一支刚加入KPL没多久的队伍,张大仙的XY……七万亿红利房地产企业参与乡村振兴项目的10大转型模式地产企业依势转型才能走出困境、依规转型才有好政策、依强转型才算有把握、依产转型才能成新标杆。但是如何转型?所有企业都在摸索、沉思。10大转型模式1、未来田园社区示范……不要忘记不该忘的事,不要记住不该记的人今天给大家介绍一下打野位置的英雄镜,他的操作难度还是比较高的,一般的玩家如果想玩的话还是需要多多练习,操作难度高但是也很厉害。这个英雄价值18888金币,目前有三款皮肤。……原神大无语事件甘雨因太胖,被巨兽卡在了食道进不去出不来在很早的时候小白就和大家说过,自己账号因为一些原因被自己玩没了,所以如今才慢慢过任务,然而当小白过到仙麟之章时,重温了一遍关于甘雨的支线任务然而咱们不谈甘雨的强度,就看甘……
你的脸上是否会有油呢?油多吗?那你知道它是怎么来的吗?我相信很多人脸上都会出油,那油是怎么来的呢?油是从我们的毛囊里面出来的,而毛囊是我们毛发生长的地方,毛发会顺着毛囊狭长的通道慢慢到达皮肤表面,而这条捷径被旁边的皮脂腺发现……演了这么多主角,她为什么还不爆红?与其说是演员的问题,不如说是国产剧主角形象塑造面临的桎梏,而这在女性角色上表现得更为明显,配角或者反派艳压主角的情况时有发生,因此也出现了一些演员演主角不如演配角的奇特现象,也……需要知道的微服务设计原则良好的微服务设计可以使后期的升级维护更加轻松,否则将会令人非常头疼。下面几个设计原则强烈建议采用:单一职责高内聚低耦合隐藏内部实现避免代码库共享避免数据过度暴露避免数据库……提前付全款参与三星手机优先发货活动,发货却延迟!客服回应近日,来自广州的吴先生告诉南都记者,其通过三星商城提前付全款参与三星新品先行者计划订购了一台GalaxyS23Ultra,本应享受优先发货的服务,订单却延迟了7天才发货。南都记……开市前,两大巨头齐发重磅公告!3月12日晚,中国移动、中国电信两家通信运营商巨头发布公告,预计派息率将逐步提升。其中,中国移动2023年以现金方式分配的利润提升至当年公司股东应占利润的70以上;中国电信将在……网红款不一定真好用,买儿童牙刷这三点很重要要帮孩子把牙齿刷干净,最重要的是掌握正确的刷牙方法,然后还需要一把好用的牙刷。市面上有着各式各样的儿童牙刷,但有时候刷不干净牙,真不是家长不努力,而是牙刷没选好!现……足球资讯,姆巴佩内马尔团结,梅西被后卫夸赞,滕哈赫被称为天才巴黎官方消息,内马尔脚踝扭伤但没有骨折,预计伤缺23周!内马尔在社媒晒出受伤的脚踝照并配文:一次又一次!姆巴佩在接受采访时夸赞内马尔:当内马尔拿球的时候,我就开始冲……纪念张国荣梅艳芳逝世20周年珍贵档案回顾两人神仙缘分又是一年四月,对于很多人来说,这是怀念张国荣的日子。而提到张国荣,人们也必然会想起梅艳芳,两人的神仙友情常为人津津乐道。据说,张国荣和梅艳芳相约,等到梅艳芳四十岁时,如果她未嫁……一个破纪录一个拿金牌,刘少林刘少昂开好头20222023赛季全国短道速滑冠军赛,今天进入收官日的角逐。在男子1000米A组决赛中,刘少昂以1分26秒082的成绩夺冠,这是他入籍以后收获的首枚金牌。刘少林获得该项目亚军……德玛尔德罗赞破茧而出的中投之王,背靠背绝杀的当代乔丹!德玛尔德罗赞是一位出色的职业篮球运动员,他在职业生涯中展现出了出色的技术和能力。在篮球运动中,德罗赞因其中投和绝杀能力而备受瞩目。他的表现让人联想到当年的乔丹,被誉为当代的中投……萨诺格21分10篮板,康涅狄格大学大胜迈阿密大学闯入NCAA在今日的NCAA最终四强赛中,康涅狄格大学7259击败迈阿密大学,与圣地亚哥州立大学会师决赛。康涅狄格大学的霍金斯上来就中三分,随后萨诺戈连中三分,康涅狄格90完美开局。……CBA全明星赛,点评6项个人大奖,3人获奖很意外20222023赛季CBA全明星正赛,随着北区队通过加时赛以117113击败南区队,从而落下帷幕!从本届CBA全明星赛来看,可以说有不少亮点,让人回味。随着各项赛事全部结束,在……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网