Add "intent" field to a snapshot.
[cumulus.git] / schema.sql
1 -- We maintain a local index of data blocks that have been previously stored
2 -- for constructing incremental snapshots.
3 --
4 -- The index is stored in an SQLite3 database.  This is its schema.
5
6 -- List of snapshots which have been created.
7 create table snapshots (
8     snapshotid integer primary key,
9     name text not null,
10     scheme text,
11     timestamp real,
12     intent real
13 );
14
15 -- List of segments which have been created.
16 create table segments (
17     segmentid integer primary key,
18     segment text unique not null,
19     path text,
20     checksum text,
21     mtime real,
22     size integer
23 );
24
25 -- Index of all blocks which have been stored, by checksum.
26 create table block_index (
27     blockid integer primary key,
28     segmentid integer not null,
29     object text not null,
30     checksum text,
31     size integer,
32     timestamp real,
33     expired integer
34 );
35 create index block_content_index on block_index(checksum);
36 create unique index block_name_index on block_index(segmentid, object);
37
38 -- Summary of segment utilization for each snapshots.
39 create table segments_used (
40     snapshotid integer not null,
41     segmentid integer not null,
42     utilization real
43 );
44
45 -- Overall estimate of segment utilization, for all snapshots combined.
46 create view segment_info as
47 select segmentid, mtime, size, cast(size * utilization as integer) as used,
48        utilization
49 from segments join
50      (select segmentid, max(utilization) as utilization
51       from segments_used group by segmentid)
52 using (segmentid);