# Database Design We have several collections, as follows. ## Host Track the information of a Host. A typical host may look like: id | name | worker_api | create_ts | capacity | status | clusters | type | log_level | log_type | log_server | autofill | schedulable ---| ------ | ------------------- | -------------- | -------- | -------- | ------- | ------- | --------- | -------- | ----------- | -------- | ----------- xxx | host_0 | tcp://10.0.0.1:2375 | 20160430101010 | 20 | active | [c1,c2,c3] | single | debug | syslog | udp://10.0.0.2:5000 | true | true * id (str): uuid of the host instance * name (str): human-readable name * worker_api (str): Through which url to access the Docker/Swarm Daemon * create_ts (datetime): When to add the host * capacity (int): Maximum number of chains on that host * status (str): 'active' (Can access daemon service) or 'inactive' (disconnected from daemon service) * clusters (list): List of the ids of those chains on that host * type (str): 'singe' (single Docker host) or 'swarm' (Docker Swarm cluster) * log_level (str): logging level for chains on the host, e.g., 'debug', 'info', 'warn', 'error' * log_type (str): logging type for chains on the host, 'local' or 'syslog' * log_server (str): log server address, only valid when `log_type` is 'syslog' * autofill (str): whether to autofill the server to its capacity with chains, 'true' or 'false' * schedulable (str): whether to schedule a chain request to that host, 'true' or 'false', useful when maintain the host ## Cluster Track information of one blockchain. A typical cluster may look like: id | service_url | name | user_id | host_id | worker_api | consensus_plugin | consensus_mode | create_ts | apply_ts | release_ts | duration | size | containers | health --- | --------------- | --------- | -------- | ------- | ------------------- | ---------------- | -------------- | ------------- | -------- | ---------- | ------- | ------- | ------- | ------ xxx | {} | cluster_A | "" | host_xx | tcp://10.0.0.1:2375 | pbft | batch | 20160430101010 | 20160430101010 | | | 4 | [vp0,vp1,vp2,vp3] | OK * id (str): uuid of the host instance * service_url (dict): urls to access the services on the chain, e.g., {'rest':10.0.0.1:7050, 'grpc':10.0.0.1:7051} * name (str): human-readable name * user_id (str): Which user occupies this chain, empty for no occupation * host_id (str): Where the chain exists * worker_api (str): Through which url to access the Docker/Swarm Daemon * consensus_plugin (str): Consensus plugin name * consensus_mode (str): Consensus plugin mode name * create_ts (datetime): When to create the chain * apply_ts (datetime): When the chain is applied * release_ts (datetime): When to release the chain * duration (str): How long the chain lives * size (int): Peer nodes number of the chain * containers (list): List of the ids of those containers for the chain * health (str): 'OK' (healthy status) or 'Fail' (Not healthy) Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.