This guide intended to give a high level overview of the ObjectRocket system.
ObjectRocket is a Database as a Service based on the popular MongoDB database. The ObjectRocket infrastructure has been designed for MongoDB, and isn't based on another cloud service or infrastructure provider.
When a user creates an instance on ObjectRocket, they are immediately and automatically provisioned an entire sharded cluster. This includes:
Once an instance is created, users can add shards at any time or the RocketScale component may add shards if the disk usage threshold has been exceeded. The threshold is set in the settings tab for each instance.
A plan is a unit of storage assigned to a shard. When you create an instance with ObjectRocket you give it a plan size. This is the size that shards are added in. Plans range from 5GB up to hundreds of GB. You can choose a plan size that fits your expected workload and thus tune your cluster specifically for it. For example, if the workload was very insert intensive, but with a 80GB data set size, choosing a 5GB plan and having 10 shards would be good. However, if there was more data, but less requirements for queries, then a larger size may make size.
When a shard is added, it's added in the plan size. If the instance is a 5GB plan, then adding another shard will add another 5GB, bringing the total to 10GB of addressable space. When a new shard is added, the balancer will kick off and balance the data between the nodes and keep the workload roughly balanced (by disk space size).
ObjectRocket is based on the native MongoDB sharding design. Thus shard keys must be defined. If a shard key is not defined, then ObjectRocket can't balance the data out, and adding shards won't help and the single shard could fill up. So defining shard keys is an essential component on ObjectRocket. In order to define a shard key, use the web interface to create a collection. The create collection function has a spot to define the key you want to shard on. Here is a great guide on the topic.