arnis - 在Minecraft中自动生成现实世界
这是一个使用Rust编写的开源项目,可以根据OpenStreetMap的地理空间数据在Minecraft Java版中生成现实世界的任何选定位置,具有很高的细节水平。该项目从Overpass API获取原始数据,包括每个元素(建筑物、墙壁、喷泉、农田等)的坐标节点和描述标签。运行时,它会自动完成数据获取、解析、排序、生成Minecraft世界、创建地面层等过程。
用户可以指定目标区域的经纬度范围坐标,生成相应的Minecraft世界。该项目旨在模块化、性能优化、跨平台支持、全面文档说明和用户友好体验。它欢迎所有人的贡献,无论是修复错误、改进性能、添加新功能还是增强文档。该项目使用GPL-3.0许可证。
https://github.com/louis-e/arnis
Fjall - 可嵌入键值存储引擎
Fjall是一个用Rust编写的基于LSM的可嵌入键值存储引擎。它具有以下特点:
- 线程安全的BTreeMap类API
- 完全安全和稳定的Rust代码
- 支持范围和前缀搜索,支持正向和反向迭代
- 自动后台维护
- 分区(也称为列族),支持跨分区原子语义
- 内置压缩(默认为LZ4)
- 单写入多读取事务(可选)
- 键值分离,支持大blob用例(可选)
- 每个Keyspace是一个单独的逻辑数据库,被分割成多个分区
- 每个分区物理上是单独的LSM树和逻辑集合,但跨分区的写操作是原子的
它不是一个独立服务器、关系数据库或宽列数据库。它对键和值大小有一定限制。Fjall在内部同步以支持多线程访问,并提供了持久性控制等功能。它使用稳定的磁盘格式,并提供迁移路径。该项目还提供了实际示例和文档,欢迎提问、反馈或贡献。项目代码以MIT或Apache-2.0许可开源。
https://github.com/fjall-rs/fjall
value-log - 通用键值对分离存储库的实现
这是一个用Rust编写的通用键值对分离存储库的实现,受到了RocksDB的BlobDB和Titan的启发。它提供了线程安全的API、支持通用KV索引结构(如LSM树)、可选的每个Blob压缩、用于热数据的内存Blob缓存(可在多个值日志之间共享以限制内存使用)以及在线垃圾收集。密钥长度限制为65536字节,值长度限制为2^32字节。它具有稳定的磁盘格式,版本1.0.0后的重大变更将导致主版本号升级和迁移路径。所有源代码使用MIT或Apache-2.0许可,贡献也需要使用这两种许可之一。该库旨在作为键值对分离存储的构建块。
https://github.com/fjall-rs/value-log
lsm-tree - Rust 语言实现的日志结构合并树
这个仓库包含了一个 Rust 语言实现的日志结构合并树(LSM-tree/LSMT)。它提供了一个基本的 LSM 树实现,而不是一个完整的存储引擎。该实现具有以下特性:
- 线程安全的 BTreeMap 类似 API
- 100% 安全和稳定的 Rust 代码
- 支持压缩的基于块的表格
- 支持范围和前缀搜索,支持正向和反向迭代
- 支持分级、(并发)分层和 FIFO 合并策略
- 支持多线程刷新(不可变/密封内存表)
- 使用分区块索引减少内存占用并保持启动时间短
- 支持块缓存将热数据保存在内存中
- 支持 Bloom 过滤器提高点查询性能(可选)
- 支持快照(MVCC)
- 支持键值分离(可选)
- 支持单个删除墓碑("弱"删除)
- 键值大小有限制
该实现提供了多种压缩算法选择(lz4、miniz)和 Bloom 过滤器选项。磁盘格式在 1.0.0 版本后稳定,2.0.0 使用新格式需要手动迁移。所有源代码使用 MIT 或 Apache-2.0 许可证。该仓库还包括一些开发和基准测试的说明。
https://github.com/fjall-rs/lsm-tree
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论