#dump #io #download #crates-io #time-series #scripting #tar

db-dump

用于对crates.io数据库转储进行脚本分析库

36次发布

0.7.4 2024年7月5日
0.7.2 2024年5月6日
0.6.0 2024年3月9日
0.4.10 2023年10月18日
0.1.0 2021年3月16日

#112 in 数据库接口

Download history 373/week @ 2024-04-26 271/week @ 2024-05-03 191/week @ 2024-05-10 187/week @ 2024-05-17 131/week @ 2024-05-24 120/week @ 2024-05-31 119/week @ 2024-06-07 111/week @ 2024-06-14 157/week @ 2024-06-21 115/week @ 2024-06-28 357/week @ 2024-07-05 148/week @ 2024-07-12 137/week @ 2024-07-19 439/week @ 2024-07-26 222/week @ 2024-08-02 198/week @ 2024-08-09

1,017 每月下载量
用于 cargo-tally

MIT/Apache

200KB
1.5K SLoC

crates.io数据库转储

github crates.io docs.rs build status

用于对crates.io数据库转储进行脚本分析的库。

这些数据库转储包含crates.io API公开的所有信息,打包成一个单独的下载。每24小时发布一个更新的转储。最新的转储可以在 https://static.crates.io/db-dump.tar.gz 找到。


示例

此仓库的 examples/ 目录包含几个可运行的示例分析。

total‑downloads计算crates.io上所有crate每日的总下载时间序列
crate‑downloads计算一个特定crate的下载时间序列
top‑crates计算最直接依赖的前几个crate
user‑dependencies计算指定用户直接依赖于至少一个crate的crates.io百分比
user‑downloads计算归因于单个指定用户crate的crates.io下载的时间序列

下载最近的数据库转储后,可以使用Cargo运行这些示例中的任何一个

$ wget https://static.crates.io/db-dump.tar.gz
$ cargo run --release --example total-downloads

以下是基本示例 total-downloads 的实现和结果表的图形。它显示了crates.io下载速率每9个月翻一番,或者相当于每2.5年翻10倍!

use chrono::Utc;
use db_dump::Date;
use std::collections::BTreeMap as Map;

fn main() -> db_dump::Result<()> {
    let mut downloads = Map::<Date<Utc>, u64>::new();
    db_dump::Loader::new()
        .version_downloads(|row| {
            *downloads.entry(row.date).or_default() += row.downloads;
        })
        .load("./db-dump.tar.gz")?;

    for (date, count) in downloads {
        println!("{},{}", date, count);
    }

    Ok(())
}
Crates.io downloads per day (log scale)

以下是 user-downloads 示例的图形

Fraction of crates.io downloads that are dtolnay's crates

许可证

根据您的选择,在Apache License, Version 2.0或MIT许可证下许可。
除非您明确表示,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,应按上述方式双重许可,而无需任何附加条款或条件。

依赖关系

~6–16MB
~204K SLoC