In computing, NoSQL (sometimes expanded to "not only SQL") is a broad class of database management systems that differ from the classic model of the relational database management system (RDBMS) in some significant ways. These data stores may not require fixed table schemas, usually avoid join operations, and typically scale horizontally. Academic researchers typically refer to these databases as structured storage,[1][2][3][4] a term that includes classic relational databases as a subset.



Carlo Strozzi used the term NoSQL in 1998 to name his lightweight, open-source relational database that did not expose the standard SQL interface.[5] (Strozzi suggests that, as the current NoSQL movement "departs from the relational model altogether; it should therefore have been called more appropriately 'NoREL', or something to that effect.")[6]

Eric Evans, a Rackspace employee, reintroduced the term NoSQL in early 2009 when Johan Oskarsson of wanted to organize an event to discuss open-source distributed databases.[7] The name attempted to label the emergence of a growing number of non-relational, distributed data stores that often did not attempt to provide ACID (atomicity, consistency, isolation, durability) guarantees, which are the key attributes of classic relational database systems such as IBM DB2, MySQL, Microsoft SQL Server, PostgreSQL, Oracle RDBMS, Informix, Oracle Rdb, etc.

In 2011, work began on UnQL (Unstructured Query Language), a specification for a query language for NoSQL databases.[8] It is built to query collections (versus tables) of documents (versus rows) with loosely defined fields (versus columns). UnQL is a superset of SQL within which SQL is a very constrained type of UnQL for which the queries always return the same fields (same number, names and types). However, UnQL does not cover the data definition language (DDL) SQL statements like CREATE TABLE or CREATE INDEX.[9]


Typical modern relational databases have shown poor performance on certain data-intensive applications, including indexing a large number of documents, serving pages on high-traffic websites, and delivering streaming media.[10] Typical RDBMS implementations are tuned either for small but frequent read/write transactions or for large batch transactions with rare write accesses. NoSQL, on the other hand, can service heavy read/write workloads.[10] Real-world NoSQL deployments include Digg's 3 TB for green badges (markers that indicate stories upvoted by others in a social network)[11] and Facebook's 50 TB for inbox search.[12]

NoSQL architectures often provide weak consistency guarantees, such as eventual consistency, or transactions restricted to single data items. Some systems, however, provide full ACID guarantees in some instances by adding a supplementary middleware layer (e.g., AppScale and CloudTPS).[13][14] Two systems have been developed that provide snapshot isolation for column stores: Google's Percolator system based on BigTable,[15] and a transactional system for HBase developed at the University of Waterloo.[16] These systems, developed independently, use similar concepts to achieve multi-row distributed ACID transactions with snapshot isolation guarantee for the underlying column store, without the extra overhead of data management, middleware system deployment, or maintenance introduced by the middleware layer.

Several NoSQL systems employ a distributed architecture, with the data held in a redundant manner on several servers, often using a distributed hash table. In this way, the system can readily scale out by adding more servers, and failure of a server can be tolerated.[17]

Some NoSQL advocates[who?] promote very simple interfaces such as associative arrays or key-value pairs. Other systems, such as native XML databases, promote support of the XQuery standard.[citation needed] Newer systems such as CloudTPS also support join queries.[18]


NoSQL implementations can be categorized by their manner of implementation:

Document store

Name Language Notes
BaseX Java, XQuery XML database
Apache CouchDB Erlang
eXist XQuery XML database
Jackrabbit Java
Lotus Notes and IBM Lotus Domino LotusScript, Java, IBM X Pages, others MultiValue
MarkLogic Server XQuery XML database
MongoDB C++ BSON (Binary format JSON)
OrientDB Java
SimpleDB Erlang
Terrastore Java


Name Language Notes
AllegroGraph SPARQL RDF GraphStore
DEX Java, C# High-performance Graph Database
InfiniteGraph Java High-performance, scalable, distributed Graph Database
Neo4j Java
OrientDB Java
FlockDB Scala
Sones GraphDB C# Graph database with query language called GraphQL

Key-value store

Key-value stores allow the application to store its data in a schema-less way. The data could be stored in a datatype of a programming language or an object. Because of this, there is no need for a fixed data model.[19] The following types exist:

Eventually‐consistent key‐value store

  • Apache Cassandra
  • Dynamo
  • Hibari
  • Project Voldemort
  • Riak [20]

Hierarchical key-value store

Hosted services

Key-value cache in RAM

Key-value stores on disk

Ordered key-value stores

Multivalue databases

Object database


Tuple store

  • Apache River
  • Tarantool

