create table snapshots (
snapshotid integer primary key,
name text not null,
+ scheme text,
timestamp real
);
-- List of segments which have been created.
create table segments (
segmentid integer primary key,
- segment text unique not null
+ segment text unique not null,
+ path text,
+ checksum text
);
-- Index of all blocks which have been stored in a snapshot, by checksum.
create view segment_info as select * from
(select segmentid, max(timestamp) as mtime,
sum(size) as size, count(*) as objects
- from block_index natural join segments group by segmentid)
+ from block_index join segments using (segmentid) group by segmentid)
natural join
(select segmentid, sum(size) as used, count(*) as objects_used
from block_index where blockid in
-- Ranking of segments to be cleaned, using a benefit function of
-- (fraction free space)*(age of youngest object).
-create view cleaning_order as select *, (1-u)*age as benefit from
+create view cleaning_order as select *, (1-u)*age/(u+0.1) as benefit from
(select segmentid,
cast(used as real) / size as u, julianday('now') - mtime as age
from segment_info)