DataForge 项目介绍
什么是 DataForge?
DataForge 是一个为 Rust 开发者打造的高性能随机数据生成与数据库填充解决方案。它专为测试和开发过程中对高质量测试数据的需求而设计。
高性能
基于 Rust 的零成本抽象和多线程并行处理
数据库支持
支持 MySQL、PostgreSQL、SQLite
多语言支持
内置中文、英文、日文等多语言数据生成器
高度可定制
支持自定义生成器、插件系统和灵活配置
安装配置
1
添加依赖
[dependencies]
dataforge = "0.1.0"
# 启用数据库特性
dataforge = { version = "0.1.0", features = ["database"] }
2
验证安装
use dataforge::generators::*;
fn main() {
let name = name::zh_cn_fullname();
let email = internet::email();
println!("姓名: {}, 邮箱: {}", name, email);
}
快速开始
基础数据生成
use dataforge::generators::*;
use serde_json::json;
fn main() -> Result<(), Box> {
let user = json!({
"id": uuid_v4(),
"name": name::zh_cn_fullname(),
"age": number::adult_age(),
"email": internet::email(),
"phone": number::phone_number_cn(),
"created_at": datetime::iso8601()
});
println!("{}", serde_json::to_string_pretty(&user)?);
Ok(())
}
批量数据生成
use dataforge::core::{CoreEngine, GenConfig};
fn main() -> Result<(), Box> {
let config = GenConfig::default();
let engine = CoreEngine::new(config);
// 生成 1000 条数据
let data = engine.generate_batch(1000)?;
println!("成功生成 {} 条数据", data.len());
Ok(())
}
数据生成器
姓名生成器
// 中文姓名
let name = name::zh_cn_fullname();
// 英文姓名
let name = name::en_us_fullname();
// 日文姓名
let name = name::ja_jp_fullname();
地址生成器
// 中国地址
let addr = address::zh_address();
// 美国地址
let addr = address::us_address();
// 省份/州
let province = address::zh_province();
网络数据
// 邮箱地址
let email = internet::email();
// IP 地址
let ip = internet::ipv4_address();
// 域名
let domain = internet::domain_name();
数字生成器
// 中国手机号
let phone = number::phone_number_cn();
// 身份证号
let id = number::id_card_cn();
// 随机年龄
let age = number::adult_age();
日期时间
// ISO8601 格式
let date = datetime::iso8601();
// 中文日期
let cn_date = datetime::chinese_date();
// 生日
let birthday = datetime::birthday();
核心引擎
配置选项
use dataforge::core::{GenConfig, GenerationStrategy};
use dataforge::Language;
let config = GenConfig {
batch_size: 1000, // 批处理大小
locale: Language::ZhCN, // 语言设置
strategy: GenerationStrategy::Random, // 生成策略
null_probability: 0.05, // 空值概率
parallelism: 4, // 并行度
};
生成策略
Random
完全随机生成,适合测试数据多样性
Sequential
按顺序生成,适合需要有序数据的场景
Mixed
混合策略,平衡随机性和有序性
数据库集成
数据库填充
use dataforge::filling::{DatabaseFiller, ConnectionConfig};
#[tokio::main]
async fn main() -> Result<(), Box> {
let config = ConnectionConfig {
connection_string: "mysql://user:pass@localhost:3306/db".to_string(),
max_connections: 10,
connection_timeout: std::time::Duration::from_secs(30),
};
let filler = DatabaseFiller::new(config).await?;
// 填充用户表,生成 10000 条记录
filler.fill_table("users", 10000, &engine).await?;
Ok(())
}
支持的数据库
MySQL
完全支持,包括自动 Schema 推断
PostgreSQL
支持高级数据类型和约束
SQLite
轻量级,适合开发和测试
完整示例
电商用户数据生成
use dataforge::*;
use serde_json::json;
fn generate_ecommerce_users(count: usize) -> Vec {
(0..count).map(|_| {
json!({
"user_id": uuid_v4(),
"username": format!("user_{}", number::integer_range(1000, 9999)),
"email": internet::email(),
"phone": number::phone_number_cn(),
"real_name": name::zh_cn_fullname(),
"gender": if rand::random::() { "男" } else { "女" },
"age": number::adult_age(),
"address": {
"province": address::zh_province(),
"city": address::zh_city(),
"district": address::zh_district(),
"street": address::zh_street()
},
"registration_date": datetime::past_date(),
"last_login": datetime::recent_datetime(),
"is_vip": rand::random::(),
"credit_score": number::integer_range(300, 850)
})
}).collect()
}
fn main() {
let users = generate_ecommerce_users(100);
println!("生成了 {} 个电商用户", users.len());
}
高性能批量生成
use dataforge::core::{CoreEngine, GenConfig, GenerationStrategy};
use dataforge::multithreading::ParallelGenerator;
fn high_performance_generation() -> Result<(), Box> {
let config = GenConfig {
batch_size: 10000,
strategy: GenerationStrategy::Random,
parallelism: num_cpus::get(),
enable_memory_pool: true,
..Default::default()
};
let engine = CoreEngine::new(config);
let parallel_gen = ParallelGenerator::new(engine);
// 并行生成 100 万条数据
let start = std::time::Instant::now();
let data = parallel_gen.generate_parallel(1_000_000)?;
let duration = start.elapsed();
println!("生成 {} 条数据,耗时: {:?}", data.len(), duration);
println!("生成速度: {:.2} 条/秒", data.len() as f64 / duration.as_secs_f64());
Ok(())
}
API 参考
核心模块
CoreEngine
核心数据生成引擎
GenConfig
生成配置管理
GenerationStrategy
生成策略枚举
生成器模块
name::*
姓名生成器函数
address::*
地址生成器函数
internet::*
网络数据生成器
number::*
数字生成器函数
datetime::*
日期时间生成器
数据库模块
DatabaseFiller
数据库填充器
ConnectionConfig
数据库连接配置
SchemaParser
数据库模式解析器
宏和工具
forge!()
数据生成宏
pattern!()
模式生成宏
rand_num!()
随机数生成宏
版本信息
当前版本:0.1.0
最后更新:2025年9月
兼容性:Rust 1.85.1+