USE cloudbridge; SET foreign_key_checks = 0; DROP TABLE IF EXISTS shost; DROP TABLE IF EXISTS mhost; DROP TABLE IF EXISTS mhost_mount; DROP TABLE IF EXISTS sbucket; DROP TABLE IF EXISTS sobject; DROP TABLE IF EXISTS sobject_item; DROP TABLE IF EXISTS meta; DROP TABLE IF EXISTS acl; DROP TABLE IF EXISTS usercredentials; -- storage host CREATE TABLE shost ( ID BIGINT NOT NULL AUTO_INCREMENT, Host VARCHAR(128) NOT NULL, HostType INT NOT NULL DEFAULT 0, -- 0 : local, 1 : nfs ExportRoot VARCHAR(128) NOT NULL, MHostID BIGINT, -- when host type is local, MHostID points to its owner management host UserOnHost VARCHAR(64), UserPassword VARCHAR(128), PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- management host CREATE TABLE mhost ( ID BIGINT NOT NULL AUTO_INCREMENT, MHostKey VARCHAR(128) NOT NULL, -- host key could be derived from MAC address or named configuration value Host VARCHAR(128), -- public host address for redirecting request from/to Version VARCHAR(64), LastHeartbeatTime DATETIME, PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE mhost_mount ( ID BIGINT NOT NULL AUTO_INCREMENT, MHostID BIGINT NOT NULL, SHostID BIGINT NOT NULL, MountPath VARCHAR(256), -- local mount path LastMountTime DATETIME, -- null : unmounted, otherwise the mount location PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE sbucket ( ID BIGINT NOT NULL AUTO_INCREMENT, Name VARCHAR(64) NOT NULL, OwnerCanonicalID VARCHAR(150) NOT NULL, SHostID BIGINT, CreateTime DATETIME, VersioningStatus INT NOT NULL DEFAULT 0, -- 0 : initial not set, 1 : enabled, 2 : suspended PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE sobject ( ID BIGINT NOT NULL AUTO_INCREMENT, SBucketID BIGINT NOT NULL, NameKey VARCHAR(255) NOT NULL, OwnerCanonicalID VARCHAR(150) NOT NULL, NextSequence INT NOT NULL DEFAULT 1, DeletionMark VARCHAR (150), CreateTime DATETIME, PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE sobject_item ( ID BIGINT NOT NULL AUTO_INCREMENT, SObjectID BIGINT NOT NULL, Version VARCHAR(64), MD5 VARCHAR(128), StoredPath VARCHAR(256), -- relative to mount point of the root StoredSize BIGINT NOT NULL DEFAULT 0, CreateTime DATETIME, LastModifiedTime DATETIME, LastAccessTime DATETIME, PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE meta ( ID BIGINT NOT NULL AUTO_INCREMENT, Target VARCHAR(64) NOT NULL, TargetID BIGINT NOT NULL, Name VARCHAR(64) NOT NULL, Value VARCHAR(256), PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE acl ( ID BIGINT NOT NULL AUTO_INCREMENT, Target VARCHAR(64) NOT NULL, TargetID BIGINT NOT NULL, GranteeType INT NOT NULL DEFAULT 0, -- 0 : Cloud service user, 1 : Cloud user community, 2: Public user community GranteeCanonicalID VARCHAR(150), -- make it big enought to hold a Cloud API access key Permission INT NOT NULL DEFAULT 0, -- 0 : no permission, 1 : read, 2 : write, 4 : read_acl, 8 : write_acl GrantOrder INT NOT NULL DEFAULT 0, CreateTime DATETIME, LastModifiedTime DATETIME, PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- each account has to have a separate -- each account has to have a separate mappings CREATE TABLE usercredentials ( ID BIGINT NOT NULL AUTO_INCREMENT, AccessKey VARCHAR(150) NOT NULL, SecretKey VARCHAR(150) NOT NULL, CertUniqueId VARCHAR(200), PRIMARY KEY(ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; SET foreign_key_checks = 1;