Anda di halaman 1dari 8

NoSQL 1

NoSQL
"Structured storage" redirects here. For the Microsoft technology also known as structured storage, see COM
Structured Storage.
A NoSQL or Not Only SQL database provides a mechanism for storage and retrieval of data that is modeled in
means other than the tabular relations used in relational databases. Motivations for this approach include simplicity
of design, horizontal scaling and finer control over availability. The data structure (e.g. key-value, graph, or
document) differs from the RDBMS, and therefore some operations are faster in NoSQL and some in RDBMS.
There are differences though, and the particular suitability of a given NoSQL DB depends on the problem it must
solve (e.g., does the solution use graph algorithms?).
NoSQL databases are increasingly used in big data and real-time web applications. NoSQL systems are also called
"Not only SQL" to emphasize that they may also support SQL-like query languages. Many NoSQL stores
compromise consistency (in the sense of the CAP theorem) in favor of availability and partition tolerance. Barriers to
the greater adoption of NoSQL stores include the use of low-level query languages, the lack of standardized
interfaces, and huge investments in existing SQL. Most NoSQL stores lack true ACID transactions, although a few
recent systems, such as FairCom c-treeACE, Google Spanner and FoundationDB, have made them central to their
designs.

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. Strozzi suggests that, as the current NoSQL movement "departs from the
relational model altogether; it should therefore have been called more appropriately 'NoREL'", referring to 'No
Relational'.
Eric Evans reintroduced the term NoSQL in early 2009 when Johan Oskarsson of Last.fm wanted to organize an
event to discuss open-source distributed databases. The name attempted to label the emergence of an increasing
number of non-relational, distributed data stores. Most of the early NoSQL systems did not attempt to provide
atomicity, consistency, isolation and durability guarantees, contrary to the prevailing practice among relational
database systems.
There have been various approaches to classify NoSQL databases, each with different categories and subcategories.
Because of the variety of approaches and overlaps it is difficult to get and maintain an overview of non-relational
databases. Nevertheless, a basic classification is based on data model. A few examples in each category are:
Column: Accumulo, Cassandra, Druid, HBase
Document: Clusterpoint, Apache CouchDB, Couchbase, MarkLogic, MongoDB
Key-value: Dynamo, FoundationDB, MemcacheDB, Redis, Riak, FairCom c-treeACE
Graph: Allegro, Neo4J, InfiniteGraph, OrientDB, Virtuoso, Stardog
A more detailed classification is the following, by Stephen Yen:
NoSQL 2

Term Matching Database

Key-Value Cache Coherence, eXtreme Scale, GigaSpaces, GemFire, Hazelcast, Infinispan, JBoss Cache, Memcached,
Repcached, Terracotta, Velocity

Key-Value Store Flare, Keyspace, RAMCloud, SchemaFree

Key-Value Store DovetailDB, Dynamo, Riak, Dynomite, MotionDb, Voldemort, SubRecord


(Eventually-Consistent)

Key-Value Store (Ordered) Actord, FoundationDB, Lightcloud, Luxio, MemcacheDB, NMDB, Scalaris, TokyoTyrant

Data-Structures server Redis

Tuple Store Apache River, Coord, GigaSpaces

Object Database DB4O, Perst, Shoal, ZopeDB,

Document Store Clusterpoint, Couchbase, CouchDB, MarkLogic, MongoDB, XML-databases

Wide Columnar Store BigTable, Cassandra, Druid, HBase, Hypertable, KAI, KDI, OpenNeptune, Qbase

Performance
Ben Scofield rated different categories of NoSQL databases as follows:

Data Model Performance Scalability Flexibility Complexity Functionality

KeyValue Store high high high none variable (none)

Column-Oriented Store high high moderate low minimal

Document-Oriented 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
Non-visible Metadata
Directory hierarchies
Compared to relational databases, for example, collections could be considered analogous to tables and documents
analogous to 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.
NoSQL 3

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 using the simple key-document (or key-value) lookup
to retrieve a document, the database offers an API or query language that retrieves documents based on their
contents.
Document store databases and their query language

Name Language Notes

