Project: OrientDB (App Definition and Development / Database)
File: file.pdf

NoSQL
1
NoSQL
In computing, NoSQL (sometimes expanded to "not only SQL") is a broad class of database management systems
that differ from classic relational database management systems (RDBMSes) in some significant ways. These data
stores may not require fixed table schemas, usually avoid join operations, and typically scale horizontally. Academia
typically refers to these databases as structured storage,[1] [2] [3] [4] a term that would include classic relational
databases as a subset.
History
Carlo Strozzi used the term NoSQL in 1998 to name his lightweight, open-source relational database that did not
expose an 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 Last.fm
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). So it is a superset of SQL where SQL is a very constrained type of UnQL where the queries will
always return the same fields (same number, names and types). However, UnQL does not cover the DDL SQL
statements like CREATE TABLE or CREATE INDEX[9] .
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.[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 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. Newer systems such as CloudTPS also
support join queries.[18]
NoSQL
2
Taxonomy
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
LotusScript, Java, others
MultiValue
 MarkLogic Server
XQuery
 XML database
 MongoDB
C++
 BSON (Binary format JSON)
OrientDB
Java
 SimpleDB
Erlang
 Terrastore
Java
 
Graph
 Name 
 Language 
 Notes 
AllegroGraph
SPARQL
RDF GraphStore
DEX
Java
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
Pregel
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]
NoSQL
3
Hierarchical key-value store
•GT.M
Hosted services
•Freebase
Key-value cache in RAM
•Citrusleaf database
•memcached
•Oracle Coherence
•Redis
•Tuple space
•Velocity
Key-value stores on disk
•BigTable
•CDB
•Citrusleaf database
•Keyspace
•LevelDB
•membase
•Memcachedb
•Redis
•Tokyo Cabinet
•TreapDB
•Tuple space
•MongoDB
Ordered key-value stores
•Berkeley DB
•IBM Informix C-ISAM
•Memcachedb
•NDBM
Multivalue databases
•Extensible Storage Engine (ESE/NT)
•OpenQM
•Revelation Software's OpenInsight
•Rocket U2
•D3 Pick database
•InterSystems Caché
NoSQL
4
Object database
•db4o
•GemStone/S
•InterSystems Caché
•JADE
•ObjectDB
•Objectivity/DB
•ObjectStore
•Versant Object Database
•ZODB
Tabular
•BigTable
•Apache Hadoop
•Apache Hbase
•Hypertable
•Mnesia
Tuple store
•Apache River
References
[1]Hamilton, James (3 November 2009). "Perspectives: One Size Does Not Fit All" (http:/ / perspectives. mvdirona. com/
CommentView,guid,afe46691-a293-4f9a-8900-5688a597726a. aspx). . Retrieved 13 November 2009.
[2]Lakshman, Avinash; Malik, Prashant. Cassandra — A Decentralized Structured Storage System (http:/ / www. cs. cornell. edu/ projects/
ladis2009/ papers/ lakshman-ladis2009. pdf). 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 (http:/ / labs. google. com/ papers/ bigtable-osdi06. pdf).
Google. . Retrieved 13 November 2009.
[4]Kellerman, Jim. "HBase: structured storage of sparse data for Hadoop" (http:/ / www. rapleaf. com/ pdfs/ hbase_part_2. pdf). . Retrieved 13
November 2009.
[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" (http:/ / publications. lib. chalmers. se/ records/ fulltext/ 123839. pdf) (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" (http:/ / www. strozzi. it/ cgi-bin/ CSA/ tw7/ I/ en_US/ nosql/ Home Page).
Strozzi.it. 2007-10-02. . Retrieved 2010-03-29.
[7]"NOSQL 2009" (http:/ / blog. sym-link. com/ 2009/ 05/ 12/ nosql_2009. html). Blog.sym-link.com. 2009-05-12. . Retrieved 2010-03-29.
[8]http:/ / unqlspec. org/ display/ UnQL/ Home
[9]Avram, Abel (04). "Interview: Richard Hipp on UnQL, a New Query Language for Document Databases" (http:/ / www. infoq. com/ news/
2011/ 08/ UnQL). http:/ / www. infoq. com. . Retrieved 7 September 2011.
[10]Agrawal, Rakesh et al. (2008). "The Claremont report on database research" (http:/ / db. cs. berkeley. edu/ claremont/ claremontreport08.
pdf). SIGMOD Record (ACM) 37 (3): 9–19. doi:http:/ / doi. acm. org/ 10. 1145/ 1462571. 1462573. & #32;ISSN& nbsp;0163-5808. .
[11]"Looking to the future with Cassandra | Digg About" (http:/ / about. digg. com/ blog/ looking-future-cassandra). About.digg.com.
2009-09-09. . Retrieved 2010-03-29.
[12]"Cassandra" (http:/ / www. facebook. com/ note. php?note_id=24413138919& id=9445547199& index=9). facebook.com. 2008-08-25. .
Retrieved 2011-08-19.
[13]"Datastore Agnostic Transaction Support for Cloud Infrastructures" (http:/ / cs. ucsb. edu/ ~ckrintz/ papers/ ieeecloud11. pdf). IEEE.
2011-07-04. .
[14]"CloudTPS: Scalable Transactions for Web Applications in the Cloud" (http:/ / www. globule. org/ publi/ CSTWAC_ircs53. html).
Globule.org. . Retrieved 2010-03-29.
NoSQL
5
[15]"Large-scale Incremental Processing Using Distributed Transactions and Notifications" (http:/ / www. google. ca/ url?sa=t& source=web&
cd=3& ved=0CCQQFjAC& url=http:/ / www. usenix. org/ events/ osdi10/ tech/ full_papers/ Peng. pdf& rct=j& q=Large-scale Incremental
Processing Using Distributed Transactions and Notifications& ei=eM24TOYnjqedB_mHmLUN&
usg=AFQjCNGGm1Xfaml5lq6Aj1R2BlX7WilIuQ& sig2=ZZcPWxhiMVSnY-DmewIFIg& cad=rja). 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 (http:/ / www. cs. uwaterloo. ca/
~c15zhang/ ZhangDeSterckGrid2010. pdf)]"]. 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" (http:/ / static. last. fm/ johan/ nosql-20090611/ cassandra_nosql. pdf) (PDF). .
Retrieved 2010-03-29.
[18]"Consistent Join Queries in Cloud Data Stores" (http:/ / www. globule. org/ publi/ CJQCDS_ircs68. html). Globule.org. . Retrieved
2011-01-31.
[19]Marc Seeger (2009-09-21). "Key-Value Stores: a practical overview" (http:/ / dba. stackexchange. com/ questions/ 607/
what-is-a-key-value-store-database). http:/ / www. slideshare. net/ marc. seeger/ keyvalue-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 ﬁxed data model and makes the requirement for properly formatted."
[20]"Riak: An Open Source Scalable Data Store" (https:/ / wiki. basho. com). 28 November 2010. . Retrieved 28 November 2010.
External links
•(http:/ / www. odbms. org/ downloads. aspx#nosql) on [ODBMS.ORG: NoSQL Data Stores Section]
•NoSQLforums.ORG: NoSQL Knowledgebase - Live Message Board (http:/ / www. nosqlforums. org/ )
•NoSQL User Group (http:/ / www. linkedin. com/ groups?gid=2085042) on LinkedIn
•nosql-discussion (http:/ / groups. google. com/ group/ nosql-discussion) on Google Groups
•nosqldatabases.com (http:/ / nosqldatabases. com/ )
•myNoSQL: news, articles and links about NoSQL (http:/ / nosql. mypopescu. com/ )
•nosql-databases.org (http:/ / nosql-databases. org/ )
•computerworld.com : No to SQL? Anti-database movement gains steam (http:/ / www. computerworld. com/ s/
article/ 9135086/ No_to_SQL_Anti_database_movement_gains_steam_)
•Is Microsoft Feeling the "NoSQL" Heat? (http:/ / reddevnews. com/ blogs/ data-driver/ 2009/ 12/ nosql-heat_0.
aspx)
•Information Week "The NoSQL Alternative" (http:/ / www. informationweek. com/ news/ development/
architecture-design/ showArticle. jhtml?articleID=224900559)
•How RDF Databases Differ from Other NoSQL Solutions (http:/ / blog. datagraph. org/ 2010/ 04/ rdf-nosql-diff)
•CouchOne (http:/ / www. couchone. com)
•NoSql Tapes (http:/ / nosqltapes. com)
•NoSQL Databases (Introduction and Overview) (http:/ / www. christof-strauch. de/ nosqldbs. pdf)
Article Sources and Contributors
6
Article Sources and Contributors
NoSQL  Source: http://en.wikipedia.org/w/index.php?oldid=454406739  Contributors: Al3xpopescu, Alexandre.Morgaut, AlisonW, Amire80, Argv0, Arto B, Asafdapper, AxelBoldt, Bbulkow,
Bdijkstra, Bearcat, Beland, Benatkin, Benhoyt, Bhaskar, Biofinderplus, Bovineone, CaptTofu, Ceefour, Cekli829, Charbelgereige, ChristianGruen, Clemwang, Cnorvell, ColdShine, Coldacid,
Craigbeveridge, Crosbiesmith, Cybercobra, Cyril.wack, DamarisC, Dancrumb, DavidBourguignon, DavidSol, Davidhorman, Dericofilho, Dm, Dmccreary, Dmitri.grigoriev, Dredwolff, Drttm,
Dshelby, Dstainer, Duncan, Ebalter, Eco schranzer, Edlich, Ehn, Eno, EricBloch, ErikHaugen, Ertugka, Euphoria, Excirial, Fiskbil, Fraktalek, Frap, Furrykef, Fxsjy, Gaborcselle, Germanviscuso,
Getmoreatp, Gkorland, GlobalsDB, GoingBatty, Gpierre, Gstein, Heelmijnlevenlang, Hloeung, Hoelzro, Inmortalnet, Irmatov, JLaTondre, Jabawack81, Jandalhandler, Javalangstring,
Jeffdexter77, JnRouvignac, Jonasfagundes, Joolean, Jottinger, Jrudisin, Jstplace, Justinsheehy, Kgfleischmann, Ki2010, KiloByte, Kkbhumana, Koavf, Komap, Korrawit, Leotohill, Lfstevens,
Lguzenda, Linas, Looris, Luisramos22, MMSequeira, Mabdul, Magnuschr, Marasmusine, Mbonaci, Mhegi, Miami33139, Mitpradeep, Mjresin, Morphh, Mortense, MrWerewolf, Mshefer,
Mtrencseni, Mydoghasworms, Natishalom, Nawroth, Netmesh, Nileshbansal, Ntoll, Omidnoorani, PatrickFisher, Pcap, Peak, Phillips-Martin, Phunehehe, Plustgarten, Pnm, Poohneat, R39132,
Rabihnassar, Really Enthusiastic, Rfl, RobertG, Robhughadams, Ronz, Rtweed1955, Russss, Sae1962, SamJohnston, ScottConroy, Sduplooy, Seancribbs, Seraphimblade, Shadowjams, Shepard,
Shijucv, Smyth, Sorenriise, Sstrader, Stephen Bain, Stephen E Browne, Stevedekorte, Stimpy77, Syaskin, TJRC, Tagishsimon, Tedder, Theandrewdavis, Thomas.uhl, ThomasMueller,
Thumperward, Tobiasivarsson, Tomdo08, Trbdavies, Tshanky, Tuvrotya, Uhbif19, Violaaa, Viper007Bond, Volt42, Voodootikigod, Vychtrle, Weimanm, Whooym, William greenly, Winterst,
Woohookitty, Wyverald, YPavan, Zapher67, Zond, 419 anonymous edits
License
Creative Commons Attribution-Share Alike 3.0 Unported
//creativecommons.org/licenses/by-sa/3.0/