计算机基础之:LSM树

使用过hbase、cassandra之类nosql数据库的小伙伴对LSM树结构应该有所耳闻,那么这种数据结构有哪些优劣势呢,本文做下简单介绍。

LSM(全称:Log-Structured Merge Tree)是一种广泛应用于现代数据库和存储系统的数据结构,尤其适合于写密集型应用场景。想象一下LSM如同一个高效的图书馆管理系统,我们通过它的优势与劣势来形象生动地描述这一概念。

优势:高效快速的图书归档与检索

  1. 高速录入:想象图书馆每天都要接收大量新书,LSM就像一个拥有高效自动分类机的图书馆,新书一到就立刻被贴上标签(日志记录),快速放入暂存区(内存表),无需立刻按索引整理到书架上(磁盘的有序数据结构),大大加快了书籍的录入速度,对应于数据库中的快速写入。

  2. 后台整理:到了夜深人静的时候,图书馆闭馆,LSM开始它的工作------将暂存区的书按照一定规则(合并策略)整理到书架上,这个过程称为合并(Merge),使得书架上的书籍有序,便于下次查找,对应于数据库在后台合并小文件,减少查询时的I/O操作。

  3. 高效查询:尽管书籍的最终位置可能在多次合并后才确定,但LSM通过维护一个指向书籍最新位置的索引(内存索引),让读者(查询)能迅速找到所需书籍,保证了查询的效率。

劣势:查找与空间的权衡

  1. 查询延迟:虽然有即时索引,但在极端情况下,如果一本书刚被借走(数据还未合并到磁盘的有序部分),读者可能需要在多个暂存区查找,增加了查询的复杂性和潜在延迟,就像读者需要翻阅多个书目清单才能找到书的新位置。

  2. 空间开销:LSM的后台合并过程会产生一定的空间冗余,就像图书馆在整理书籍时,旧的索引卡可能还在,新的索引卡已生成,这期间会有数据的重复存储。同时,频繁的合并操作也意味着更多的磁盘I/O操作,可能会影响整体的存储效率。

  3. 写放大:在数据从内存表迁移到磁盘的整个过程中,数据可能会被多次复制和合并,这就像书籍在从暂存区转移到书架的过程中,可能要经过几个中间的分类区域,增加了写操作的总量,即所谓的"写放大"。

综上所述,LSM如同一个高效但略显复杂的图书管理系统,它通过牺牲一定程度的查询效率和存储空间,换取了极高的数据写入速度,特别适合那些需要快速处理大量写入请求的场景,如在线日志处理、大数据存储等。

相关推荐
云和数据.ChenGuang1 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天4 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构
Data跳动4 小时前
Spark内存都消耗在哪里了?
大数据·分布式·spark