Jump to content

NoSQL: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Formatting
Stimpy77 (talk | contribs)
No edit summary
Line 26: Line 26:
* [[Apache Jackrabbit]]
* [[Apache Jackrabbit]]
* [[MongoDB]]
* [[MongoDB]]
* [[RavenDB]]
* [[XML database]]s
* [[XML database]]s
** [[MarkLogic Server]]
** [[MarkLogic Server]]

Revision as of 07:45, 13 June 2010

NoSQL is a movement promoting a loosely defined class of non-relational data stores that break with a long history of relational databases. 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]

Notable production implementations include Google's BigTable and Amazon's Dynamo. However, there are also many publicly available open source variants including HBase and Cassandra.

History

The term NoSQL was first 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] The term was reintroduced in early 2009 by a Rackspace employee, Eric Evans, when Johan Oskarsson of Last.fm wanted to organize an event to discuss open source distributed databases.[6] The name was an attempt to describe the emergence of a growing number of non-relational, distributed data stores that often did not attempt to provide ACID guarantees, in reference to the popular naming scheme for classic relational database systems: 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. 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 the data stores capable of heavy workloads with frequent updates. [7] Real world examples include Digg's 3 TB for green badges,[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., [9] ).

Several NoSQL systems employ a distributed architecture, with the data being held in a redundant manner on several servers, often using a distributed hash table. In this way, the system can be scaled up easily 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. ^ 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.