See also


  1. ^ Hamilton, James (3 November 2009). "Perspectives: One Size Does Not Fit All".,guid,afe46691-a293-4f9a-8900-5688a597726a.aspx. Retrieved 13 November 2009. 
  2. ^ Lakshman, Avinash; Malik, Prashant. Cassandra — A Decentralized Structured Storage System. Cornell University. Retrieved 13 November 2009. 
  3. ^ Chang, Fay; Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber. Bigtable: A Distributed Storage System for Structured Data. Google. Retrieved 13 November 2009. 
  4. ^ Kellerman, Jim. "HBase: structured storage of sparse data for Hadoop". Retrieved 13 November 2009. [dead link]
  5. ^ Lith, Adam; Jakob Mattson (2010). "Investigating storage solutions for large data: A comparison of well performing and scalable data storage solutions for real time extraction and batch insertion of data" (PDF). Göteborg: Department of Computer Science and Engineering, Chalmers University of Technology. p. 15. Retrieved 2011-05-12. "Carlo Strozzi first used the term NoSQL in 1998 as a name for his open source relational database that did not offer a SQL interface[...]" 
  6. ^ "NoSQL Relational Database Management System: Home Page". 2007-10-02. Retrieved 2010-03-29. 
  7. ^ "NOSQL 2009". 2009-05-12. Retrieved 2010-03-29. 
  8. ^
  9. ^ Avram, Abel (04). "Interview: Richard Hipp on UnQL, a New Query Language for Document Databases". Retrieved 7 September 2011. 
  10. ^ a b Agrawal, Rakesh et al. (2008). "The Claremont report on database research". SIGMOD Record (ACM) 37 (3): 9–19. doi: ISSN 0163-5808. 
  11. ^ "Looking to the future with Cassandra | Digg About". 2009-09-09. Retrieved 2010-03-29. 
  12. ^ "Cassandra". 2008-08-25. Retrieved 2011-08-19. 
  13. ^ "Datastore Agnostic Transaction Support for Cloud Infrastructures". IEEE. 2011-07-04. 
  14. ^ "CloudTPS: Scalable Transactions for Web Applications in the Cloud". Retrieved 2010-03-29. 
  15. ^ "Large-scale Incremental Processing Using Distributed Transactions and Notifications". The 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2010), Oct 4–6, 2010, Vancouver, BC, Canada. Retrieved 2010-10-15. 
  16. ^ "Supporting Multi-row Distributed Transactions with Global Snapshot Isolation Using Bare-bones HBase". The 11th ACM/IEEE International Conference on Grid Computing (Grid 2010), Oct 25-29, 2010, Brussels, Belgium. Retrieved 2010-10-15. 
  17. ^ "Cassandra: Structured Storage System over a P2P Network" (PDF). Retrieved 2010-03-29. 
  18. ^ "Consistent Join Queries in Cloud Data Stores". Retrieved 2011-01-31. 
  19. ^ Marc Seeger (2009-09-21). "Key-Value Stores: a practical overview". slideshare. Retrieved 2010-03-09. "Key value stores allow the application developer to store schema-less data. This data is usually consisting of a string that represents the key, and the actual data that is considered to be the value in the "key - value" relationship. The data itself is usually some kind of primitive of the programming language (a string, an integer, an array) or an object that is being marshalled by the programming languages bindings to the key value store. This replaces the need for fixed data model and makes the requirement for properly formatted." 
  20. ^ "Riak: An Open Source Scalable Data Store". 28 November 2010. Retrieved 28 November 2010. 

External links

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • NoSQL — (steht für englisch Not only SQL) ist eine Bewegung, eine neue Art von Datenbanken voranzutreiben. Es handelt sich dabei um Datenbanken, die einen nicht relationalen Ansatz verfolgen und damit mit der langen Geschichte von relationalen… …   Deutsch Wikipedia

  • NoSQL — (англ. not only SQL, не только SQL), в информатике  термин, обозначающий ряд подходов, проектов, направленных на реализацию моделей баз данных, имеющих существенные отличия от используемых в традиционных реляционных СУБД с доступом к… …   Википедия

  • Nosql — est un mouvement relatif aux bases de données, entamé au printemps 2009. Le terme se réfère à certaines données non relationnelles stockées. Des tendances dans les architectures informatiques visent à améliorer les bases de données dans une… …   Wikipédia en Français

  • NoSQL — es un término usado en informática para agrupar una serie de almacenes de datos no relacionales que no proporcionan garantías ACID. Normalmente no tienen esquemas fijos de tablas ni sentencias join .[1] Contenido 1 Historia del término 2 Ventajas …   Wikipedia Español

  • NoSQL — En informatique, NoSQL est un buzzword pour désigner une catégorie de système de gestion de base de données (abr. SGBD) destinés à manipuler des bases de données géantes pour des sites web de très grande audience tels que Google,,… …   Wikipédia en Français

  • NoSQL (RDBMS) — This article is about a specific relational database management system. For for a class of non relational database management systems, see NoSQL. NoSQL is a shell based relational database management system that runs under Unix like operating… …   Wikipedia

  • Strozzi NoSQL (RDBMS) — NoSQL (wird manchmal auch nosequel gelesen) ist ein von Carlo Strozzi entwickeltes portables relationales Datenbankverwaltungssystem. Es ist eigentlich ein Softwarewerkzeug auf Unix Shell Ebene, das keine willkürlichen Einschränkungen hat, außer… …   Deutsch Wikipedia

  • Cloud database — A cloud database is a database running on Cloud Computing platform, such as Amazon EC2, GoGrid and Rackspace. There are two common deployment models: Users can run databases on the cloud independently, using a Virtual Machine image, or they can… …   Wikipedia

  • Теорема CAP — (известная также как теорема Брюера), в информатике  эвристическое утверждение о том, что в любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств: согласованность данных… …   Википедия

  • MongoDB — Developer(s) 10gen Initial release 2009 Stable release 2.0.1 / October 22, 2011; 31 days ago ( …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.