Jump to content

NoSQL

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 69.64.235.42 (talk) at 16:39, 8 August 2010 (→‎Architecture: try to explain green badges without too much jargon (fotoguzzi)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computing, NoSQL is a term used to designate databases which differ from classic relational databases in some way. These data stores may not require fixed table schemas, usually avoid join operations and typically scale horizontally. Academics and papers typically refer to these databases as structured storage[1][2][3][4], a term which would include classic relational databases as a subset.

Notable production implementations include Google's BigTable and Amazon's Dynamo.

History

The term NOSQL (Not Only SQL) was used in 1998 as the name for a lightweight open source relational database that did not expose a SQL interface. Its author, Carlo Strozzi, claims that as the NoSQL movement "departs from the relational model altogether it should therefore have been called more appropriately 'NoREL', or something to that effect".[5]

Eric Evans, a Rackspace employee, reintroduced the term in early 2009 when Johan Oskarsson of Last.fm wanted to organize an event to discuss open-source distributed databases.[6] 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 guarantees (the key attributes of classic relational database systems such as MySQL, MS SQL, PostgreSQL, etc).

Architecture

Typical modern relational databases have shown poor performance on data-intensive applications including indexing a large number of documents, serving pages on high-traffic websites and delivering streaming media.[7] They can be efficient only when they are tuned either for small but frequent read/write transactions or for large batch transactions with rare write accesses, while there are demands for data stores capable of heavy workloads with frequent updates.[7] Real-world examples include Digg's 3 TB for green badges (markers that indicate stories upvoted by others in your social network),[8] Facebook's 50 TB for inbox search and eBay's 2 PB overall data.

NoSQL architectures often provide weak consistency guarantees such as eventual consistency and/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. CloudTPS[9]).

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 up by adding more servers, and failure of a server can be tolerated.[10]

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]

Taxonomy

NoSQL implementations can be categorized by their manner of implementation:

Document store
Graph
Key/value store on disk
Key/value cache in RAM
Eventually‐consistent key‐value store
Key-value stores implementing
Ordered key-value store
Multivalue databases
Object database
Tabular
Tuple store
Unknown

See also

References

  1. ^ Hamilton, James (3 November 2009). "Perspectives: One Size Does Not Fit All". Retrieved 13 November 2009.
  2. ^ Lakshman, Avinash; Malik, Prashant. "Cassandra — A Decentralized Structured Storage System" (PDF). Cornell University. Retrieved 13 November 2009. {{cite journal}}: Cite journal requires |journal= (help)
  3. ^ Chang, Fay. "Bigtable: A Distributed Storage System for Structured Data" (PDF). Google. Retrieved 13 November 2009. {{cite journal}}: Cite journal requires |journal= (help); Unknown parameter |coauthors= ignored (|author= suggested) (help)
  4. ^ Kellerman, Jim. "HBase: structured storage of sparse data for Hadoop" (PDF). Retrieved 13 November 2009.
  5. ^ "NoSQL Relational Database Management System: Home Page". Strozzi.it. 2007-10-02. Retrieved 2010-03-29.
  6. ^ "NOSQL 2009". Blog.sym-link.com. 2009-05-12. Retrieved 2010-03-29.
  7. ^ a b Agrawal, Rakesh; et al. (2008). "The Claremont report on database research". SIGMOD Record. 37 (3). ACM: 9--19. doi:http://doi.acm.org/10.1145/1462571.1462573. ISSN 0163-5808. {{cite journal}}: Check |doi= value (help); Explicit use of et al. in: |author= (help); External link in |doi= (help)
  8. ^ "Looking to the future with Cassandra | Digg About". About.digg.com. 2009-09-09. Retrieved 2010-03-29.
  9. ^ "CloudTPS: Scalable Transactions for Web Applications in the Cloud". Globule.org. Retrieved 2010-03-29.
  10. ^ "Cassandra: Structured Storage System over a P2P Network" (PDF). Retrieved 2010-03-29.