LSM
文章平均质量分 73
西西弗的小蚂蚁
不要辜负这美好的时光!
展开
-
Towards Designing and Learning Piecewise Space-Filling Curves
我们的想法是根据数据和查询工作负载属性为不同的子空间设计不同的bmp,以优化查询性能。根据我们的想法设计的SFC将包含多个bmp,每个bmp对应于一个子空间,我们将得到的SFC称为分段SFC。在本文中,我们提出了一种新的SFC,称为分段SFC,它对不同的数据子空间采用不同的映射方案。一个常见的问题是,每种类型的SFC都有自己固定的映射方案/功能,无法调整以适应不同的数据集。我们建议将BMTree的构建建模为马尔可夫决策过程(MDP)[38],旨在开发数据驱动的解决方案,为不同的子空间设计合适的bmp。原创 2023-06-26 20:53:23 · 53 阅读 · 0 评论 -
Reducing Write Amplification of LSM-Tree with Block-Grained Compaction
它们会降低lsm树的写和读性能。为了解决这些问题,我们提出了一种新的合并方案——块合并方案,该方案采用块粒度的合并策略来执行LSM-tree上的合并操作。此外,我们还分析了块合并的副作用,并提出了3种优化方法:(1)选择性合并,通过将表合并与块合并相结合来减少块合并带来的空间放大;与许多key-value存储如LevelDB和RocksDB采用的传统的SSTable-grained compaction(在本文中我们称之为表合并)不同,块合并只读取合并操作涉及的数据块,而不是读取整个SSTable。原创 2022-11-01 20:54:10 · 7 阅读 · 0 评论 -
Adaptive Lower-Level Driven Compaction to Optimize LSM-Tree Key-Value Stores
为了同时优化延迟和吞吐量,本文提出了一种新的底层驱动合并(Lower-level Driven Compaction, LDC)方法,它打破了传统上层驱动合并的限制,自底向上触发实际的合并操作,既降低了合并粒度以获得更小的延迟,又减少了写放大以获得更高的吞吐量。实验结果表明,与现有方法相比,ALDC显著降低了延迟,同时获得了更高且更稳定的吞吐量。Sk)相比Ei(详见第3节),压缩过程中额外的I/ o(即涉及的底层数据的I/ o)大大减少,以提高LSM-tree KV存储的实际吞吐量。原创 2022-10-06 13:58:57 · 2 阅读 · 0 评论 -
CruiseDB: An LSM-Tree Key-Value Store with Both Better Tail Throughput and Tail Latency
CruiseDB根据对LSM-tree服务能力的可靠估计,自适应地在单位时间内只允许适当数量的用户请求进入LSM-tree内存缓冲区,消除了请求处理的内部障碍,具有防止写停顿现象导致SLA下降的优点。因此,内存缓冲区与I/O设备之间的数据流是通过压缩实现的,这与I/O设备中不同LSM-tree层之间的数据流是相同的。虽然SLA下降的直接原因是内存不足或Level 0过大导致的写停顿,但吞吐量和尾延迟周期性变化的本质原因是过多的写请求被允许进入LSM-tree KV存储,超出了系统的处理能力。原创 2022-10-06 13:45:42 · 5 阅读 · 0 评论 -
Less is More: De-amplifying I/Os for Key-value Stores with a Log-assisted LSM-tree
此外,废弃和删除的kv会在早期删除,而不会下滚到更低的级别,这避免了不必要的I/ o,释放了占用的磁盘空间。第三,日志还会延迟对lsm树的修改,这就为影响多个结构的修改(例如重叠的更新、删除)提供了一个机会,可以将这些修改合并到更少的操作中。然而,随着层次的加深,磁盘IO量的增长率也会增加。(1)内存结构:与经典的LSM-tree类似,L2SM保留了LSM-tree的两个内存结构,MemTable和ImmuTable,作为一个暂存缓冲区,将小的、随机的KV条目组织成大的、顺序的I/ o。原创 2022-10-06 11:28:31 · 7 阅读 · 0 评论 -
Breaking Down Memory Walls: Adaptive Memory Management in LSM-based Storage Systems
为打破写内存和缓冲区缓存之间的内存墙,进一步引入一个内存调优器,调整这两个区域之间的内存分配。在分区内存组件结构中,刷新的sstable是范围分区的,原始的L0结构不适合,因为不重叠的sstable不会对查询产生负面影。写内存和缓冲区缓存之间找到一个最优的内存分配,以最小化每个操作的I/O成本。为了最大化内存利用率,我们提出使用一个分区的内存LSM-tree来管理写内存,称为分区内存组件。由于lsm树的更新设计错位,在多个lsm树的内存组件之间以及写内存和缓冲缓存之间建立了存储墙。原创 2022-10-05 18:00:50 · 1 阅读 · 0 评论 -
Reducing Write Amplification of LSM-Tree with Block-Grained Compaction
图3显示了我们设计中的索引块的数据结构。我们观察到,新的sstable中的许多数据块与合并的sstable中的数据块相同。在重写所有脏块后,为所有有效数据块建立一个新的索引块,包括旧数据块(如图2中Li+1中的第二个和第四个数据块)和新的数据块。在最坏的情况下,如果重叠的SSTable中所有的数据块都是脏的,那么块合并将产生与表合并类似的写放大,但会导致2倍的空间开销。为了在修改的sstable中搜索键值对,我们为sstable重建一个新的索引块来定位所有有效的数据块,包括修改的数据块和未受影响的数据块。原创 2022-10-05 16:10:09 · 4 阅读 · 0 评论 -
The LSM RUM-Tree: A Log Structured Merge R-Tree for Update-intensive Spatial Workloads
基于真实空间数据的实验结果表明,与现有的LSM R-tree实现相比,LSM RUM-tree在更新操作上最高可获得9.6倍的加速,在查询处理上最高可获得2400倍的加速。本文提出了LSM RUM-Tree,一种基于LSM的R-tree,它利用内存更新备忘录(In -memory Update Memo,简称UM)来支持更新密集型的空间工作负载,同时具有优异的搜索性能。特别地,我们将介绍LSM RUM-tree,它演示了在基于LSM的Rtree中使用更新备忘录来增强r树的插入、删除、更新和搜索操作的性能。原创 2022-10-05 11:30:38 · 4 阅读 · 0 评论 -
Constructing and Analyzing the LSM Compaction Design Space
基于lsm的引擎提供了高效的数据采集和具有竞争力的读取性能,同时能够管理各种优化目标,如写入和空间放大。我们的第一个贡献是引入了一组4个可以正式定义任何合并策略的设计原语:(i)合并触发器,(ii)数据布局,(iii)合并粒度,以及(iv)数据移动策略。本文提出LSM压缩设计空间,它使用4个原语来定义压缩:(i)压缩触发器,(ii)数据布局,(iii)压缩粒度和(iv)数据移动策略。因此,大多数基于lsm的引擎使用固定的压缩策略,通常由工程师亲自挑选,由工程师决定如何以及何时压缩数据。原创 2022-10-05 11:17:10 · 9 阅读 · 0 评论 -
Spooky: Granulating LSM-Tree Compactions Correctly
(1)被合并的文件通常没有完全重叠的键范围,因此在每次合并中,一些不重叠的数据会被多余的重写。𝐿级别(最大的级别)被划分为文件,每个文件最多包含𝑁𝐿/𝑇字节,其中𝑁𝐿是𝐿级别的数据大小,𝑇是lsm树的大小比率。级别𝐿−1(第二大级别)也划分为文件,每个文件的键范围最多与一个级别𝐿的文件重叠。Spooky将lsm树的最大层划分为大小相等的文件,然后根据最大层的文件边界对后续的几个最大层进行划分。Spooky将最大级别的数据划分为大小相等的文件,并基于最大级别的文件边界将较小级别的数据划分。原创 2022-10-04 23:09:12 · 7 阅读 · 0 评论