NoSQL
In computing, NoSQL is the term used to designate database management systems that differ from classic relational database management systems (RDBMSes) in some way. These data stores may not require fixed table schemas, and 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 that would include classic relational databases as a subset.
History
The term NoSQL 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 NoSQL 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 IBM DB2, MySQL, Microsoft SQL Server, PostgreSQL, Oracle RDBMS, Informix etc.).
The "no:sql(east)" conference 2009 in Atlanta had a strong influence on the NoSQL debate. Its self-conception was "a conference of non-relational data stores", and its motto was "select fun, profit from real_world where relational=false;". Thus, the most common interpretation of "NoSQL" is "non-relational", although NoSQL is not meant as anti-RDBMS, but emphasizes the advantages of Key-Value Stores, Document Databases, and Graph Databases.[citation needed]
Architecture
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.[7] 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, services heavy read/write workloads.[7] Real-world NoSQL deployments include Digg's 3 TB for green badges (markers that indicate stories upvoted by others in a 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, 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] Two systems have been developed that provide snapshot isolation for column stores: Google's Percolator system based on BigTable,[10] and a transactional system for HBase developed at the University of Waterloo.[11] 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.[12]
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.[13]
Taxonomy
![]() | It has been suggested that this article be merged into Comparison of structured storage software. (Discuss) Proposed since March 2011. |
![]() |
NoSQL implementations can be categorized by their manner of implementation:
Document store
Name | Language | Notes |
---|---|---|
Apache Jackrabbit | Java | |
Apache CouchDB | Erlang | |
Lotus Notes | LotusScript Notes Formula Language Java (programming language) Javascript (introduced in 8.5) C & C++ |
MultiValue |
MongoDB | C++ | |
MarkLogic Server | XQuery | XML database |
eXist | XQuery | XML database |
SimpleDB | Erlang | |
Terrastore | Java |
Graph
Name | Language | Notes |
---|---|---|
AllegroGraph | SPARQL | RDF GraphStore |
Neo4j | Java | |
DEX | Java | High-performance Graph Database |
FlockDB | Scala |
Key-value store
Key-value stores are schema-less data stores that allow the application to store its data. The data is usually stored in a datatype of a programming language or an object. Thus, there is no need for a fixed data model.[14] Following types exist:
Eventually‐consistent key‐value store
Hierarchical key-value store
Hosted services
Key-value cache in RAM
- Infinispan, an open source, LGPL licensed data grid platform
- Citrusleaf database
- memcached
- Oracle Coherence
- Redis
- Tuple space
- Velocity
Key-value stores implementing the Paxos algorithm
Key-value stores on disk
- BigTable
- CDB
- Citrusleaf database
- Dynomite
- Keyspace
- membase
- Memcachedb
- Redis
- Tokyo Cabinet
- TreapDB
- Tuple space
Multivalue databases
- Extensible Storage Engine (ESE/NT)
- OpenQM
- Revelation Software's OpenInsight
- Rocket U2
Object database
Ordered key-value store
Tabular
Tuple store
See also
- CAP theorem
- Comparison of object database management systems
- Comparison of structured storage software
- Faceted search
- List of object database management systems
- Triplestore
References
- ^ Hamilton, James (3 November 2009). "Perspectives: One Size Does Not Fit All". Retrieved 13 November 2009.
- ^ Lakshman, Avinash; Malik, Prashant. "Cassandra — A Decentralized Structured Storage System" (PDF). Cornell University. Retrieved 13 November 2009.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^
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) - ^ Kellerman, Jim. "HBase: structured storage of sparse data for Hadoop" (PDF). Retrieved 13 November 2009. [dead link]
- ^ "NoSQL Relational Database Management System: Home Page". Strozzi.it. 2 October 2007. Retrieved 29 March 2010.
- ^ "NOSQL 2009". Blog.sym-link.com. 12 May 2009. Retrieved 29 March 2010.
- ^ a b Agrawal, Rakesh; et al. (2008). "The Claremont report on database research" (PDF). 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
(help)|doi=
- ^ "Looking to the future with Cassandra | Digg About". About.digg.com. 9 September 2009. Retrieved 29 March 2010.
- ^ "CloudTPS: Scalable Transactions for Web Applications in the Cloud". Globule.org. Retrieved 29 March 2010.
- ^ "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 15 October 2010.
- ^ "Supporting Multi-row Distributed Transactions with Global Snapshot Isolation Using Bare-bones [[HBase]]" (PDF). The 11th ACM/IEEE International Conference on Grid Computing (Grid 2010), Oct 25-29, 2010, Brussels, Belgium. Retrieved 15 October 2010.
{{cite web}}
: URL–wikilink conflict (help) - ^ "Cassandra: Structured Storage System over a P2P Network" (PDF). Retrieved 29 March 2010.
- ^ "Consistent Join Queries in Cloud Data Stores". Globule.org. Retrieved 31 January 2011.
- ^ Marc Seeger (21 September 2009). "Key-Value Stores: a practical overview". http://www.slideshare.net/marc.seeger/keyvalue-stores-a-practical-overview: slideshare. Retrieved 9 March 2010.
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.
{{cite web}}
: External link in
(help)|location=
- ^ "Riak: An Open Source Scalable Data Store". 28 November 2010. Retrieved 28 November 2010.
External links
- [1] on [ODBMS.ORG: NoSQL Data Stores Section]
- NoSQL User Group on LinkedIn
- nosql-discussion on Google Groups
- nosqldatabases.com
- myNoSQL: news, articles and links about NoSQL
- nosql-databases.org
- computerworld.com : No to SQL? Anti-database movement gains steam
- Is Microsoft Feeling the "NoSQL" Heat?
- Information Week "The NoSQL Alternative"
- How RDF Databases Differ from Other NoSQL Solutions
- CouchOne
- NoSql Tapes