X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=schema.sql;h=1c6e84e66fc2a07fd8ff1ec6b69bd5012dd5f74c;hb=0347920b621a8feaf16d5f48f33bbe1b238fc896;hp=2cca99a34d367888c0c36c41d5715dcd5114ad8b;hpb=2f5d9b51edebfd70f0e427dfb27ecb496bf53fe0;p=cumulus.git diff --git a/schema.sql b/schema.sql index 2cca99a..1c6e84e 100644 --- a/schema.sql +++ b/schema.sql @@ -16,10 +16,11 @@ create table segments ( segmentid integer primary key, segment text unique not null, path text, - checksum text + checksum text, + size integer ); --- Index of all blocks which have been stored in a snapshot, by checksum. +-- Index of all blocks which have been stored, by checksum. create table block_index ( blockid integer primary key, segmentid integer not null, @@ -32,6 +33,13 @@ create table block_index ( create index block_content_index on block_index(checksum); create unique index block_name_index on block_index(segmentid, object); +-- Summary of segment utilization for each snapshots. +create table segments_used ( + snapshotid integer not null, + segmentid integer not null, + utilization real +); + -- Index tracking which blocks are used by which snapshots. create table snapshot_contents ( blockid integer, @@ -39,21 +47,3 @@ create table snapshot_contents ( ); create unique index snapshot_contents_unique on snapshot_contents(blockid, snapshotid); - --- Summary statistics for each segment. -create view segment_info as select * from - (select segmentid, max(timestamp) as mtime, - sum(size) as size, count(*) as objects - 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 - (select blockid from snapshot_contents) group by segmentid); - --- 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/(u+0.1) as benefit from - (select segmentid, - cast(used as real) / size as u, julianday('now') - mtime as age - from segment_info) -where benefit > 0;