自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Overleaf 写论文

Overleaf 写论文的一些配置。

2023-09-05 18:21:04 119

原创 【大坑】一时脑残,Ubuntu彻底卸载Python,导致图形化界面失效

Ubuntu误删python,如何重装图形化界面。

2023-08-14 19:06:34 1037

原创 遇到“c++: 错误:unrecognized command line option ‘-std=c++17’”,CentOS升级GCC版本以支持c++17

遇到“c++: 错误:unrecognized command line option ‘-std=c++17’”,CentOS升级GCC版本以支持c++17

2023-06-21 16:58:36 5247 2

原创 CentOS使用yum安装时报错:File contains no section headers. file: file:///etc/yum.repos.d/katacontainers.

CentOS使用yum安装时报错如下:File contains no section headers.file: file:///etc/yum.repos.d/katacontainers.repo, line: 1'\n'

2023-06-21 15:22:18 1808

原创 diskpart 删除分区,解决U盘变成多分区且无法格式化问题

U盘被拿去做启动盘后,变成了多个分区,无法使用且格式化时显示写保护。于是考虑用diskpart 命令来删除分区。删除过程中注意别选错磁盘和分区。进入【电脑】-【管理】-【磁盘管理】来识别自己要进行操作的磁盘和分区。

2023-05-29 14:10:10 328

原创 C++接口

C++ 接口

2023-03-29 16:01:39 104

原创 HiKV: A Hybrid Index Key-Value Store for DRAM-NVM Memory Systems(USENIX ATC ’17)

在混合内存中实现混合索引键值存储HiKV。需要保持两个索引一致,键值操作(Put、Update、Delete)会增加延迟。HiKV 将slow B+Tree 放在fast DRAM,将 fast hash 放在 slow NVm。异步更新B+Tree以掩盖其延迟。混合索引的可伸缩性需要精心设计。对哈希索引进行分区可以对哈希索引进行分区可以提供良好的可伸缩性,而对B+Tree索引进行分区,由于数据迁移,成本较高。因此 HiKV 采用了分区哈希索引和全局B+Tree 索引。...

2022-08-30 20:46:42 721

原创 NVLSM: A Persistent Memory Key-Value Store Using Log-Structured Merge Tree with...(Trans21)

利用NVM的字节寻址能力,改进LSMTree的compaction方式,实现级联搜索,在不显著增加读放大的情况下降低了写放大。

2022-08-22 17:46:33 250

原创 SLM-DB: Single-Level Key-Value Store with Persistent Memory(FAST 19)

MemTable 的核心数据结构为跳表(SkipList)。跳表的操作,如插入、更新、删除均可用 8bytes 的原子操作完成。采用PM存储MemTable, SLM-DB就不需要依赖于W AL来保证数据一致性。跳表的索引部分不需要提供一致性保证,因为可以从原始数据中快速重建。插入操作:为了保证MemTable中kv的一致性,首先调用内存fence和cacheline flush指令持久化一个新节点,该节点的next指针被设置指向。然后更新其上一个节点的next指针(8字节)指向新节点,并持久化更改。

2022-08-20 17:15:39 586

原创 FlatStore: An Efficient Log-Structured Key-Value Storage Engine for Persistent Memory(清华ASPLOS’20)

将键值存储解耦为一个用于快速索引的易失性索引和一个高效存储的持久日志结构,引入和从而实现高吞吐量、低延迟和多核可伸缩性。在处理当今流行的工作负载时,现有的KV存储会产生大量的小型写操作,这与pm中的持久性粒度不匹配。为了解决这个问题,FlatStore将KV存储解耦为volatile索引和日志结构存储,它使用per-core OpLog管理索引和小型kv,以便更好地支持批处理。Pipelined horizontal batching 提供高吞吐量和低延迟的请求处理。...

2022-08-18 22:40:47 319

原创 MatrixKV:Reducing Write Stalls and Write Amplification in LSM-tree...(ATC2020)

本文提出了一种基于LSM-tree的KV存储,用于DRAM-NVM-SSD存储系统。MatrixKV的设计原则是利用NVM(1)对L0和L1进行更便宜、更细粒度的压实,(2)减小LSM-tree的深度以缓解WA。通过将L0提升到NVM,使用矩阵容器对其进行管理,并使用细粒度列压实L0和L1, 减少了写阻塞减少层数以减少写放大L0建立索引提高读性能。...

2022-08-17 10:55:40 128

