NoSQL (最初表示No n-SQL [ 1] ,后来有人转解为N ot o nly SQL [ 2] [ 3] ),是對不同於傳統的關聯式資料庫 的数据库管理系统 的統稱。
允許部分数据使用SQL系統儲存,而其他数据允許使用NoSQL系統儲存。其数据儲存可以不需要固定的表格模式以及元数据 (metadata),也經常會避免使用SQL的JOIN 操作,一般有水平可扩展性 的特征。
NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库[ 4] 。
2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论[ 5] ,来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID 的数据库设计模式。
2009年在亚特兰大举行的「no:sql(east)」讨论会是一个里程碑,其口号是「select fun, profit from real_world where relational=false;」。因此,对NoSQL最普遍的解释是“非关聯型的”,强调键-值存储 和面向文档数据库 的优点,而不是单纯的反对RDBMS。
基于2014年的收入,NoSQL市场领先企业是MarkLogic ,MongoDB 和Datastax [ 6] 。基于2015年的人气排名,最受欢迎的NoSQL数据库是MongoDB ,Apache Cassandra 和Redis [ 7] 。
当代典型的關聯式資料庫 在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档建立索引、高流量网站的网页服务 ,以及发送流式媒体 [ 8] 。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量读而极少写访问的事务。
NoSQL的結構通常提供弱一致性的保證,如最終一致性,或交易僅限於單個的数据項。不過,有些系統,提供完整的ACID 保證在某些情況下,增加了補充中間件層(例如:CloudTPS)[ 9] 。有兩個成熟的系統有提供快照隔離的列存儲:像是Google基於過濾器系統的BigTable [ 10] ,和滑鐵盧大學开发的HBase [ 11] 。這些系統,自主開發,使用類似的概念來實現多行(multi-row)分散式ACID交易的快照隔離(snapshot isolation)保證為基礎列儲存,無需額外的数据管理開銷,中間件系統部署或維護,減少了中間件層。
少数NoSQL系统部署了分布式结构,通常使用分散式雜湊表 (DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。[ 12]
Key-value基于Paxos算法的存储[ 编辑 ]
^ http://nosql-database.org/ (页面存档备份 ,存于互联网档案馆 ) "NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points : being non-relational, distributed, open-source and horizontally scalable".
^ NoSQL (Not Only SQL) . [2021-03-10 ] . (原始内容存档 于2021-04-21). NoSQL database, also called Not Only SQL
^ Fowler, Martin . NosqlDefinition . [2021-03-10 ] . (原始内容存档 于2021-05-01). many advocates of NoSQL say that it does not mean a "no" to SQL, rather it means Not Only SQL
^ Lith, Adam; Jakob Mattson. 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 (PDF) . Göteborg: Department of Computer Science and Engineering, Chalmers University of Technology: 15, 70. 2010 [2011-05-12 ] . (原始内容存档 (PDF) 于2011-08-16). 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[...]
^ NOSQL 2009 . Blog.sym-link.com. 2009-05-12 [2010-03-29 ] . (原始内容 存档于2011-07-16).
^ Hadoop-NoSQL-rankings . [2015-11-17 ] . (原始内容存档 于2015-11-18).
^ DB-Engines Ranking . [2015-07-31 ] . (原始内容存档 于2020-02-21).
^ Agrawal, Rakesh et al. The Claremont report on database research (PDF) . SIGMOD Record (计算机协会 ). 2008, 37 (3): 9–19 [2011-06-22 ] . ISSN 0163-5808 . doi:10.1145/1462571.1462573 . (原始内容存档 (PDF) 于2011-07-16).
^ CloudTPS: Scalable Transactions for Web Applications in the Cloud . Globule.org. [2010-03-29 ] . (原始内容存档 于2010-06-30).
^ Large-scale Incremental Processing Using Distributed Transactions and Notifications (PDF) . The 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2010), Oct 4–6, 2010, Vancouver, BC, Canada. [2010-10-15 ] . (原始内容存档 (PDF) 于2016-03-05).
^ Supporting Multi-row Distributed Transactions with Global Snapshot Isolation Using Bare-bones HBase (PDF) . The 11th ACM/IEEE International Conference on Grid Computing (Grid 2010), Oct 25-29, 2010, Brussels, Belgium. [2010-10-15 ] . (原始内容 (PDF) 存档于2011-06-29).
^ Cassandra: Structured Storage System over a P2P Network (PDF) . [2010-03-29 ] . (原始内容存档 (PDF) 于2009-08-24).
^ Riak: An Open Source Scalable Data Store . 2010-11-28 [2010-11-28 ] . (原始内容 存档于2010年12月31日).
^ 存档副本 . [2011-06-22 ] . (原始内容存档 于2011-05-25).