本頁使用了標題或全文手工轉換

NoSQL

維基百科,自由的百科全書
跳至導覽 跳至搜尋

NoSQL是對不同於傳統的關聯式資料庫數據庫管理系統的統稱。

兩者存在許多顯著的不同點,其中最重要的是NoSQL不使用SQL作為查詢語言。其數據存儲可以不需要固定的表格模式,也經常會避免使用SQL的JOIN操作,一般有水平可延伸性的特徵。

發展歷史[編輯]

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。

基於2014年的收入,NoSQL市場領先企業是MarkLogicMongoDBDatastax[3]。基於2015年的人氣排名,最受歡迎的NoSQL數據庫是MongoDBApache CassandraRedis[4]

特點[編輯]

當代典型的關聯式資料庫在一些數據敏感的應用中表現了糟糕的效能,例如為巨量文件建立索引、高流量網站的網頁服務,以及傳送串流媒體[5]關係型數據庫的典型實現主要被調整用於執行規模小而讀寫頻繁,或者大批次極少寫存取的事務。

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

少數NoSQL系統部署了分散式結構,通常使用分散式雜湊表(DHT)將數據以冗餘方式儲存在多台伺服器上。依此,擴充系統時候添加伺服器更容易,並且擴大了對伺服器失效的承受能程度。[9]

分類[編輯]

文件儲存[編輯]

名稱 語言
BaseX XQueryJava
CouchDB Erlang
eXist XQuery
iBoxDB JavaC#
Jackrabbit Java
Lotus Notes LotusScriptJava
MarkLogic Server XQuery
MongoDB C++
RethinkDB C++
OrientDB Java
SimpleDB Erlang
Terrastore Java
ElasticSearch Java
No2DB C#

圖形關係儲存[編輯]

名稱 語言
AllegroGraph SPARQL
Sparksee JavaC#
Neo4j Java
FlockDB Scala

鍵-值(key‐value)儲存[編輯]

最終一致性的鍵-值儲存[編輯]

架構性鍵-值儲存[編輯]

主機式服務[編輯]

Key/value硬碟儲存[編輯]

Key/value RAM儲存[編輯]

Key-value基於Paxos演算法的儲存[編輯]

多數據庫[編輯]

時序型數據庫[編輯]

名稱 語言
Graphite Python
InfluxDB Go
Informix TimeSeries Erlang
OpenTSDB Java
RRDtool C

物件數據庫[編輯]

列儲存[編輯]

參考文獻[編輯]

  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, 70. 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[...] 
  2. ^ NOSQL 2009. Blog.sym-link.com. 2009-05-12 [2010-03-29]. 
  3. ^ Hadoop-NoSQL-rankings. [2015-11-17]. 
  4. ^ DB-Engines Ranking. [2015-07-31]. 
  5. ^ Agrawal, Rakesh; 等. The Claremont report on database research (PDF). SIGMOD Record (電腦協會). 2008, 37 (3): 9–19. ISSN 0163-5808. doi:10.1145/1462571.1462573. 
  6. ^ CloudTPS: Scalable Transactions for Web Applications in the Cloud. Globule.org. [2010-03-29]. 
  7. ^ 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]. 
  8. ^ 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).  網址-維基内連衝突 (幫助)
  9. ^ Cassandra: Structured Storage System over a P2P Network (PDF). [2010-03-29]. 
  10. ^ Riak: An Open Source Scalable Data Store. 28 November 2010 [28 November 2010]. (原始內容存檔於2010年12月31日). 
  11. ^ http://nosql.mypopescu.com/post/5633789299/intersystems-globals-and-gt-m-compared

外部連結[編輯]

參見[編輯]

數據庫管理系統(DBMS) 檢視 · 討論 · 編輯

概念
數據庫 · 數據模型 · 數據庫儲存結構英語Database storage structures · 關係 (數據庫) · 關係模型 · 分散式數據庫 · ACID ( 原子性英語Atomicity (database systems) · 一致性· 隔離性· 永續性英語Durability (database systems) ) · Null值
關係模型 · 數據庫規範化 · 數據庫完整性 · 實體完整性 · 參照完整性英語Referential integrity · 關聯式資料庫管理系統 
主鍵 · 外來鍵 · 代理鍵 · 超鍵 · 候選鍵 

數據庫元件
觸發器 · 視圖 · 數據庫表 · 指標 (數據庫) · 事務紀錄檔英語Transaction log · 數據庫事務 · 並行控制 · 樂觀鎖 · 悲觀鎖 · 數據庫索引 
儲存程式 · 數據庫分割英語Partition (database)

SQL
分類: 數據查詢語言(DQL) - 數據定義語言(DDL) - 數據操縱語言(DML) - 數據控制語言(DCL)
指令:SELECT · INSERT · UPDATE · MERGE · DELETE · JOIN · UNION英語Union (SQL) · CREATE · DROP · Begin work · COMMIT · ROLLBACK · TRUNCATE · ALTER
安全: SQL資料隱碼攻擊 · 參數化查詢

數據庫管理系統的實現

實現類型
關聯式資料庫 · 檔案型數據庫 · Deductive · 維度化數據庫 · 階層式 · 圖形數據庫 · NoSQL· 物件數據庫 · 物件關聯式資料庫 · Temporal · XML數據庫

數據庫產品
物件型對比) · 關係型對比

數據庫元件
數據查詢語言 · 查詢最佳化器 · 查詢計劃 · 嵌入式SQL · ODBC · JDBC · OLE DB