📌本文采用wolai制作,原文 链接
前文介绍了 std::shared_ptr, 注意到在中解释 enable_shared_from_this的实现原理中,提到了weak_ptr
。今天继续看weak_ptr
的实现。
📌本文采用wolai制作,原文 链接
前文介绍了 std::shared_ptr, 注意到在中解释 enable_shared_from_this的实现原理中,提到了weak_ptr
。今天继续看weak_ptr
的实现。
📌文本采用wolai制作,原文link: https://www.wolai.com/ravenxrz/oRqJQFiQUHU9zSprtUp3tX
原文名: The Bw-Tree: A B-tree for New Hardware Platforms
总结:
本文介绍了Bw-Tree,一种针对新型硬件平台设计的高度优化的B树数据结构。Bw-Tree通过多核优化和与缓存友好的特性,实现了高效的并发操作和数据访问。它的特点是支持delta更新和使用日志结构存储,这有助于提高缓存命中率并减少不必要的磁盘I/O操作。
Bw-Tree的设计考虑到了现代硬件的特点,它包括三个层次:Bw-Tree层、缓存层和闪存层,其中缓存层包含一个映射表,用于跟踪页面的物理位置和内存中的引用。这种映射机制允许Bw-Tree支持delta更新和变长物理页面,同时也使得latch free成为可能(在这篇文章之前,Btree系列还没有latch free的实现)。
文中详细讨论了Bw-Tree的多种操作,如插入、更新、删除、范围扫描、结构修改操作(SMO)和垃圾收集(GC),以及它们是如何在多线程环境下协同工作的。特别地,Bw-Tree采用了一种称为“序列化”的方法来保证操作的原子性和一致性,即使在高度并发的情况下也能保持数据完整性。
实验结果显示,Bw-Tree相对于传统的B树和无锁的跳列表表现出了显著的优势,特别是在高并发和数据密集型工作loads下。这主要得益于其对缓存的高效利用和latch free。
综上所述,Bw-Tree是一种适合现代硬件环境的高效B树实现,其设计巧妙地结合了并发优化、缓存友好性和数据持久化能力,为高性能数据存储和检索提供了强有力的支撑。
特点: 多核优化+cache friendly, update convert to delta, log structured
📌本文采用wolai制作,原文link: https://www.wolai.com/ravenxrz/w8mFh9W9xfoz12i5ENRv74
前文介绍了 std::unique_ptr,本文继续分析另一个常用的智能指针: std::shared_ptr
原文名:Efficient Compactions between Storage Tiers with PrismDB
LSM树针对冷热数据的优化。热放在3D XPoint NVM设备,冷放QLC NAND。
贡献点:
总结:相比 Mutant, 用MSC作为转冷的指标感觉更好。读采用了DRAM Btree和NVM加速,写用NVM slab做buffer,flash上采用sst加速。
redis底层支持多种事件循环,本文仅看epoll类型的。
原名: Mutant: Balancing Storage Cost and Latency in LSM-Tree Data Stores
文章目标: 提供一种无感的 cost-performance trade off 的LSM tree实现,将热数据存在fast storage,冷数据存在cold storage
效果一图以言之:
读完感觉没有太多亮点,不过还是记个笔记。
原名: PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database
PolarFS是 PolarDB 的底层分布式文件系统。
极低延迟和高可用, 充分利用用户态网络/IO栈,激进使用新技术(现在看来都是平常的技术了),包括RDMA、NVMe和SPDK等。 写延迟接近本地SSD。
为了提高io吞吐,PolarFS还开发了ParallelRaft,打破Raft只能顺序提交的约束。
笔者注:整体来看,本篇都是一些当年的新技术的应用,如RDMA,SPKD,核心可以说是os-bypass和zero-copy等工程优化。 架构上没有什么特别的亮点。 当然开发的ParallelRaft笔者没关注,不予评价。