Database Design

We have several collections, as follows.


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:// 20160430101010 20 active [c1,c2,c3] single debug syslog udp:// 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


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:// 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':, 'grpc':}
  • 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.