BaseX Java, XQuery XML database

Cloudant C, Erlang, Java, Scala JSON store (online service)

Clusterpoint C, C++, REST, XML, full text search XML database with support for JSON, text, binaries

Couchbase Server C, C++, Erlang Support for JSON and binary documents

Apache CouchDB Erlang JSON database

Solr Java Search engine

ElasticSearch Java JSON, Search engine

eXist Java, XQuery XML database

Jackrabbit Java Java Content Repository implementation

IBM Notes and IBM Domino LotusScript, Java, IBM X Pages, others MultiValue

MarkLogic Server Java, REST, XQuery XML database with support for JSON, text, and binaries

MongoDB C++, C#, Go BSON store (binary format JSON)

ObjectDatabase++ C++, C#, TScript Binary Native C++ class structures

Oracle NoSQL Database C, Java

OrientDB Java JSON, SQL support

CoreFoundation Property list C, C++, Objective-C JSON, XML, binary

Sedna C++, XQuery XML database

SimpleDB Erlang online service

TokuMX C++, C#, Go MongoDB with Fractal Tree indexing

OpenLink Virtuoso C++, C#, Java, SPARQL middleware and database engine hybrid

Graph
Main article: Graph database
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.
Graph databases and their query language
NoSQL 4

Name Language(s) Notes

AllegroGraph SPARQL RDF GraphStore

DEX/Sparksee C++, Java, .NET, Python High-performance graph database

FlockDB Scala

IBM DB2 SPARQL RDF GraphStore added in DB2 10

InfiniteGraph Java High-performance, scalable, distributed graph database

Neo4j Java

OWLIM Java, SPARQL 1.1 RDF graph store with reasoning

OrientDB Java

Sones GraphDB C#

Sqrrl Enterprise Java Distributed, real-time graph database featuring cell-level security

OpenLink Virtuoso C++, C#, Java, SPARQL middleware and database engine hybrid

Stardog Java, SPARQL semantic graph database

Key-value stores
Key-value (KV) stores use the associative array (also known as a map or dictionary) as their fundamental data
model. In this model, data is represented as a collection of key-value pairs, such that each possible key appears at
most once in the collection.
The key-value model is one of the simplest non-trivial data models, and richer data models are often implemented on
top of it. The key-value model can be extended to an ordered model that maintains keys in lexicographic order. This
extension is powerful, in that it can efficiently process key ranges.
Key-value stores can use consistency models ranging from eventual consistency to serializability. Some support
ordering of keys. Some maintain data in memory (RAM), while others employ solid-state drives or rotating disks.
Here is a list of key-value stores:

KV - eventually consistent
Dynamo
Riak

KV - immediately consistent
FairCom c-treeACE

KV - ordered
Berkeley DB
FairCom c-treeACE/c-treeRTG
FoundationDB
IBM Informix C-ISAM
InfinityDB
MemcacheDB
NDBM
NoSQL 5

KV - RAM
Coherence
FairCom c-treeACE
GemFire [1]
Hazelcast
memcached
redis
OpenLink Virtuoso
XAP

KV - solid-state drive or rotating disk


Aerospike
BigTable
CDB
Clusterpoint XML database
Couchbase Server
GT.M
FairCom c-treeACE
Hibari
Keyspace
LevelDB
MemcacheDB (using Berkeley DB)
MongoDB
Oracle NoSQL Database
Tarantool
Tokyo Cabinet
Tuple space
OpenLink Virtuoso

Object database
Main article: Object database
db4o
GemStone/S
InterSystems Cach
JADE
NeoDatis ODB
ObjectDatabase++
ObjectDB
Objectivity/DB
ObjectStore
ODABA
Perst
OpenLink Virtuoso
Versant Object Database
ZODB
NoSQL 6

Tabular
Apache Accumulo
BigTable
Apache Hbase
Hypertable
Mnesia
OpenLink Virtuoso

Tuple store
GigaSpaces
Apache River
Tarantool
OpenLink Virtuoso
TIBCO ActiveSpaces

Triple/Quad Store (RDF) database


