# Gaining Insights into Conceptual Models: A Graph-Theoretic Querying Approach
## 3 Queries and Databases
### NOSQL Databases  
NOSQL databases [15] are emerging alternatives to the most widely used SQL databases--RDBMSs. Commonly interpreted by developers as \"not only SQL databases\", it does not completely replace SQL. Rather, it complements it in a way that enables the two to coexist. NOSQL solves scalability issues that relational databases suffer from due to current sheer data volumes and the resulting performance degradation. Unlike RDBMS, NOSQL is designed to scale up as the data volume grows. The NOSQL data model does not guarantee the ACID properties: Atomicity, Consistency, Isolation, and Durability that are fundamental in SQL databases. Instead, it guarantees the BASE properties: Basically Available, Soft State, and Eventual Consistency. NOSQL follows the Consistency, Availability, and Partition (CAP) {XE \"CAP:Consistency, Availability, Partition\"} tolerance theorem [16], which states that it is impossible for a distributed service to be consistent, available, and partition-tolerant at the same instant in time. Consistency means that all the copies of the data in the system appear the same to the outside observer at all times. Availability means that the system as a whole continues to operate even in cases of node failure. Partition-tolerance requires that the system continues to operate despite an arbitrary message loss, which can result from a crashed router or a broken network link, preventing communication between groups of nodes [17]. NOSQL databases are categorized into the following five types.  
**1. Key-value store:** The data consists of two parts: a string that represents the key and the actual data, referred to as value, creating a \"key-value\" pair. These stores are like hash tables, where the keys are used as indexes. The key-value stores offer significant performance and scalability advantages compared with traditional databases. They achieve these properties through a restricted application programming interface (API) {XE \"APLApplication Programming Interface\"} that limits object retrieval: an object can only be retrieved by the (primary and only) key under which it was inserted [18].  
**2. Column store:** Column-store systems, such as BigTable, Cassandra, Amazon DynamoDB, and RIAK, completely partition a database vertically into a collection of individual columns that are stored separately. By storing each column separately on secondary storage, these column-based systems enable queries to readjust the attributes they need rather than having to read entire rows from that storage and then discard unneeded attributes once they are in memory [19].  
**3. Document stores:** Document stores, such as MongoDB and CouchDB, are tuned to store unstructured (text) or semi-structured (XML, JSON) documents, which are usually hierarchal in nature. Each document consists of a set of keys and values, which are like the key-value databases. Each document in the database stores points to its fields using hashed pointers [20].  
**4. Object-oriented databases:** Object-oriented databases, such as db4o, follow the object-oriented programming languages paradigm, in which the data or information to be stored is represented as an object. Thus, an object-oriented database can be considered a combination of principles from the object-oriented programming and database paradigms [21].  
**5. Graph databases:** Graph databases, such as Neo4j, are built on graphs. As they provide the basis of this work, we elaborate on them next.