【Rust日报】CanopyDB - 轻量级、高效的事务性键值存储引擎

科技   2024-10-25 16:03   加拿大  

RustyRatracerr - 高性能计算 (HPC) 光线追踪实验

RustyRatracerr 项目是一个使用 Rust 语言实现的高性能计算 (HPC) 光线追踪实验。作者在家里搭建了一个 4 节点 32 核心的集群,希望通过这个计算密集型任务来实验高性能计算。项目基于 "Ray Tracing In One Weekend" 教程.

https://github.com/Timmoth/RustyRatracerr

CanopyDB - 轻量级、高效的事务性键值存储引擎

CanopyDB是一个用Rust编写的轻量级、高效的事务性键值存储引擎。它针对读取密集型和读写修改型工作负载进行了优化,采用MVCC设计和可选WAL(预写日志),可以比类似的替代品提供更好的写入性能和空间利用率,适用于更广泛的使用场景。

主要特点包括:

  1. 完全事务性API,支持可串行化快照隔离的单写入者模式。
  2. 类似BTreeMap的API,易于与Rust代码集成。
  3. 高效处理大值,并支持透明压缩。
  4. 每个数据库可有多个键空间,键空间管理完全事务化。
  5. 每个环境可有多个数据库,高效共享WAL和页面缓存。
  6. 支持跨数据库原子提交,在多个数据库间保持一致性。
  7. 可定制持久性,从同步提交到定期后台fsync。

CanopyDB在读取性能方面表现出色且稳定,写入性能和空间放大率也不错,有时可与基于LSM树的设计相媲美。该项目始于2020年,是作者对LMDB的一些缺陷(如最大键长510B、强制同步提交等)的不满而酝酿的实验性项目,经过多次重写。该作者希望这个项目能够为他人提供帮助。

https://old.reddit.com/r/rust/comments/1g7w628/canopydb_lightweight_and_efficient_transactional/

异步代码和阻塞代码在Rust语言中的抽象泄漏问题

该文章主要讨论了异步代码和阻塞代码在Rust语言中的抽象泄漏问题。

作者认为,与JavaScript等其他高级语言不同,在Rust中,阻塞代码才是真正的"抽象泄漏",因为它们无法很好地与异步代码交互。相比之下,异步代码可以通过 block_on 等机制从阻塞代码中调用,反之则比较困难。

文章还列出了一个表格,对比了异步代码和阻塞代码相互调用的难易程度。同时也提到了一些特殊情况,如GUI代码虽然使用阻塞语义但表现类似异步代码。

总的来说,作者认为在Rust中,异步代码具有更好的可组合性和可扩展性,而阻塞代码才是真正的"抽象泄漏"。

https://notgull.net/blocking-leaky

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章