LSM-Tree简单介绍

news2024/9/24 16:33:20

前言

这里完成每日的创作要求,用一下自己看论文整理的LSM-Tree理论

2.1 LSM-Tree 基础理论

LSM Tree 组织

总共有n+1层,代表L0到Ln

每个级别将键值对存储在不可变的固定大小文件中(类似于HDFS的块设定),每个文件有几个 MiB,在持久化存储中被称为SSTables。

每个 SSTable 将 KV 对分组到几个 KiB 大小的数据块中,并保留一个索引块,用于存储 SSTable 中所有数据块的键范围和偏移量(存于SSTable 内部)。
为了实现高效的范围查询,每个 SSTable 按键对所有 KV 对进行排序,并且同一级别(L0 除外)的所有 SSTable 都具有不相交的键范围。此外,Li(2 ≤ i ≤ n)的总大小通常是其较低级别 Li−1 的数倍(例如,RocksDB [16] 中的 10 倍)

Writes

put(key, value) 操作符将一个键值对写入 LSM 树。它首先将键值对附加到预写日志 (WAL) 中,用于崩溃恢复。

然后将键值对写入内存中的可变结构,称为 MemTable。当 MemTable 已满时,它将转换为不可变的 MemTable,该 MemTable 将被刷新并成为磁盘上 L0 中的 SSTable;刷新的键值对也将从 WAL 中删除。SSTables 中的键值对通过压缩迁移到更高级别,步骤如下:

  1. 在 Li (0 ≤ i ≤ n − 1) 中选择 SSTable,并在 Li+1 中选择具有重叠键范围的多个 SSTable
  2. 合并排序所有键值对并丢弃任何无效(陈旧)的键值对,以及
  3. 将活动(非陈旧)键值对作为新 SSTable 写入 Li+1。压缩后,每个级别(L0 除外)的所有键值对都保持排序,因此可以通过二分搜索来查询 Li(i ≥ 1)中的键。请注意,压缩会导致写入放大,因为它会将有效的键值对重写到新的 SSTable 中。

Reads

get(key) 操作符读取给定键的 KV 对并返回其值。它首先搜索当前写入的 MemTable 和内存中的不可变 MemTable,然后从 LSM 树的低级到高级搜索磁盘上的 SSTable。因此**,它会导致读取放大,**因为它经常向不同级别的 SSTable 发出多个随机读取。为了加速读取,每个 SSTable 中的索引块都维护一个布隆过滤器 [6] 来快速检查键是否存在。此外,经常访问的索引块和数据块会缓存在内存中的块缓存中。

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

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

相关文章

【Python进阶】带你了解Python的学习路线,从入门到进阶,附带项目演练和源码!!!

Python学习资料 基础知识 Python简介 Python是一种高级编程语言,具有简单易学、可读性强、可移植性好等特点。它广泛应用于Web开发、数据科学、人工智能等领域。 Python编程语言 Logo Python环境搭建 在开始学习Python之前,你需要先安装Python解释器…

什么是公园智慧公厕系统?公园智慧厕所主要功能有哪些@卓振思众

公园智慧公厕是一种利用现代信息技术手段,对公园内的公共厕所进行智能化管理和服务的设施,【卓振思众】智慧公厕系统具有以下特点和功能: 一、环境监测空气质量监测:配备传感器实时监测公厕内空气质量,如检测到异味、有…

LottieCompositionFactory.fromUrl 加载lottie的json文件

当你使用 LottieCompositionFactory.fromUrl 加载动画时&#xff0c;Lottie 会将下载的动画文件缓存到应用的本地缓存目录下。 LottieCompositionFactory.fromUrl(context, url).addListener(object : LottieListener<LottieComposition> {override fun onResult(result…

逻辑一键导入导出,解决企业多环境数据迁移的难题

在当今复杂多变的商业环境中&#xff0c;系统间的数据迁移、备份与共享成为了确保业务连续性和一致性的关键环节。随着企业规模的不断扩大和业务的日益复杂化&#xff0c;JVS逻辑引擎作为一款集高效、灵活、可扩展性于一身的决策支持系统&#xff0c;还通过其独特的导入导出功能…

一个3GPP协议上有关cell reselection priority的问题

先看些相关协议上的描述&#xff1a; 首先说优先级问题&#xff0c;在小区重选过程中要用到NR freq或者inter RAT LTE 的优先级信息&#xff0c;优先级信息一般可以通过系统消息/RRCRelease/从其他RAT中带过来。系统消息中的NR freq或者inter RAT freq 可能没有带priority信息(…

《深入理解JAVA虚拟机(第2版)》- 第10章 - 学习笔记

第10章 早期&#xff08;编译期&#xff09;优化 10.1 概述 Java语言的编译期是一个不确定的操作过程。之所以这么说是因为有如下三类编译过程&#xff1a; 前端编译器&#xff08;准确来说应该是编译器的前端&#xff09;将java文件编译成class文件的过程。即时编译器&…

