NoSQL (“Not only Structured Query Language”) database structures or systems provide computer-implemented mechanisms for the storage and retrieval of data that is modeled in means other than the tabular relations that are used in relational databases. By breaking away from the relational storage model and leaving schemas behind, NoSQL databases are free of the limitations put upon them by a tightly bound schema and requirements for applications and structures to join data across tables.
NoSQL database structures commonly provide data through networking, store their data as JavaScript Object Notation (JSON) documents and provide Application Programming Interfaces (API's) in multiple languages. NoSQL document-oriented models, or “document stores,” are designed for storing, retrieving, and managing document-oriented information, also known as semi-structured data. Document-oriented models systems are designed around an abstract notion of a “Document”. One example is MongoDB, an open-source document database that provides high performance, high availability, and automatic scaling.
NoSQL database structures also include graph database models that use graph structures for semantic queries with nodes, edges, and properties to represent and store data. A graph database storage system provides index-free adjacency, wherein every element contains a direct pointer to its adjacent elements and no index lookups are necessary. General graph databases that can store any graph are distinct from specialized graph databases such as triple-stores and network databases. One example of a graph database is Neo4j, a product of Neo Technology, Inc.
NoSQL database structures also include distributed key-value pair database models, and examples include HBase, Accumulo, and Cassandra. HBase is a non-relational, distributed database developed as part of Apache Software Foundation's Apache Hadoop project that runs on top of HDFS (Hadoop Distributed File System) and provides a fault-tolerant way of storing large quantities of sparse data, small amounts of information caught within a large collection of empty or unimportant data. Apache Accumulo is a sorted, distributed key/value store written in Java® and has cell-level access labels and server-side programming mechanisms. (JAVA is a trademark of the Oracle Corporation in the United States or other countries.
Apache Cassandra is a partitioned row store database data model with tunable consistency, having rows organized into tables wherein the first component of a table's primary key is the partition key, rows clustered within a partition by remaining columns of the key, and wherein other columns may be indexed separately from the primary key. Cassandra enables tables to be created, dropped, or altered at runtime, without requiring the blocking of updates and queries, and asynchronous master-less replication allows for low latency operations for all clients.