aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2024-11-21 15:40:45 +0200
committerJan Tuomi <jan@jantuomi.fi>2024-11-21 15:40:45 +0200
commit1c3e5f3c1735545e5d7fe45c1fce36874ecc7949 (patch)
treea0059dde525367bc2e643c4e00f7fde5b9d1266c
parent1de933f892691780d60c5148c456245feb026a90 (diff)
Remove memtable_capacity
-rw-r--r--log_db/benches/benchmark.rs52
-rw-r--r--log_db/src/lib.rs12
-rw-r--r--log_db/tests/integration.rs2
-rw-r--r--py_bindings/src/lib.rs6
4 files changed, 0 insertions, 72 deletions
diff --git a/log_db/benches/benchmark.rs b/log_db/benches/benchmark.rs
index 12fda92..ee3f81b 100644
--- a/log_db/benches/benchmark.rs
+++ b/log_db/benches/benchmark.rs
@@ -128,7 +128,6 @@ pub fn get_from_disk_various_initial_sizes(c: &mut Criterion) {
.expect("Failed to convert tmpdir path to str");
let mut db = DB::configure()
.data_dir(&data_dir)
- .memtable_capacity(0)
.fields(vec![
(Field::Id, RecordField::int()),
(Field::Name, RecordField::string()),
@@ -159,7 +158,6 @@ pub fn get_from_disk_various_initial_sizes_compacted(c: &mut Criterion) {
.expect("Failed to convert tmpdir path to str");
let mut db = DB::configure()
.data_dir(&data_dir)
- .memtable_capacity(0)
.fields(vec![
(Field::Id, RecordField::int()),
(Field::Name, RecordField::string()),
@@ -180,55 +178,6 @@ pub fn get_from_disk_various_initial_sizes_compacted(c: &mut Criterion) {
}
}
-pub fn get_various_memtable_capacities(c: &mut Criterion) {
- let mut group = c.benchmark_group("get_various_memtable_capacities");
-
- const PREFILL_N: usize = 10000;
- let data_dir_obj = tempfile::tempdir().expect("Failed to get tmpdir");
- let data_dir = &data_dir_obj
- .path()
- .to_str()
- .expect("Failed to convert tmpdir path to str");
-
- // Create a db instance for prefilling
- let mut db = DB::configure()
- .data_dir(&data_dir)
- .fields(vec![
- (Field::Id, RecordField::int()),
- (Field::Name, RecordField::string()),
- (Field::Data, RecordField::bytes()),
- ])
- .primary_key(Field::Id)
- .initialize()
- .expect("Failed to initialize DB");
-
- prefill_db(&mut db, PREFILL_N, false).expect("Failed to prefill DB");
- drop(db);
-
- // prefill_db generates IDs between 0..1000, so having memtable_capacity = 1000
- // effectively indexes the whole DB
- for size in (0..).map(|x| x * 100).take_while(|&x| x <= 1000) {
- group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &_size| {
- let mut db = DB::configure()
- .data_dir(&data_dir)
- .fields(vec![
- (Field::Id, RecordField::int()),
- (Field::Name, RecordField::string()),
- (Field::Data, RecordField::bytes()),
- ])
- .memtable_capacity(size)
- .primary_key(Field::Id)
- .initialize()
- .expect("Failed to initialize DB");
-
- b.iter(|| {
- let id = random_int(0, 1000 + 1);
- let _ = db.get(black_box(&Value::Int(id)));
- });
- });
- }
-}
-
// Register the benchmark group
criterion_group!(
benches,
@@ -237,6 +186,5 @@ criterion_group!(
upsert_write_durability,
get_from_disk_various_initial_sizes,
get_from_disk_various_initial_sizes_compacted,
- get_various_memtable_capacities,
);
criterion_main!(benches);
diff --git a/log_db/src/lib.rs b/log_db/src/lib.rs
index 68db7fd..d7b10eb 100644
--- a/log_db/src/lib.rs
+++ b/log_db/src/lib.rs
@@ -26,7 +26,6 @@ use uuid::Uuid;
pub struct ConfigBuilder<Field: Eq + Clone + Debug> {
data_dir: Option<String>,
segment_size: Option<usize>,
- memtable_capacity: Option<usize>,
fields: Option<Vec<(Field, RecordField)>>,
primary_key: Option<Field>,
secondary_keys: Option<Vec<Field>>,
@@ -38,7 +37,6 @@ impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<Field> {
ConfigBuilder::<Field> {
data_dir: None,
segment_size: None,
- memtable_capacity: None,
fields: None,
primary_key: None,
secondary_keys: None,
@@ -61,13 +59,6 @@ impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<Field> {
self
}
- /// The maximum size of a single memtable in terms of records.
- /// Note that each secondary index will have its own memtable.
- pub fn memtable_capacity(&mut self, memtable_capacity: usize) -> &mut Self {
- self.memtable_capacity = Some(memtable_capacity);
- self
- }
-
/// The field schema of the database.
pub fn fields(&mut self, fields: &[(Field, RecordField)]) -> &mut Self {
self.fields = Some(fields.to_vec());
@@ -101,7 +92,6 @@ impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<Field> {
let config = Config::<Field> {
data_dir: self.data_dir.clone().unwrap_or("db_data".to_string()),
segment_size: self.segment_size.unwrap_or(4 * 1024 * 1024), // 4MB
- memtable_capacity: self.memtable_capacity.unwrap_or(1_000_000),
fields: self
.fields
.as_ref()
@@ -129,7 +119,6 @@ impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<Field> {
struct Config<Field: Eq + Clone> {
pub data_dir: String,
pub segment_size: usize,
- pub memtable_capacity: usize,
pub fields: Vec<(Field, RecordField)>,
pub primary_key: Field,
pub secondary_keys: Vec<Field>,
@@ -815,7 +804,6 @@ mod tests {
let mut db = DB::configure()
.data_dir(data_dir.to_str().unwrap())
- .memtable_capacity(0)
.fields(&[(Field::Id, RecordField::int())])
.primary_key(Field::Id)
.initialize()
diff --git a/log_db/tests/integration.rs b/log_db/tests/integration.rs
index fa81542..e5befa7 100644
--- a/log_db/tests/integration.rs
+++ b/log_db/tests/integration.rs
@@ -85,7 +85,6 @@ fn test_upsert_and_get_without_memtable() {
let data_dir = tmp_dir();
let mut db = DB::configure()
.data_dir(&data_dir)
- .memtable_capacity(0)
.fields(&[
(Field::Id, RecordField::int()),
(Field::Name, RecordField::string().nullable()),
@@ -371,7 +370,6 @@ fn test_log_is_rotated_when_capacity_reached() {
let mut db = DB::configure()
.data_dir(&data_dir)
- .memtable_capacity(0) // disable memtables
.segment_size(10 * record_len) // small log segment size
.fields(&[
(Field::Id, RecordField::int()),
diff --git a/py_bindings/src/lib.rs b/py_bindings/src/lib.rs
index 7810500..d1341d0 100644
--- a/py_bindings/src/lib.rs
+++ b/py_bindings/src/lib.rs
@@ -60,8 +60,6 @@ struct Config {
#[pyo3(get, set)]
segment_size: Option<usize>,
#[pyo3(get, set)]
- memtable_capacity: Option<usize>,
- #[pyo3(get, set)]
fields: Option<Vec<(Field, RecordField)>>,
#[pyo3(get, set)]
primary_key: Option<Field>,
@@ -81,9 +79,6 @@ impl Config {
if self.segment_size.is_some() {
config.segment_size(self.segment_size.unwrap());
}
- if self.memtable_capacity.is_some() {
- config.memtable_capacity(self.memtable_capacity.unwrap());
- }
if self.fields.is_some() {
let mut fields = Vec::new();
for (field, record_field) in self.fields.as_ref().unwrap() {
@@ -191,7 +186,6 @@ impl DB {
Config {
data_dir: None,
segment_size: None,
- memtable_capacity: None,
fields: None,
primary_key: None,
secondary_keys: None,