#key-value-store #numbers #constant-time #byte #byte-stream #generator #workload

bin+lib guacamole

Guacamole 提供了一个线性可寻址的随机数生成器

10 个版本 (有破坏性更新)

新版本 0.8.0 2024 年 8 月 19 日
0.6.1 2024 年 1 月 15 日
0.5.0 2023 年 12 月 27 日
0.4.0 2023 年 11 月 13 日
0.2.1 2023 年 7 月 9 日

#60性能分析

Download history 77/week @ 2024-04-29 116/week @ 2024-05-06 232/week @ 2024-05-13 433/week @ 2024-05-20 483/week @ 2024-05-27 921/week @ 2024-06-03 1045/week @ 2024-06-10 270/week @ 2024-06-17 540/week @ 2024-06-24 158/week @ 2024-07-01 620/week @ 2024-07-08 198/week @ 2024-07-15 330/week @ 2024-07-22 182/week @ 2024-07-29 324/week @ 2024-08-05 329/week @ 2024-08-12

每月 1,176 次下载
用于 20 个 Crates (15 个直接使用)

Apache-2.0 协议

70KB
2K SLoC

guacamole

Guacamole 提供了一个线性可寻址的随机数生成器。它提供一个长连续的字节流(2**70 字节值)以及能够在常数时间内寻址到流中任何 64 字节对齐偏移量的能力。这对于需要伪数据的基准测试和其他实验很有用,因为它会在时间上重现相同的数据,只要使用相同的索引和过程。

Guacamole 有用的关键例子之一是大型键值存储工作负载。想象一下,数据库中有 1e12 个键值对。如果没有为它们提供一个大型键值存储来执行工作负载中的数据查询,你将如何跟踪这么多键呢?

一个答案是 guacamole。将 2**64 偏移量划分为 N 个连续范围。使它们大小相等,可以通过除法/模运算实现。N 个范围中的每一个都会生成一个不同的序列,即 2**64/N 字节,这些字节应作为生成工作负载操作的随机性的唯一基础。每次使用相同的种子时,都会得到相同的结果。

使用场景

请根据需要在此处链接。

键值存储工作负载:如上所述,guacamole 被划分为 N 个不同的键,每个都作为一个独立的流。更高级别的随机性可以控制何时生成哪个键,使用那个其他随机源选择 [0, N) 范围内的数字,然后像伪 fn(x: usize) -> [blargh; x] 一样操作。

分布式文件系统工作负载:可以从种子空间中划分文件,然后并行生成,guacamole 的字节与写入的文件字节之间有 1:1 的对应关系。

状态

维护轨道。该库被认为是稳定的,如果一年内没有变化,将被放入维护模式。

范围

这个库提供了瓜胶类型和从Zipf分布中绘制工具的功能。

缺陷

文档

最新文档始终可在docs.rs找到。

依赖项

~0-295KB