From d422ffe3d48d2061b4d3ddeb0c08796e4d71a5fa Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Wed, 5 Feb 2025 17:50:02 +0200 Subject: Remove Recordable trait, implement Python bindings, fixes --- log_db/benches/benchmark.rs | 53 +++++++++++++++++++++++++++++++++------------ log_db/benches/utils.rs | 16 +++++++------- 2 files changed, 47 insertions(+), 22 deletions(-) (limited to 'log_db/benches') diff --git a/log_db/benches/benchmark.rs b/log_db/benches/benchmark.rs index 148c0b4..4c9ad47 100644 --- a/log_db/benches/benchmark.rs +++ b/log_db/benches/benchmark.rs @@ -10,12 +10,17 @@ use utils::*; pub fn upsert_compacted(c: &mut Criterion) { let mut group = c.benchmark_group("upsert_compacted"); let data_dir_obj = tempfile::tempdir().expect("Failed to get tmpdir"); - let data_dir = &data_dir_obj + let data_dir = data_dir_obj .path() .to_str() .expect("Failed to convert tmpdir path to str"); - let mut db = DB::::configure() - .data_dir(&data_dir) + let mut db = DB::configure() + .schema(Inst::schema()) + .primary_key(Inst::primary_key()) + .secondary_keys(Inst::secondary_keys()) + .from_record(Inst::from_record) + .into_record(Inst::into_record) + .data_dir(data_dir) .initialize() .expect("Failed to initialize DB"); @@ -37,12 +42,17 @@ pub fn upsert_compacted(c: &mut Criterion) { pub fn delete_existing_compacted(c: &mut Criterion) { let mut group = c.benchmark_group("delete_existing_compacted"); let data_dir_obj = tempfile::tempdir().expect("Failed to get tmpdir"); - let data_dir = &data_dir_obj + let data_dir = data_dir_obj .path() .to_str() .expect("Failed to convert tmpdir path to str"); - let mut db = DB::::configure() - .data_dir(&data_dir) + let mut db = DB::configure() + .schema(Inst::schema()) + .primary_key(Inst::primary_key()) + .secondary_keys(Inst::secondary_keys()) + .from_record(Inst::from_record) + .into_record(Inst::into_record) + .data_dir(data_dir) .initialize() .expect("Failed to initialize DB"); @@ -71,12 +81,17 @@ pub fn upsert_write_durability(c: &mut Criterion) { for mode in [WriteDurability::Flush, WriteDurability::FlushSync] { group.bench_with_input(BenchmarkId::from_parameter(&mode), &mode, |b, _mode| { let data_dir_obj = tempfile::tempdir().expect("Failed to get tmpdir"); - let data_dir = &data_dir_obj + let data_dir = data_dir_obj .path() .to_str() .expect("Failed to convert tmpdir path to str"); - let mut db = DB::::configure() - .data_dir(&data_dir) + let mut db = DB::configure() + .schema(Inst::schema()) + .primary_key(Inst::primary_key()) + .secondary_keys(Inst::secondary_keys()) + .from_record(Inst::from_record) + .into_record(Inst::into_record) + .data_dir(data_dir) .write_durability(mode.clone()) .initialize() .expect("Failed to initialize DB"); @@ -94,12 +109,17 @@ pub fn get_existing_compacted(c: &mut Criterion) { let mut group = c.benchmark_group("get_existing_compacted"); let data_dir_obj = tempfile::tempdir().expect("Failed to get tmpdir"); - let data_dir = &data_dir_obj + let data_dir = data_dir_obj .path() .to_str() .expect("Failed to convert tmpdir path to str"); - let mut db = DB::::configure() - .data_dir(&data_dir) + let mut db = DB::configure() + .schema(Inst::schema()) + .primary_key(Inst::primary_key()) + .secondary_keys(Inst::secondary_keys()) + .from_record(Inst::from_record) + .into_record(Inst::into_record) + .data_dir(data_dir) .initialize() .expect("Failed to initialize DB"); @@ -129,8 +149,13 @@ pub fn find_by_existing_compacted(c: &mut Criterion) { let data_dir = data_dir_path .to_str() .expect("Failed to convert tmpdir path to str"); - let mut db = DB::::configure() - .data_dir(&data_dir) + let mut db = DB::configure() + .schema(Inst::schema()) + .primary_key(Inst::primary_key()) + .secondary_keys(Inst::secondary_keys()) + .from_record(Inst::from_record) + .into_record(Inst::into_record) + .data_dir(data_dir) .initialize() .expect("Failed to initialize DB"); diff --git a/log_db/benches/utils.rs b/log_db/benches/utils.rs index ed114ea..9f29cc6 100644 --- a/log_db/benches/utils.rs +++ b/log_db/benches/utils.rs @@ -16,30 +16,30 @@ pub struct Inst { pub name: String, pub data: Vec, } -impl Recordable for Inst { - type Field = Field; - fn schema() -> Vec<(Field, Type)> { + +impl Inst { + pub fn schema() -> Vec<(Field, Type)> { vec![ (Field::Id, Type::int()), (Field::Name, Type::string()), (Field::Data, Type::bytes()), ] } - fn primary_key() -> Self::Field { + pub fn primary_key() -> Field { Field::Id } - fn secondary_keys() -> Vec { + pub fn secondary_keys() -> Vec { vec![Field::Name] } - fn into_record(self) -> Vec { + pub fn into_record(self) -> Vec { vec![ Value::Int(self.id), Value::String(self.name), Value::Bytes(self.data), ] } - fn from_record(record: Vec) -> Self { + pub fn from_record(record: Vec) -> Self { let mut it = record.into_iter(); Inst { id: match it.next().unwrap() { @@ -86,7 +86,7 @@ pub fn random_inst(from_id: i64, to_id: i64) -> Inst { } pub fn prefill_db( - db: &mut DB, + db: &mut DB, insts: &mut Vec, n_records: usize, compact: bool, -- cgit v1.3