国产 LateX 线上平台 LoongTeX 推荐

文章目录 一. 良好的细节处理二. AI集成三. 价格四. 有待优化开发的地方五. 总结 这篇文章是我们的一位用户首发于知乎的评论&#xff0c;文中表达了他对我们产品的用心体验和客观评价。我们认为这篇文章不仅中肯且富有洞见&#xff0c;因此特别将其重新发布在此&#xff08;配…

兼容pc端和移动端的滑块校验

组件 <template><canvas :class"cvsClass" :width"props.width" :height"props.height" ref"cvs"></canvas> </template><script setup> import { ref, reactive, watch, nextTick } from "vue&q…

力扣: 四数相加II

文章目录 需求代码结尾 需求 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入…

论文解析二: SuperGlue 同时进行特征匹配以及滤除外点的网络

目录 1.SuperGlue摘要2.SuperGlue网络结构2.1 Attentional Graph Neural Network&#xff08; 注意图神经网络&#xff09;2.1.1 KeyPoint Encoder &#xff1a;解决 同时进行特征匹配以及滤除外点的网络2.1.2 Attentional Aggregation 2.2 Optimal Matching Layer (最优匹配层…

ctfshow-PHP反序列化

web254 源码 <?php/* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2020-12-02 17:44:47 # Last Modified by: h1xa # Last Modified time: 2020-12-02 19:29:02 # email: h1xactfer.com # link: https://ctfer.com //mytime 2023-12-4 0:22 */ error_reporting(0)…

【大模型结构】不同技术架构的区别

文章目录 大语言模型技术概述Encoder-onlyDecoder-onlyEncoder-Decoder为什么流行LLM都是Decoder only架构&#xff1f;参考资料 如果你投递的是NLP方向&#xff0c;大模型方向&#xff0c;多模态大模型方向&#xff0c;甚至是人工智能方向&#xff0c;当前大语言模型的技术架构…

基于人工智能的智能个人健康管理系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据采集与预处理模型训练与预测实时健康监控应用场景结论 1. 引言 个人健康管理在现代生活中变得尤为重要&#xff0c;随着人工智能技术的进步&#xff0c;智能健康管理系统可以通过监…

[AI书籍分享]<AI时代,学什么,怎么学 - 和渊>

本文由Markdown语法编辑器编辑完成。 1, 背景: 本书是一位清华大学毕业的生物学博士&#xff0c;和渊老师&#xff0c;现就职于人大附中, 是一名一线的高中生物教师. 她之前已经写过几本关于教育类的书籍&#xff0c;而这本书&#xff0c;则是她针对当前, AI时代迅猛发展的背…

CPU调度算法之FIFS(先来先服务)

摘要 CPU的先来先服务&#xff08;FCFS, First-Come, First-Served&#xff09;任务调度算法是一种最基础且直观的调度方法&#xff0c;它根据任务到达的顺序决定其执行的先后顺序。这种算法以其简单性和公平性在操作系统中占据重要地位&#xff0c;但也存在一些不足&#xff…

【数学建模国赛】前期准备

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;国赛数模准备到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;省略了思考过程&#xff0c;但在这背后凝结了大…

测试3个月,成功入职 “字节”,我的面试心得总结!

今天来给大家讲一下软件测试工程师的面试一些技巧、建议&#xff0c;以及你们在面试过程中需要做的一些准备、注意事项。 很多的小伙伴在刚刚学习完软件测试后就要面临一个问题&#xff1a;就业找工作。找工作要面临的第一件事儿就是面试&#xff0c;很多小伙伴对面试完全是模糊…

【C语言】八大排序实现及稳定性和总结

目录 一、八大排序剖析链接二、排序的稳定性2.1 稳定性作用2.2 如何判断排序算法是否稳定 总结三、八大排序实现及源代码3.1 插入排序3.2 希尔排序3.3 堆排序3.4 快速排序3.4.1 Hoare版&#xff08;左右指针法&#xff09;3.4.2 挖坑法3.4.3 前后指针法3.4.4 三数取中优化3.4.5…

CSP-CCF★★201809-2买菜★★

目录 一、问题描述 二、解答&#xff1a; 三、总结 一、问题描述 问题描述 小H和小W来到了一条街上&#xff0c;两人分开买菜&#xff0c;他们买菜的过程可以描述为&#xff0c;去店里买一些菜然后去旁边的一个广场把菜装上车&#xff0c;两人都要买n种菜&#xff0c;所以也…

MySQL系列—9.Innodb页

目录 磁盘与内存交互的基本单位—页 页结构概述 页的大小 页的上层结构 页的内部结构 1、File Header&#xff08;文件头部&#xff09; 2、File Trailer&#xff08;文件尾部&#xff09; 3、Free Space (空闲空间) 4、User Records (用户记录) 5、Infimum Supremu…