use std::{fs, time::Duration};
use rstorage::{
storage::{Config, DiskConfig, PartitionConfig, Storage, StorageError},
DataPoint, Row,
};
fn main() -> Result<(), StorageError> {
let data_path = String::from("./examples/simple");
let storage = Storage::new(Config {
partition: PartitionConfig {
hot_partitions: 2,
max_partitions: 10,
duration: 100,
},
disk: Some(DiskConfig {
data_path: data_path.clone(),
encode_strategy: rstorage::EncodeStrategy::Gorilla,
}),
sweep_interval: Some(1),
..Default::default()
})?;
let batch_size = 500;
let batches = 5;
let sleep_time_secs = 1;
let ts = 1600000000;
for i in 0..batches {
for j in 0..batch_size {
let timestamp = ts + (i * batch_size + j);
if let Err(e) = storage.insert(&Row {
metric: "my_metric",
data_point: DataPoint {
timestamp,
value: 0.1,
},
}) {
println!(
"error inserting data point at timestamp {}: error: {}",
timestamp, e
);
}
}
println!("inserted {} metrics", batch_size);
std::thread::sleep(Duration::from_secs(sleep_time_secs));
}
storage.close()?;
fs::remove_dir_all(data_path).unwrap();
Ok(())
}