跳转到内容

NoSQL

维基百科,自由的百科全书

这是本页的一个历史版本,由Addone留言 | 贡献2012年1月21日 (六) 06:02 (據英文頁面修正定義)编辑。这可能和当前版本存在着巨大的差异。

NoSQL有時也被認為是Not Only SQL的簡寫,是對不同於傳統的关系型数据库数据库管理系统的統稱。兩者存在許多顯著的不同點,其中最重要的是NoSQL不使用SQL作為查詢語言。其數據存儲可以不需要固定的表格模式,也經常會避免使用SQL的JOIN操作,並且一般具有水平可擴展性。NOSQL 實作可分二個重點, 重視使用硬碟, 或盡可能的利用 RAM做為存儲。

发展历史

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

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

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

特点

典型的現代關連式資料庫在數據密集型應用上都有效能欠佳的問題,包括索引大量的文件,服務網頁上的高流量的網站,並提供流媒體 。[3]典型的關連式資料庫的實現方式是針對頻繁的讀寫機制或遇到大量資料但少有寫的機制。

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

一些NoSQL系統採用分散式結構,具有數據保存在一個冗餘方式在多台伺服器之上,往往採用分散式雜湊表(hashtable)。通過這種方式,系統可以很容易地向外擴展,加入更多的伺服器,和伺服器的失敗容錯機制。[7]

分类

文档存储

名稱 語言 注解
BaseX XQuery, Java XML database
CouchDB Erlang
eXist XQuery XML database
Jackrabbit Java
Lotus Notes LotusScript, Java, others MultiValue
MarkLogic Server XQuery XML database
MongoDB C++ JSON database
OrientDB Java
SimpleDB Erlang
Terrastore Java

图形关系存储

名稱 語言 注解
AllegroGraph SPARQL RDF GraphStore
DEX Java , C# High-performance Graph Database
Neo4j Java
FlockDB Scala

鍵-值(key‐value)儲存

最終一致性的鍵-值儲存

架構性鍵-值储存

主機式服務

Key/value 硬盘存储

Key/value RAM存储

Key-value 基于Paxos算法的存储

多数据库

对象数据库

注釋

  1. ^ 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. 2010 [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[...]  |pages=|page=只需其一 (帮助)
  2. ^ NOSQL 2009. Blog.sym-link.com. 2009-05-12 [2010-03-29]. 
  3. ^ Agrawal, Rakesh; et al. The Claremont report on database research (PDF). SIGMOD Record (ACM). 2008, 37 (3): 9–19. ISSN 0163-5808. doi:http://doi.acm.org/10.1145/1462571.1462573 请检查|doi=值 (帮助). 
  4. ^ CloudTPS: Scalable Transactions for Web Applications in the Cloud. Globule.org. [2010-03-29]. 
  5. ^ 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]. 
  6. ^ 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].  网址-维基内链冲突 (帮助)
  7. ^ Cassandra: Structured Storage System over a P2P Network (PDF). [2010-03-29]. 
  8. ^ Riak: An Open Source Scalable Data Store. 28 November 2010 [28 November 2010]. 
  9. ^ http://nosql.mypopescu.com/post/5633789299/intersystems-globals-and-gt-m-compared

参看

外部链接