Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.

org/wiki/NoSQL

NoSQL
From Wikipedia, the free encyclopedia

Contents
1 Basics
2 History
3 Taxonomy
3.1 Classification based on data model
3.2 Classification based on feature
4 Examples
4.1 Document store
4.2 Graph
4.3 Key–value stores
4.3.1 KV - eventually consistent
4.3.2 KV - hierarchical
4.3.3 KV - cache in RAM
4.3.4 KV - solid state or rotating disk
4.3.5 KV - ordered
4.4 Object database
4.5 Tabular
4.6 Tuple store
5 Others
5.1 Triple/Quad Store (RDF) database
5.2 Hosted
5.3 Multivalue databases
5.4 See also
5.5 References
5.6 Further reading
5.7 External links

Basics
A NoSQL database provides a mechanism for storage and retrieval of data that uses looser consistency
models than traditional relational databases. Motivations for this approach include simplicity of design,
horizontal scaling and finer control over availability. NoSQL databases are often highly optimized
key–value stores intended for simple retrieval and appending operations, with the goal being significant
performance benefits in terms of latency and throughput. NoSQL databases are finding significant and
growing industry use in big data and real-time web applications. NoSQL systems are also referred to as "Not
only SQL" to emphasize that they do in fact allow SQL-like query languages to be used.

ACID vs BASE NoSQL cannot necessarily give full ACID guarantees. Usually eventual consistency is
guaranteed or transactions limited to single data items. This means that given a sufficiently long period of
time over which no changes are sent, all updates can be expected to propagate eventually through the
system.[citation needed].

1 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

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

