LSM-Tree笔记

news2025/2/23 2:03:50

假设Level 0为内存中的Buffer,容量为 B B B,层与层之间的条目数量差 T T T

Tiered

  • Level 1共有 T T T 个runs,每个run的容量均为 B B B
  • Level 2共有 T T T 个runs,每个run的容量均为 T ⋅ B T\cdot B TB
  • Level n共有 T T T 个runs,每个run的容量均为 T n − 1 ⋅ B T^{n-1}\cdot B Tn1B

合并的过程:当Level 0满时,层内排序后写入Level 1。若Level 1此刻也满了,将整个Level 1归并排序后写入Level 2

合并的触发时机: 新的run加入后level满容量时(即runs的数量达到上限时)

操作代价

point query

O ( L ⋅ T ⋅ e − M f i l t e r s N ) O(L\cdot T\cdot e^{-\frac{M_{filters}}{N}}) O(LTeNMfilters),其中 L L L 为层数, e − M f i l t e r s N e^{-\frac{M_{filters}}{N}} eNMfilters 是假阳率
解释:每层有 T T T 个runs,runs之间范围可能重合,因此每个run都要读取,而每个run通过读取栅栏指针来确定目标Key所在的页面,因此每个run最多涉及2次I/O,也就是 O ( 1 ) O(1) O(1)。布隆过滤器帮助减少一次I/O

update

O ( L P ) O(\frac{L}{P}) O(PL),其中 P P P 表示一个页面能够存储的条目数量
解释:一个被更新的条目从Level 0到与最后一层的旧条目合并,共经历了 L L L 次复制(读取、写回),但每次I/O共有 P P P 个条目,因此可以均摊

Leveled

  • Level 1共有 1 个run,容量为 T ⋅ B T\cdot B TB
  • Level 2共有 1 个run,容量为 T 2 ⋅ B T^2\cdot B T2B
  • Level n共有 1 个run,容量为 T n ⋅ B T^{n}\cdot B TnB

合并的过程:当Level 0满时,与Level 1进行层间归并排序后写入Level 1,若Level 1此刻也满了,继续将Level 1和Level 2归并排序

合并的触发时机: 上一层满时

操作代价

point query

( L ⋅ e − M f i l t e r s N ) (L\cdot e^{-\frac{M_{filters}}{N}}) (LeNMfilters)
解释:每层只有 1 个run

update

O ( T ⋅ L P ) O(\frac{T\cdot L}{P}) O(PTL)
解释:每层的run会在与上一层合并 T T T 次后满,而每次合并都会产生复制

示意图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1071748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

周记学习总结

10.3 今天加载出来了一下歌词,并且画了一下旁边的简单动画,然后画了一下下面的评论,今天主要是看了好多歌词滚动并且让它居中的,一直用的是scrollIntoView这个函数,但是这个函数似乎一直没有用,今天了解了…

多自由度工业机械臂机电系统

经过数百万年的进化创造了最通用和完善的工具——人类手臂。我们现代世界中的一切都得益于这个工具。即使到今天,工业界也没有找到比机器人手臂更多功能的工具来在三维空间中操纵物体,机器人手臂本质上是人类手臂的机电复制品。机器人手臂的多功能性确实…

企业关于低代码的需求——PDM 元数据电子审批流

企业关于低代码的需求 PDM 元数据电子审批流 审批流业务场景是现代企业运营中不可或缺的一环。业务流程从某个特定点开始,然后经过一系列的审批节点,完成流程的审批。这些节点通常由不同级别的人员担任,例如主管、经理、财务、法务和总经理等,每个人都扮演着特定的角色和…

阿里云数据库MongoDB恢复到本地

共两种方式,建议使用第二种的逻辑恢复,比较方便快捷 一、下载物理备份文件 下载的格式是xb的,主要跟实例创建时间有关,2019年03月26日之前创建的实例,物理备份文件格式为tar,后面全部都是xb的格式了&#…

DownloadingImages 下载缓存图片,显示图片文字列表

1. 用到的技术点: 1) Codable : 可编/解码 JSON 数据 2) background threads : 后台线程 3) weak self : 弱引用 4) Combine : 取消器/组合操作 5) Publishers and Subscribers : 发布者与订阅者 6) FileManager : 文件管理器 7) NSCache : 缓存 2. 网址: 2.1 测试接口网址: …

docker入门加实战—docker安装并配置阿里云加速

docker入门加实战—docker安装并配置阿里云加速 为什么要学习docker 在开发和部署项目的过程中,经常会遇到如下问题: 软件安装包名字复杂,不知道去哪里找安装软件和部署项目步骤复杂,容易出错 这就是我们今天要学习Docker技术…

