当前位置: 首页 > news >正文

深圳亿天联网站建设企企网官网

深圳亿天联网站建设,企企网官网,p2p网站建设广州,新媒体如何运营推广LSM Tree LSM Tree#xff1a;Log-Structured Merge Tree#xff0c;日志结构合并树。是一种频繁写性能很高的数据结构。 LSM Tree将写入操作与合并操作分离#xff0c;数据首先写入磁盘中的日志文件#xff08;WAL#xff09;#xff0c;随后写入内存缓存#xff0c;…LSM Tree LSM TreeLog-Structured Merge Tree日志结构合并树。是一种频繁写性能很高的数据结构。 LSM Tree将写入操作与合并操作分离数据首先写入磁盘中的日志文件WAL随后写入内存缓存内存中的数据是有序的通常使用的方式如跳表、红黑树等。内存中的数据按照策略刷新至磁盘由于内存中的数据有序存储至磁盘中的数据也是有序的相较于随机写顺序写提高了性能。磁盘中的数据根据策略进行合并删除旧的数据避免数据持续增长同时提高了查询性能。 存储结构 WAL当有新的 key-value需要写入时首先将其追加到顺序写的日志文件WAL中因为WAL中的数据与当前内存中的KV数据一致可以利用WAL文件恢复上一次程序的运行状态。当immutable memtable中的内容写入SSTable后删除WAL文件重新创建一个空的WAL文件此处根据实际情况实现memtable内存中的数据结构保证存储数据有序通常使用跳表、红黑树等leveldb中使用的跳表immutable memtable内存中的数据结构不可修改的表memtable中的key数据达到一定的阈值时memtable变为immutable memtable然后创建一个新的memtable。引入immutable memtable可以有效避免 memtable 的读写冲突竞争从而避免阻塞提高系统性能Minor Compact 将immutable memtable的数据写入磁盘的流程在Level 0生成一个新的SSTable当某个 Level 中的 SSTable 文件数量或容量达到阈值时会触发该 Level 文件和下一个 Level 文件的合并操作这个过程会生成新的SSTable文件删除旧的SSTable文件 SSTable数据持久化到磁盘后的数据结构保存的是排序后的数据。每个SSTable包含多个存储数据的文件成为segment每个segment内部是有序的由于是追加写不用的SSTable可能存在相同的key 数据写入 数据写入的流程如下 写入日志文件Write-Ahead Log, WAL 当有新的 key-value需要写入时首先将其追加到顺序写的日志文件中。这个操作称为预写日志Write-Ahead Logging用于系统崩溃时数据的还原保证了数据的一致性和可靠性。写入Memtable 将新的key-value写入内存中的数据结构数据结构通常为跳表或红黑树保证了数据的有序性。数据读取时有限读取Memtable如Memtable中存在可以迅速响应提高了读取性能。Memtable to SSTable 当内存中写入的数量达到一定的阈值时将内存中的数据写入到磁盘的SStable的segmnet中此过程写入的数据是有序的。SSTable的合并 SSTable可以根据一定的策略进行合并如时间、文件大小或其他条件合并操作过程中消除重复的key和已经删除的key生成新的SSTable文件。数据读取 查询memtable如查询不到查询mmutable memtable查询mmutable memtable如查询不到查询SSTable查询SSTable 查询SSTable时通常从最新的segment扫描扫描全部segment直至查询到对应数据。当扫描某个特定的segment时由于该segment内部的数据是有序的因此可以使用二分查找的方式在O(logn)的时间内得到查询结果。但对于二分查找来说要么一次性把数据全部读入内存要么在每次二分时都消耗一次磁盘 IO当 segment 非常大时这两种情况的代价都非常高。通常使用稀疏索引的方式优化查询策略。稀疏索引 上图为kafka利用稀疏索引查询的机制。 稀疏索引的原理是将数据切分成多个小块以多个小块作为一个单位由于数据有序性仅需将每个单位开头的数据作为索引即可。 有了稀疏索引我们可以现在索引表中利用二分法快速定位要查询的key在哪个数据块中仅从磁盘中读取这一小块数据即可获取查询结果IO代价较小。 稀疏索引虽然提高了查询性能但是当查询结果不在SSTable中时我们不得不扫描完所有的segment针对这种情况通常使用布隆过滤器解决该问题。 布隆过滤器是一种空间效率极高的算法能够快速地检测一条数据是否在数据集中存在。我们只需要在写入每条数据之前先在布隆过滤器中登记一下在查询时即可断定某条数据是否缺失。 布隆过滤器的内部依赖于哈希算法当检测某一条数据是否见过时有一定概率出现假阳性False Positive但一定不会出现假阴性False Negative。也就是说当布隆过滤器认为一条数据出现过那么该条数据很可能出现过但如果布隆过滤器认为一条数据没出现过那么该条数据一定没出现过。这种特性刚好与此处的需求相契合即检验某条数据是否缺失。文件合并 文件合并的目的主要是控制存储数据大小LSM Tree可以按照一定的策略执行文件合并合并后的旧数据会被删除合并后的新数据是有序的合并过程中会消除重复键、删除键以及更新过期键。 数据删除 LSM tree设计一个特殊的标志位称为 tombstone墓碑删除一条数据就是把它的 value 置为tombstone如上图所示在执行文件合并时被删除的数据在合并过程中被清除掉。 合并过程中如存在重复的key通常根据key的时间戳或其他合并策略决定保留哪个版本的数据。 优缺点 具有较高的写入性能和压缩存储适用于写多读少或写入速度较快的场景。通过将写入操作集中在内存和顺序写的日志文件中可以获得较高的写入吞吐量。查询性能也较好通过内存缓存和有序的SSTable文件可以快速定位和检索键值对。合并操作可能会引起较长的停顿时间对于实时性要求较高的系统可能会有影响。 总结 LSM Tree具有较高的写入性能主要通过写入内存和磁盘顺序写实现写入数据时先将数据写入内存当内存达到一定大小时将内存中的数据一次性顺序写入(flush)磁盘生成SSTable中一个segmentsegment内部数据也是有序的读取数据时先查找布隆过滤器如查询不到直接返回key不存在如存在继续查询稀疏索引表查找稀疏索引表根据查询到的范围从磁盘读取数据进而利用二分法读取获取最终结果Segment过多的情况下会导致写性能下降通过文件合并操作消除重复键、删除键以及更新过期键避免产生大量的segment文件达到了数据压缩的目的同时也提高了查询效率 参考 https://zhuanlan.zhihu.com/p/640477369 https://hzhu212.github.io/posts/2d7c5edb https://cloud.tencent.com/developer/article/2011084
http://www.hkea.cn/news/14281187/

