+ # turn on low_mem for databases with more than 100000 records!
+ if (! $self->{low_mem} && $size > 100000) {
+ $log->warn("Using on-disk storage instead of memory for input data. This will affect performance.");
+ $self->{low_mem}++;
+ }
+
+ # running with low_mem flag? well, use DBM::Deep then.
+ if ($self->{'low_mem'}) {
+ $log->info("running with low_mem which impacts performance (<32 Mb memory usage)");
+
+ my $db_file = "data.db";
+
+ if (-e $db_file) {
+ unlink $db_file or $log->logdie("can't remove '$db_file' from last run");
+ $log->debug("removed '$db_file' from last run");
+ }
+
+ require DBM::Deep;
+
+ my $db = new DBM::Deep $db_file;
+
+ $log->logdie("DBM::Deep error: $!") unless ($db);
+
+ if ($db->error()) {
+ $log->logdie("can't open '$db_file' under low_mem: ",$db->error());
+ } else {
+ $log->debug("using file '$db_file' for DBM::Deep");
+ }
+
+ $self->{'db'} = $db;
+ }
+