NoSQL

NoSQL（最初表示Non-SQLhttp://nosql-database.org/  "NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points : being non-relational, distributed, open-source and horizontally scalable".，后来有人转解为Not only SQL），是對不同於傳統的關聯式資料庫的数据库管理系统的統稱。

允許部分数据使用SQL系統儲存，而其他数据允許使用NoSQL系統儲存。其数据儲存可以不需要固定的表格模式以及元数据（metadata），也經常會避免使用SQL的JOIN操作，一般有的特征。

 发展历史 
NoSQL一词最早出现于1998年，是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。

2009年，Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论，来自Rackspace的Eric Evans再次提出了NoSQL的概念，这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。

2009年在亚特兰大举行的「no:sql(east)」讨论会是一个里程碑，其口号是「select fun, profit from real_world where relational=false;」。因此，对NoSQL最普遍的解释是“非关聯型的”，强调键-值存储和面向文档数据库的优点，而不是单纯的反对RDBMS。

基于2014年的收入，NoSQL市场领先企业是，MongoDB和。基于2015年的人气排名，最受欢迎的NoSQL数据库是MongoDB，Apache Cassandra和Redis。

 特点 
当代典型的關聯式資料庫在一些数据敏感的应用中表现了糟糕的性能，例如为巨量文档建立索引、高流量网站的网页服务，以及发送流式媒体。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁，或者大批量读而极少写访问的事务。

NoSQL的結構通常提供弱一致性的保證，如最終一致性，或交易僅限於單個的数据項。不過，有些系統，提供完整的ACID保證在某些情況下，增加了補充中間件層（例如：CloudTPS）。有兩個成熟的系統有提供快照隔離的列存儲：像是Google基於過濾器系統的BigTable，和滑鐵盧大學开发的HBase。這些系統，自主開發，使用類似的概念來實現多行（multi-row）分散式ACID交易的快照隔離（snapshot isolation）保證為基礎列儲存，無需額外的数据管理開銷，中間件系統部署或維護，減少了中間件層。

少数NoSQL系统部署了分布式结构，通常使用分散式雜湊表（DHT）将数据以冗余方式保存在多台服务器上。依此，扩充系统时候添加服务器更容易，并且扩大了对服务器失效的承受能程度。

 分类 
 文档存储 
  名稱  語言 
   BaseX  XQuery，Java 
   CouchDB  Erlang 
   eXist  XQuery 
   iBoxDB  Java，C# 
   Jackrabbit  Java 
   Lotus Notes  LotusScript，Java等 
   MarkLogic Server  XQuery 
   MongoDB  C++ 
   RethinkDB  C++ 
   OrientDB  Java 
   SimpleDB  Erlang 
   Terrastore  Java 
   Elasticsearch  Java   No2DB  C# 

 图数据库 
  名稱  語言 
   AllegroGraph  SPARQL 
   Sparksee  Java ， C# 
   Neo4j  Java 
   FlockDB  Scala 
   JanusGraph  Java 

 鍵-值（key‐value）儲存 
 最終一致性的鍵-值儲存 
 Cassandra





 架構性鍵-值储存 

 InterSystem Globals

 主機式服務 
 Key/value硬盘存储 
 BigTable

 LevelDB





 Key/value RAM存储 

 memcached
 Citrusleaf database

 Redis


 Key-value基于Paxos算法的存储 


 多数据库 
 OpenQM
 Rocket U2
 Revelation Software's OpenInsight
 Extensible Storage Engine（ESE/NT）

 时序型数据库 
  名稱  語言 
   Graphite  Python 
   InfluxDB  Go 
   Informix TimeSeries  Erlang 
   OpenTSDB  Java 
   RRDtool  C 
   IoTDB  Java 

 对象数据库 
 Versant Object Database
 db4o
 GemStone/S
 InterSystems Caché
 JADE
 Objectivity/DB
 ZODB
 ObjectStore

 列存储 
 Cassandra
 HBase
 Hypertable

 参考文献 

 外部链接 
 NoSQL非关系数据库简介 
 Amazon数据库论文 
 在互联网上拥有NoSQL相关链接最多的网站。 
 NoSQL数据库笔谈
 Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j comparison 

 参见 
 最终一致性（BASE——基本可用、弱状态、最终一致性——的其中一个组成要求，与关系数据库的Acid相对）
 CAP