原创 Redesigning LSMs for Nonvolatile Memory with NoveLSM(ATC 2018)

NoveLSM,一个持久的基于lsm的键值存储系统,旨在利用非易失性内存,为应用程序提供低延迟和高吞吐量。基于LSM的持久键值存储,如BigTable、LevelDB、HBase、Cassandra和RocksDB,在现代系统中发挥着至关重要的作用,应用范围从web索引、电子商务、社交网络到移动应用。LSMs通过提供内存中的数据访问、缓冲和批处理对磁盘的写入以及强制顺序磁盘访问来实现高吞吐量。这些技术提高了LSM的I/O吞吐量,但同时也带来了与日志记录和压缩成本相关的额外存储和软件级开销。虽然在将更新写入内

2022-07-07 15:49:34 223

原创 LSM-based Storage Techniques: A Survey(2019)

总结关于lsm-tree的研究成果。通常,索引结构可以从两种策略中选择一种来处理更新,即就地更新和非就地更新。一个就地更新结构,比如B+树,直接覆盖旧记录来存储新的更新。这些结构通常是读优化的,因为只存储每个记录的最新版本。但是,这种设计牺牲了写性能,因为更新会产生随机I/o。此外,索引页可以通过更新和删除进行分片,从而降低空间利用率。相比之下,非就地更新结构(如lsm-tree)总是将更新存储到新的位置,而不是覆盖旧的条目。这种设计提高了写性能,因为它可以利用顺序I/o来处理写。它还可以通过不覆盖旧数据

2022-07-05 16:27:17 711

原创 The Past, Present and Future of Indexing on Persistent Memory

第一个专注于PM索引技术的指南。概述PM索引技术,包括范围索引和哈希索引。对比实际PM可用之前和之后提出的设计,总结了常见和有用的设计,讨论该领域潜在的挑战和机会。持久索引是数据库系统中的基本数据结构。传统索引的构建是为了处理块设备的特性,受到低带宽和高延迟的影响。PM技术的进步允许我们构建快速的、单单级持久索引,脱离使用由缓冲池管理的DRAM-SSD层次结构。因为DRAM的可扩展性已经达到极限,现在可扩展PM的想法在十多年前就已出现。制造PM的材料有STT-RAM、memristor、phase chan

2022-07-01 17:03:19 359

原创 4篇Optane DC Persistent Memory Module 测试与评估报告

An Empirical Guide to the Behavior and Use of Scalable Persistent Memory(fast 20)本文将 Optane DC Persistent Memory Module 叫做 Optane DIMMs。Optane DIMMs 不只是“较慢的持久性的DRAM”,其性能更依赖于访问大小、访问类型(读与写)、模式(应该是访问模式:顺序和随机)和并发现程度。此外Optane DIMMs的持久性与英特尔最新处理器提供的架构支持相结合,为软件设

2022-06-07 15:22:17 753

原创 比较并交换(compare and swap, CAS)

比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。...

2022-04-14 15:18:33 1048

转载 B+树并发控制机制

B+树并发控制机制的前世今生

2022-04-14 15:05:04 815

原创 深入理解计算机系统之存储器层次结构

《深入理解计算机系统》存储器层次结构存储系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高速缓存存储器(cache memory)作为存储在相对慢速的主存储器(main memory,主存)中数据和指令子集的缓冲区域。主存存放存储在较大的慢速磁盘上的数据。磁盘常常作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区域。CPU和主存之间作为缓冲区域的高速缓存存储器对应用程序性能的影响最大。1.随机访问存储器RAM

2022-04-02 22:32:50 348

原创 uTree: a Persistent B+-Tree with Low Tail Latency (VLDB 2020)

(一)研究目的通过减少 SROs 和并发干扰来减少 tail latency。(二)研究背景现有的持久性索引主要旨在通过减少持久性开销(减少刷新操作)或减少一致性开销(避免日志记录)来提高吞吐量。本文考虑了另一个性能指标:tail latency尾部延迟(也称为高百分比延迟)是指客户端很少看到的高延迟。例如:“我的服务通常在10毫秒左右响应,但有时需要100毫秒左右”。有1%的请求耗时高于99%的请求耗时,影响用户体验,甚至拖垮服务。引起 tail latency 的两个原因:(1)结构

2022-03-31 10:03:51 808

原创 非易失内存编程