相关文章:

  • 网站建设中敬请期待以网站内容建设和运维为主
  • 如何设计营销型网站建设搜索引擎分哪三类
  • 哪些网站织梦cms河南郑州最新事件
  • 建设商务网站需要哪些步骤做宣传网站需要多少钱
  • 织梦网站上线wordpress midway
  • 江苏省现代化实训基地建设网站天河网站开发
  • 网站流量被用完了怎样申请做p2p融资网站
  • 多语言网站建设推广禅城区网站建站建设
  • 竞拍网站做烂了一套完整的vi设计手册
  • 免费自助建站全系统工业设计公司有哪些
  • 班级网站做哪些方面直播软件开发公司
  • 网站建设 金手指 排名22一个网站2级域名多
  • 山东外贸网站建设怎么样在线制作图片上添加盖章带数字的
  • 投资网站建设公司多少钱做茶叶网站的素材
  • 什么网站可以免费做视频的软件胶州网站建设dch100
  • 淄博网站建设同圈科技公司网站制作站制作
  • 上海网站推广公司杭州的地区代码
  • 网站建站平台开发服务外贸建站选择哪个服务器好
  • 广西网站建设运营费用网站开发首选畅扬科技
  • swiper手机网站案例企业网站总结
  • 怎样做自己的网站和发布网站东台建设企业网站
  • 免费网站注册com网站上的图片怎么替换
  • 不是搜索网站的是龙口建网站公司价格
  • 如何利用ftp上传网站wordpress 宋体、
  • 浏览器打开网站WordPress设置文章权限
  • 2017年网站建设招标书网站建设误区
  • 淄博网站网站建设论坛网站搭建
  • 公司做网站的费属于广告费么网站设计师薪资参考
  • 阿里云服务器可以做彩票网站吗高端建站选哪家
  • 哈尔滨网站建设效果名师工作室网站建设 意义