Apache JENA
MarkLogic
Ontotext-OWLIM
Oracle NoSQL database
SparkleDB
Virtuoso Universal Server
Stardog

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

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

References
[1] http:/ / www. gopivotal. com/ big-data/ pivotal-gemfire

Further reading
Pramod Sadalage and Martin Fowler (2012). NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot
Persistence. Addison-Wesley. ISBN0-321-82662-0.
Dan McCreary & Ann Kelly (2013). Making Sense of NoSQL: A guide for managers and the rest of us.
ISBN9781617291074.
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).
Ganesh Krishnan, Sarang Kulkarni, Dharmesh Kirit Dadbhawala. "Method and system for versioned sharing,
consolidating and reporting information" (https://www.google.com/patents/US7383272?pg=PA1&
dq=ganesh+krishnan&hl=en&sa=X).
Sugam Sharma. "A Brief Review on Modern NoSQL Data Models, Handling Big Data" (http://www.cs.iastate.
edu/~sugamsha/articles).

External links
Christoph Strauch. "NoSQL whitepaper" (http://www.christof-strauch.de/nosqldbs.pdf). Hochschule der
Medien, Stuttgart.
Stefan Edlich. "NoSQL database List" (http://nosql-database.org/).
Peter Neubauer (2010). "Graph Databases, NOSQL and Neo4j" (http://www.infoq.com/articles/
graph-nosql-neo4j).
Sergey Bushik (2012). "A vendor-independent comparison of NoSQL databases: Cassandra, HBase, MongoDB,
Riak" (http://www.networkworld.com/news/tech/2012/102212-nosql-263595.html). NetworkWorld.
Article Sources and Contributors 8

Article Sources and Contributors


NoSQL Source: http://en.wikipedia.org/w/index.php?oldid=625098416 Contributors: (:Julien:), AdityaKishore, Adtadt, Al3xpopescu, Alexandre.Morgaut, Alexrakia, AlisonW, Altered Walter,
Amire80, Anastrophe, AndrewBass, Angry bee, Anilkumar1129, Anne.naimoli, Anoop K Nayak, Ansh.prat, Anujsahni, Argv0, Arjayay, Arto B, Asafdapper, Ashtango, Ashtango5, Atropos235,
AxelBoldt, BD2412, Barrylb, Bbulkow, Bdijkstra, Bearcat, Beland, Benatkin, Benbovee, Benhoyt, Bhaskar, BigButterfly, Billinghurst, Biofinderplus, Boshomi, Bovineone, Bramante, Brocsima,
Bulwersator, CJGarner, CafeNoName, CaptTofu, Ceefour, Cekli829, Charbelgereige, CharlesHoffman, Chenopodiaceous, ChristianGruen, Ciges, Clemwang, Cloud-dev, Cnorvell, Cnwilliams,
ColdShine, Coldacid, Colemala, Compfreak7, Corrector623, Craigbeveridge, Crosbiesmith, Crosstantine, Ctxppc, Cybercobra, Cyril Wack, DBigXray, Dabron, DallasClarke, DamarisC,
Dancrumb, DatabACE, David Paniz, DavidBourguignon, DavidSol, Davidhorman, Dawn Bard, Dericofilho, Dewritech, Dm, Dmccreary, Dmitri.grigoriev, Dredwolff, Drq123, Drttm, Dshelby,
Dstainer, Duncan, Ebalter, Eco schranzer, Edlich, Eedeebee, Ehn, Electricmuffin11, Eno, EricBloch, ErikHaugen, Ertugka, Euphoria, Excirial, Extrovrt101, F331491, Farvartish, Fiskbil,
Fitzchak, Fmorstatter, FontOfSomeKnowledge, Fraktalek, FranzKraun, Franois Robere, Frap, Freshnfruity, Frze, Fulldecent, Furrykef, Fxsjy, Gaborcselle, Gadfium, Germanviscuso,
Getmoreatp, GimliDotNet, Ginsuloft, Gkorland, GlobalsDB, GoingBatty, Gonim, Gorman, Gpierre, GraemeL, Griswolf, Gstein, Hairy Dude, Harpreet dandeon, Headbomb, Heelmijnlevenlang,
HereToHelp, Hloeung, Hoelzro, Hoo man, Hu12, Inmortalnet, Intgr, Irmatov, Itamar.haber, JLaTondre, Jabawack81, Jandalhandler, Jasonhpang, Javalangstring, Jeffdexter77, Jerome Charles
Potts, Jjrenzel, JnRouvignac, Jnaranjo86, JohnPritchard, Jonasfagundes, Joolean, Jottinger, Jrudisin, Jstplace, Jubalkessler, Justinsheehy, K0zka, Kamaci, Kbrose, Kgfleischmann, Khiladi 2010,
Ki2010, KiloByte, Kkbhumana, Kku, Knudmoeller, Koavf, Komap, Korrawit, Lamp90, LeeAMitchell, Leegee23, Legacypath, Leotohill, Lfstevens, Lguzenda, Linas, Lmxspice, Looris,
Luebbert42, Luisramos22, Lyoshenka, MMSequeira, Ma7dy, Mabdul, MacTed, Magnuschr, ManikSurtani, Marasmusine, Mark Arsten, Markito, Materialscientist, Matspca, Matt Heard, Mauls,
Mauro Bieg, Maury Markowitz, Maykurutu, Mbarrenecheajr, Mbonaci, Mbroberg, McSly, Mesut.ayata, Mhegi, Mhgrove, Miami33139, Michael Minh, Mikek999, Mitpradeep, Mjresin,
Mongochang, Mongodbheavy, Morphh, Mortense, MrOllie, MrWerewolf, Msalvadores, Mshefer, Mtrencseni, Mydoghasworms, Nanolat, Natan.puzis, Nathan194, Natishalom, Nawk, Nawroth,
Netmesh, Neustradamus, Nick Number, NickPenguin, Nileshbansal, Noah Slater, Nosql.analyst, Ntoll, OmerMor, Omidnoorani, Orenfalkowitz, Ostrolphant, PatrickFisher, Pcap, Peak, Pereb,
Peter Gulutzan, Petr Kopa, Phillips-Martin, Philu, Phoe6, Phoenix720, Phunehehe, Plustgarten, Pnm, Pointillist, Poohneat, Professionalsql, ProfessorBaltasar, Quiark, QuiteUnusual, Qwertyus,
R39132, RA0808, Rabihnassar, Raysonho, Razorflame, Really Enthusiastic, RedOctober13, Rediosoft, Rfl, Robert1947, RobertG, Robhughadams, Ronz, Rossturk, Rpk512, Rtweed1955, Russss,
Rzicari, Sae1962, Sagarjhobalia, SamJohnston, Sandy.toast, Sanspeur, Sasindar, ScottConroy, Sdrkyj, Sduplooy, Seancribbs, Seraphimblade, Shadowjams, Shepard, Shijucv, Smyth, Socialuser,
Somewherepurple, Sorenriise, Sstrader, StanContributor, Stephen Bain, Stephen E Browne, Steve03Mills, Stevedekorte, Stevenguttman, Stimpy77, Strait, Sugamsha, Svesterli, Syaskin, TJRC,
Tabletop, Tagishsimon, Techsaint, Tedder, Textractor, Tgrall, The-verver, Theandrewdavis, Thegreeneman5, Thomas.uhl, ThomasMueller, Thumperward, ThurnerRupert, Thringer, Timwi,
Tobiasivarsson, Tomdo08, Toopathfind, Trbdavies, Tshanky, Tsm32, Tsvljuchsh, Tuvrotya, Tylerskf, Ugurbost, Uhbif19, User db, Vegaswikian, Violaaa, Viper007Bond, Volt42, Voodootikigod,
Vychtrle, Walter Grlitz, Wavelength, Webtrill, Weimanm, Whimsley, White gecko, Whooym, William greenly, Winston Chuen-Shih Yang, Winterst, Woohookitty, Wyverald, Xtremejames183,
YPavan, Yasinaktimur, Zapher67, Zaxius, Zond, , 748 anonymous edits

License
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/

Anda mungkin juga menyukai