# A Scalable and Semantic Data as a Service Marketplace for Enhancing Cloud-Based Applications
## 1 Introduction
### Related Work
Docker has been used in order to automate the setup of MongoDB and Cassandra clusters [25; 26] and to provide a micro-service architecture [27], but to our knowledge \begin{table}
\begin{tabular}{c c c} \hline \hline
**Data Format** & **Examples** & **Description** \\ \hline Key-Value & Riak, Redis, Couchbase & These databases use a key-value data format in order to create primary keys, which improve their performance when the single primary key architecture is possible. \\  & & These databases provide the advantage of storing all information concerning an object in a single document, using nested documents and arrays. This improves the performance, minimizing the queries needed to retrieve all requested data and removing the need to join tables. It also provides the ability to create indexes based on any datefield in a document, not only primary keys. \\  & & These systems initially resemble an SQL datastore, having columns and rows, but they provide the ability of inserting unstructured data. This is possible because instead of using regular columns, they use column families that are grouped together in order to form a traditional table. \\  & & These datastores are based on the relations between each datapoint, which is called a node. These nodes and the relations between them form clusters of data in the form of graphs. \\ Graph & Neo4J, FlockDB, InfiniteGraph & The datastores perform well when the relation between the data points is more important than or at least as important as that of the actual data contained in the nodes. Their intolerance to horizontal partitioning makes them hard to use in data intensive production environments. \\ \hline \hline \end{tabular}
\end{table} 
Table 1: NoSQL datastore families, examples and short descriptions [21; 23]. it has not been used to combine these two together to provide real-time modifications to the MongoDB cluster (creation, destruction, scaling out, and scaling in). The cluster management schema that MongoDB provides is one of the reasons that it is so popular; it is used by multinational companies, such as MTV Network, Craigslist, SourceForge, EBay, and Square Enix, amongst many others [22]. MongoDB provides scaling out in three layers: the cluster layer, the application layer, and the data layer. The cluster layer consists of the Configuration servers, which handle the indexing and sharding capabilities of the cluster, and identify where data are located and which node to contact for each request. The application layer consists of the Mongos servers. These servers provide the access points of the cluster, and ensure that the cluster is accessible from the outside world, receiving queries and serving responses. Finally, the data layer consists of shard servers, which hold the raw data. They are usually grouped in replica sets in order to ensure data integrity and availability, as each chunk of data is replicated once in each shard server in the same replica set. This means that if an application needs to serve a large number of clients, more Mongos servers can be added to handle the queries. Similarly, if penta-bytes of data need to be stored, more shard servers can be added to enlarge our data storage capacity.