搜索
热搜: music
门户 Wiki Wiki Reference view content

NoSQL

2014-7-23 21:27| view publisher: amanda| views: 1003| wiki(57883.com) 0 : 0

description: 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 ...
Carlo Strozzi used the term NoSQL in 1998 to name his lightweight, open-source relational database that did not expose the standard SQL interface.[3] Strozzi suggests that, as the current NoSQL movement "departs from the relational model altogether; it should therefore have been called more appropriately 'NoREL'",[4] 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.[5] 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.[6]
Classification
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, the basic classification that most would agree on is based on data model. A few examples in each category are:
Column: Accumulo, Cassandra, HBase
Document: Clusterpoint, Couchbase, MarkLogic, MongoDB
Key-value: Dynamo, FoundationDB, MemcacheDB, Redis, Riak, FairCom c-treeACE
Graph: Allegro, Neo4J, OrientDB, Virtuoso
A more detailed classification is the following, by Stephen Yen:[7]
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 (Eventually-Consistent)    DovetailDB, Dynamo, Riak, Dynomite, MotionDb, Voldemort, SubRecord
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, CouchDB, MarkLogic, MongoDB, XML-databases
Wide Columnar Store    BigTable, Cassandra, HBase, Hypertable, KAI, KDI, OpenNeptune, Qbase
Performance
Ben Scofield rated different categories of NoSQL databases as follows: [8]
Data Model    Performance    Scalability    Flexibility    Complexity    Functionality
Key–Value 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.
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
djondb[9][10][11]    C++    JSON, ACID Document Store
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
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
Graph Databases and Their Query Language
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
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.[12][13]
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.[14]
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[15]
KV - immediately consistent
FairCom c-treeACE
KV - ordered
Berkeley DB
FairCom c-treeACE/c-treeRTG
FoundationDB
IBM Informix C-ISAM
InfinityDB
MemcacheDB
NDBM
KV - RAM
Coherence
FairCom c-treeACE
GemFire
Hazelcast
memcached
redis
OpenLink Virtuoso
XAP
KV - solid-state drive or rotating disk
Aerospike
BigTable
CDB
Clusterpoint XML database
Couchbase Server
GT.M[16]
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
WakandaDB
ZODB
Tabular
Apache Accumulo
BigTable
Apache Hbase
Hypertable
Mnesia
OpenLink Virtuoso
Tuple store
GigaSpaces
Apache River
Tarantool
OpenLink Virtuoso
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

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.[1] 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.[2] 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.

About us|Jobs|Help|Disclaimer|Advertising services|Contact us|Sign in|Website map|Search|

GMT+8, 2015-9-11 21:07 , Processed in 0.131596 second(s), 16 queries .

57883.com service for you! X3.1

返回顶部