Eric Evans (then 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.[3] The name attempted
to label the emergence of a growing number of non-relational, distributed data stores that often did not
attempt to provide atomicity, consistency, isolation and durability guarantees that are key attributes of classic
relational database systems.[4]

Taxonomy
There have been various approaches to classify NoSQL databases, each with different categories and
subcategories. Because of the variety of approaches and overlappings regarding the nonfunctional
requirements and the feature-set it could be difficult to get and maintain an overview of the nonrelational
database market. Nevertheless, the most basic classification that most would agree is one based on the data
model. A few of these and their prototypes are:

Column: Hbase, Cassandra


Document: MongoDB, Couch, Raven
Key-value : Dynamo, Riak, Azure, Redis, Cache, GT.m
Graph: Neo4J, Allegro, Virtuoso, Bigdata

For a more complete list of the nearly 150 different NoSQL databases, with more standard classification, see
http://nosql-database.org/

Classification based on data model


Stephen Yen in his blog post "A yes for NoSQL taxonomy" suggests the following:

2 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

Term Matching Database


KV Store keyspace Flare SchemaFree RAMCloud
KV Store - Eventually
Dynamo Voldemort Dynomite SubRecord Mo8onDb Dovetaildb
consistent
KV Store - Ordered TokyoTyrant Lightcloud NMDB Luxio MemcacheDB Actord
Memcached Repcached Coherence Infinispan EXtremeScale JBossCache
KV Cache
Velocity Terracoqua
Tuple Store Gigaspaces Coord ApacheRiver
Object Database ZopeDB DB40 Shoal
CouchDB MongoDB Jackrabbit XML-Databases ThruDB CloudKit Prsevere
Document Store
Riak-Basho Scalaris
Wide Columnar Store Bigtable Hbase Cassandra Hypertable KAI OpenNeptune Qbase KDI

Classification based on feature


Ben Scofield categorized NoSQL databases (cf. [Sco10]) based on nonfunctional categories (“(il)ities“) plus
a rating of their feature coverage:

Data Model Performance Scalability Flexibility Complexity Functionality


Key-Value Stores high high high none variable (none)
Column Store high high moderate low minimal
Document Store high variable (high) high low variable (low)
Graph Database variable variable high high graph theory
Relational Database variable variable low moderate relational algebra.

See also: Comparison of structured storage software

Examples
Document store
Main articles: Document-oriented database and XML database

The central concept of a document store is the notion of a "document". While each document-oriented
database implementation differs on the details of this definition, in general, they all assume that documents
encapsulate and encode data (or information) in some standard formats or encodings. Encodings in use
include XML, YAML, and JSON as well as binary forms like BSON, PDF and Microsoft Office documents
(MS Word, Excel, and so on).

Different implementations offer different ways of organizing and/or grouping documents:

Collections
Tags

3 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

Non-visible Metadata
Directory hierarchies

Compared to relational databases, for example, collections could be considered as tables as well as
documents could be considered as records. But they are different: every record in a table has the same
sequence of fields, while documents in a collection may have fields that are completely different.

Documents are addressed in the database via a unique key that represents that document. One of the other
defining characteristics of a document-oriented database is that, beyond the simple key-document (or
key–value) lookup that you can use to retrieve a document, the database will offer an API or query language
that will allow retrieval of documents based on their contents. Some NoSQL document stores offer an
alternative way to retrieve information using MapReduce techniques, in CouchDB the usage of MapReduce
is mandatory if you want to retrieve documents based on the contents, this is called "Views" and it's an
indexed collection with the results of the MapReduce algorithms.

Name Language Notes


BaseX Java, XQuery XML database
Cloudant Erlang, Java, Scala, C JSON store (online service)
Clusterpoint C++ XML, geared for Full text search
Couchbase Server Erlang, C++ Support for JSON and binary documents
Apache CouchDB Erlang JSON database
djondb[5][6][7] C++ JSON, ACID Document Store
ElasticSearch Java JSON, Search Engine
eXist Java, XQuery XML database
Jackrabbit Java Java Content Repository implementation
IBM Lotus Notes and Lotus LotusScript, Java, IBM X
MultiValue
Domino Pages, others
XML database with support for JSON, text,
MarkLogic Server XQuery, Java, REST
and binaries
MongoDB C++, C#, Go BSON store (binary format JSON)
Oracle NoSQL Database Java, C
OrientDB Java JSON, SQL support
Sedna XQuery, C++ XML database
SimpleDB Erlang online service
OpenLink Virtuoso C++, C#, Java, SPARQL middleware and database engine hybrid

Graph
This kind of database is designed for data whose relations are well represented as a graph (elements
interconnected with an undetermined number of relations between them). The kind of data could be social
relations, public transport links, road maps or network topologies, for example.

Main article: Graph database

4 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

Name Language Notes


AllegroGraph SPARQL RDF GraphStore
IBM DB2 SPARQL RDF GraphStore added in DB2 10
DEX Java, C++, .NET High-performance Graph Database
FlockDB Scala
InfiniteGraph Java High-performance, scalable, distributed Graph Database
Neo4j Java
OpenLink Virtuoso C++, C#, Java, SPARQL middleware and database engine hybrid
OrientDB Java
Sones GraphDB C#
OWLIM Java, SPARQL 1.1 RDF graph store with reasoning

Key–value stores
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.
[8][9]
The following types exist:

KV - eventually consistent

Apache Cassandra
Dynamo
Hibari
OpenLink Virtuoso
Project Voldemort
Riak[10]

KV - hierarchical

GT.M[11]
InterSystems Caché

KV - cache in RAM

memcached
OpenLink Virtuoso
Oracle Coherence
Redis
Tuple space
Velocity
IBM WebSphere eXtreme Scale
JBoss Infinispan[12]

KV - solid state or rotating disk

Aerospike

5 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

BigTable
CDB
Couchbase Server
Keyspace
LevelDB
MemcacheDB (using Berkeley DB)
MongoDB
OpenLink Virtuoso
Tarantool
Tokyo Cabinet
Tuple space
Oracle NoSQL Database

KV - ordered

Berkeley DB
FoundationDB
IBM Informix C-ISAM
InfinityDB
MemcacheDB
NDBM

Object database
Main article: Object database

db4o
GemStone/S
InterSystems Caché
JADE
NeoDatis ODB
ObjectDB
Objectivity/DB
ObjectStore
OpenLink Virtuoso
Versant Object Database
WakandaDB
ZODB

Tabular
Apache Accumulo
BigTable
Apache Hbase
Hypertable
Mnesia
OpenLink Virtuoso

6 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

Tuple store
Apache River
OpenLink Virtuoso
Tarantool

Others
Triple/Quad Store (RDF) database
Meronymy SPARQL Database Server
Virtuoso Universal Server
Ontotext-OWLIM
Apache JENA
Oracle NoSQL database

Hosted
Freebase
OpenLink Virtuoso
Datastore on Google Appengine
Amazon DynamoDB
Cloudant Data Layer (CouchDB)

Multivalue databases
Northgate Information Solutions Reality, the original Pick/MV Database
Extensible Storage Engine (ESE/NT)
OpenQM
Revelation Software's OpenInsight
Rocket U2
D3 Pick database
InterSystems Caché
InfinityDB

See also
CAP theorem
Comparison of object database management systems
Comparison of structured storage software
Faceted search
Triplestore
RDF Database
Distributed cache

References

7 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

the value in the "key–value" relationship. The data


1. ^ Lith, Adam; Jakob Mattson (2010). "Investigating itself is usually some kind of primitive of the
storage solutions for large data: A comparison of programming language (a string, an integer, or an
well performing and scalable data storage solutions array) or an object that is being marshaled by the
for real time extraction and batch insertion of data" programming language's bindings to the key–value
(http://publications.lib.chalmers.se/records/fulltext store. This structure replaces the need for a fixed
/123839.pdf) (PDF). Göteborg: Department of data model and allows proper formatting."
Computer Science and Engineering, Chalmers 9. ^ Marc Seeger (21 September 2009). "Key-Value
University of Technology. p. 70. Retrieved 12 May Stores: a practical overview" (http://blog.marc-
2011. "Carlo Strozzi first used the term NoSQL in seeger.de/assets/papers/Ultra_Large_Sites_SS09-
1998 as a name for his open source relational Seeger_Key_Value_Stores.pdf). http://blog.marc-
database that did not offer a SQL interface[...]" seeger.de/2009/09/21/key-value-stores-a-practical-
2. ^ "NoSQL Relational Database Management overview/: Marc Seeger. Retrieved 1 January 2012.
System: Home Page" (http://www.strozzi.it/cgi-bin "Key–value stores provide a high-performance
/CSA/tw7/I/en_US/nosql/Home%20Page). alternative to relational database systems with
Strozzi.it. 2 October 2007. Retrieved 29 March respect to storing and accessing data. This paper
2010. provides a short overview of some of the currently
3. ^ "NoSQL 2009" (http://blog.sym-link.com available key–value stores and their interface to the
/2009/05/12/nosql_2009.html). Blog.sym-link.com. Ruby programming language."
12 May 2009. Retrieved 29 March 2010. 10. ^ "Riak: An Open Source Scalable Data Store"
4. ^ Mike Chapple. "The ACID Model" (https://wiki.basho.com). 28 November 2010.
(http://databases.about.com/od/specificproducts Retrieved 28 November 2010.
/a/acid.htm). 11. ^ Tweed, Rob; George James (2010). "A Universal
5. ^ http://djondb.com NoSQL Engine, Using a Tried and Tested
6. ^ http://tinman.cs.gsu.edu/~raj/8711/sp13/djondb Technology" (http://www.mgateway.com
/Report.pdf /docs/universalNoSQL.pdf) (PDF). p. 25. "Without
7. ^ http://undefvoid.blogspot.com/2013/03/meeting- exception, the most successful and well-known of
with-djondb.html the NoSQL databases have been developed from
8. ^ Sandy (14 January 2011). "Key Value stores and scratch, all within just the last few years. Strangely,
the NoSQL movement" it seems that nobody looked around to see whether
(http://dba.stackexchange.com/a/619). there were any existing, successfully implemented
http://dba.stackexchange.com/questions/607/what- database technologies that could have provided a
is-a-key-value-store-database: Stackexchange. sound foundation for meeting Web-scale demands.
Retrieved 1 January 2012. "Key–value stores allow Had they done so, they might have discovered two
the application developer to store schema-less data. products, GT.M and Caché..."
This data usually consists of a string that represents 12. ^ JBoss Infinispan (http://www.jboss.org
the key, and the actual data that is considered to be /infinispan)

Further reading
Pramod Sadalage and Martin Fowler (2012). NoSQL Distilled: A Brief Guide to the Emerging World
of Polyglot Persistence. Addison-Wesley. ISBN 0-321-82662-0.
Christof Strauch (2012) NoSQL Databases. http://www.christof-strauch.de/nosqldbs.pdf
Moniruzzaman AB, Hossain SA (2013). NoSQL Database: New Era of Databases for Big data
Analytics - Classification, Characteristics and Comparison http://arxiv.org/abs/1307.0191
Kai Orend (2013) Analysis and Classification of NoSQL Databases and Evaluation of their Ability to
Replace an Object-relational Persistence Layer. http://citeseerx.ist.psu.edu/viewdoc
/download?doi=10.1.1.184.483&rep=rep1&type=pdf

External links
NoSQL whitepaper (http://www.christof-strauch.de/nosqldbs.pdf)
NoSQL Guide (http://martinfowler.com/nosql.html)
NoSQL database List (http://nosql-database.org/)
NoSQL general introduction article (http://www.infoq.com/articles/graph-nosql-neo4j)

8 of 9 29.07.2013 11:05
NoSQL - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/NoSQL

Retrieved from "http://en.wikipedia.org/w/index.php?title=NoSQL&oldid=566123227"


Categories: Database management systems Data management Distributed data stores NoSQL

This page was last modified on 28 July 2013 at 08:21.


Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may
apply. By using this site, you agree to the Terms of Use and Privacy Policy.
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.

9 of 9 29.07.2013 11:05

You might also like