7个在Github上的flutter开源程序

阅读大量代码是提高开发技能的最佳方法之一。该开源项目是了解最佳实践、编码风格和许多其他主题的最佳场所。 软件开发最受欢迎的领域之一是跨平台移动应用程序开发。Flutter 是您可以使用的最流行的跨平台移动应用程序开发工具之一。今天,我们将了解 7 个开源 Flu…

sqlalchemy 连接池

报错 sqlalchemy.exc.TimeoutError: QueuePool limit of size 100 overflow 10 reached, connection timed out, timeout 30 (Background on this error at: http://sqlalche.me/e/3o7r) 查看数据库未活动超时时间 show variables like "interactive_timeout";一般…

R可视乎|灯芯柱状图代码解读

简介 这篇推文代码来源于:TidyTuesday,主要想学习如何绘制灯芯柱状图(名字小编瞎取的),最终结果如下: 注释:与普通柱状图相比,灯芯柱状图不仅可以展示随时间变化的总体趋势&#xf…

AQS内部的体系架构

AQS本质上是一个双向队列,加一个状态位state。内部靠Node节点形成队列。 AQS由state和CLH变体的虚拟双端队列组成。 AQS的内部类Node类 属性说明: 内部结构:

继续改进 另外一种方法 还是可以用CourseExend类

优势:可以映射许多类上 很强大 用在名称不统一上 原理 1.先把查询结果包装 取新别名(( 就是结果集的映射() 2.把中结果集映射相应的pojo类上 第一步基于类创建 第二步 注意字属性的写法 teacher 是属性 属性的属性 …

手机待办事项app哪个好?

手机是日常很多人随身携带的设备,手机除了拥有通讯功能外,还能帮助大家高效管理日常工作,借助手机上的待办事项提醒APP可以快速地帮助大家规划日常事务,提高工作的效率。 过去,我也曾经在寻找一款能够将工作任务清晰罗…

33 WEB漏洞-逻辑越权之水平垂直越权全解

目录 前言水平,垂直越权,未授权访问Pikachu-本地水平垂直越权演示(漏洞成因)墨者水平-身份认证失效漏洞实战(漏洞成因)原理越权检测-Burpsuite插件Authz安装测试(插件使用)修复防御方案 前言 越权漏洞文章分享:https://www.cnblogs.com/zhen…

LockSupport是做什么的?深入理解Java的三种线程等待通知机制

文章目录 一、LockSupport概述1、LockSupport是什么2、三种等待唤醒机制3、其他线程等待唤醒方式(了解) 二、代码实例分析1、使用wait()notify()(1)代码实例(2)分析总结 2、使用await()signal()&#xff08…

乌班图20.04简易部署k8s+kuboard第三方面板

1. 问题: 使用官方只能说步骤挺全。 😄出错?出错不管,无论是系统问题,版本兼容问题,网络插件问题,还是防火墙问题,我只能说特异性问题分析检索起来很难很难。 新人很难搞懂&#x…

基于指数趋近律的机器人滑模轨迹跟踪控制算法及MATLAB仿真

机械手是工业制造领域中应用最广泛的自动化机械设备,广泛应用于工业制造、医疗、军工、半导体制造、太空探索等领域。它们虽然形式不同,但都有一个共同的特点,即能够接受指令,并能准确定位到三维(或二维)空间的某一点进行工作。由…

RabbitMQ之topic(主题)Exchange解读

目录 基本介绍 使用场景 演示架构 工程概述 RabbitConfig配置类:创建队列及交换机并进行绑定 MessageService业务类:发送消息及接收消息 主启动类RabbitMq01Application:实现ApplicationRunner接口 基本介绍 在rabbitmq中,…

【目标检测】大图包括标签切分,并转换成txt格式

前言 遥感图像比较大,通常需要切分成小块再进行训练,之前写过一篇关于大图裁切和拼接的文章【目标检测】图像裁剪/标签可视化/图像拼接处理脚本,不过当时的工作流是先将大图切分成小图,再在小图上进行标注,于是就不考…

[NewStarCTF 2023 公开赛道] week1 Crypto

brainfuck 题目描述&#xff1a; [>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<-]>>>>>>>.>----.<-----.>-----.>-----.<<<-.>>..…

深入了解归并排序:原理、性能分析与 Java 实现

归并排序&#xff08;Merge Sort&#xff09;是一种高效且稳定的排序算法&#xff0c;其优雅的分治策略使它成为排序领域的一颗明珠。它的核心思想是将一个未排序的数组分割成两个子数组&#xff0c;然后递归地对子数组进行排序&#xff0c;最后将这些排好序的子数组合并起来。…