参考:非易失内存编程SFENCE、LFENCE、MFENCE指令mfence, lfence, sfence什么做用?内存屏障CLFLUSHCLFLUSH(Cache Line Flush,缓存行刷回)能够把指定缓存行(Cache Line)从所有级缓存中淘汰,若该缓存行中的数据被修改过,则将该数据写入主存;支持现状:目前主流处理器均支持该指令。CLFLUSHOPTCLFLUSHOPT(Optimized CLFLUSH,优化的缓存行刷回)作用与 CLFLUSH 相似,但其之间的指令级并行度

2022-03-25 17:02:12 782

原创 差分编码 Differential Encoding

Differential Encoding

2022-03-23 16:55:02 14276

原创 Append-only及其使用

Append-only维基百科:Append-only 是计算机数据存储的一种属性,将新数据附加到存储中,但现有数据是不可变的。许多数据结构和数据库实现了不可变对象,有效地使它们的数据结构只能追加。实现仅追加数据结构有很多好处,例如确保数据一致性、提高性能和允许回滚。典型的仅附加数据结构是日志文件。日志结构化文件系统和数据库中的日志结构化数据结构以类似的方式工作:数据发生的每个更改(事务)都由程序记录,并且在检索时程序必须组合在此找到的数据片段日志文件。仅追加数据结构随着时间的推移而增长,越来越多

2022-03-23 09:38:29 2939

原创 Write-ahead logging

维基百科预写式日志(Write-ahead logging,缩写 WAL)是关系数据库系统中用于提供原子性和持久性(ACID属性中的两个)的一系列技术。在使用WAL的系统中,所有的修改在生效之前都要先写入log文件中。log文件中通常包括redo和undo信息。这样做的目的可以通过一个例子来说明。假设一个程序在执行某些操作的过程中机器掉电了。在重新启动时,程序可能需要知道当时执行的操作是成功了还是部分成功或者是失败了。如果使用了WAL,程序就可以检查log文件,并对突然掉电时计划执行的操作内容跟实际上

2022-03-22 22:36:35 185

转载 桶排序简析

桶排序

2022-03-21 09:06:18 78

转载 行/列式存储

数据处理大致可分为两大类,联机事务处理OLTP(on-line transaction processing) 和联机分析处理OLAP(on-line analytical processing)。OLTP与OLAP的区别OLTP是传统关系型数据库的主要应用,用来执行一些基本的、日常的事务处理,比如数据库记录的增、删、改、查等等。而OLAP则是分布式数据库的主要应用,它对实时性要求不高,但处理的数据量大,通常应用于复杂的动态报表系统上。OLTP与OLAP的主要区别:数据处理类型OLTPO

2022-03-18 15:33:26 76

转载 Paxos算法

Paxos 算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。Paxos算法描述Paxos算法分为两个阶段。具体如下:阶段一:(a) Proposer选择一个提案编号N,然后向半数以上的Acceptor发送编号为N的Prepare请求。(b) 如果一个Acceptor收到一个编号为N的Prepare请求,且N大于该Acceptor已经响应过的所有Prepare请求的编号,那么它就会将它已经接受过的编号最大的提案(如果有的话)作为响应反馈给Prop

2022-03-18 13:30:55 92

原创 ACID of Transaction

事务(transaction)具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

2022-03-18 09:48:58 371

原创 DPTree: Differential Indexing for Persistent Memory(VLDB 2019)

(一)研究目的实现崩溃一致性,减少 PM 写入,并保持优秀的读性能。(二)研究背景根据结构特性,现有的 PM 索引研究大致可以分为B+Tree based、Trie-based 和 hybrid(混合) 三种类型。B+Tree based 结构(例如 CDDS-Tree、wB+Tree、NVTree、FPTree、FASTFAIR)在索引更新的关键代码路径上的持久化原语的数量是次优的。Trie-based 结构(例如 WORT)在某些键分布上获得了优异的写性能,但代价是范围扫描效率不佳。对于 hybr

2022-03-17 21:15:33 652

原创 clfB-tree: Cacheline Friendly Persistent B-tree for NVRAM

clfB-tree: Cacheline Friendly Persistent B-tree for NVRAM(ACM Trans 2018)

2022-03-14 11:52:53 869

原创 Evaluating Persistent Memory Range Indexes

Evaluating Persistent Memory Range Indexes,VLDB 2019

2022-03-09 21:15:53 347

原创 BzTree: A High-Performance Latch-free Range Index for Non-Volatile Memory

BzTree: A High-Performance Latch-free Range Index forNon-Volatile Memory,VLDB 2018

2022-01-26 22:53:53 590

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除