sql選擇

關係型數據庫遵循ACID規則

一、A (Atomicity) 原子性數據庫

原子性很容易理解,也就是說事務裏的全部操做要麼所有作完,要麼都不作,事務成功的條件是事務裏的全部操做都成功,只要有一個操做失敗,整個事務就失敗,須要回滾。json

好比銀行轉帳,從A帳戶轉100元至B帳戶,分爲兩個步驟:1)從A帳戶取100元;2)存入100元至B帳戶。這兩步要麼一塊兒完成,要麼一塊兒不完成,若是隻完成第一步,第二步失敗,錢會莫名其妙少了100元。併發

二、C (Consistency) 一致性分佈式

一致性也比較容易理解,也就是說數據庫要一直處於一致的狀態,事務的運行不會改變數據庫本來的一致性約束。性能

例如現有完整性約束a+b=10,若是一個事務改變了a,那麼必須得改變b,使得事務結束後依然知足a+b=10,不然事務失敗。設計

三、I (Isolation) 獨立性xml

所謂的獨立性是指併發的事務之間不會互相影響,若是一個事務要訪問的數據正在被另一個事務修改,只要另一個事務未提交,它所訪問的數據就不受未提交事務的影響。對象

好比如今有個交易是從A帳戶轉100元至B帳戶,在這個交易還未完成的狀況下,若是此時B查詢本身的帳戶,是看不到新增長的100元的。blog

四、D (Durability) 持久性索引

持久性是指一旦事務提交後,它所作的修改將會永久的保存在數據庫上,即便出現宕機也不會丟失。

CAP定理(CAP theorem)

在計算機科學中, CAP定理(CAP theorem), 又被稱做 布魯爾定理(Brewer's theorem), 它指出對於一個分佈式計算系統來講,不可能同時知足如下三點:

  • 一致性(Consistency) (全部節點在同一時間具備相同的數據)
  • 可用性(Availability) (保證每一個請求無論成功或者失敗都有響應)
  • 分隔容忍(Partition tolerance) (系統中任意信息的丟失或失敗不會影響系統的繼續運做)

CAP理論的核心是:一個分佈式系統不可能同時很好的知足一致性,可用性和分區容錯性這三個需求,最多隻能同時較好的知足兩個。

所以,根據 CAP 原理將 NoSQL 數據庫分紅了知足 CA 原則、知足 CP 原則和知足 AP 原則三 大類:

  • CA - 單點集羣,知足一致性,可用性的系統,一般在可擴展性上不太強大。
  • CP - 知足一致性,分區容忍性的系統,一般性能不是特別高。
  • AP - 知足可用性,分區容忍性的系統,一般可能對一致性要求低一些。

NoSQL 數據庫分類

類型 部分表明

 

特色
列存儲

Hbase

Cassandra

Hypertable

顧名思義,是按列存儲數據的。最大的特色是方便存儲結構化和半結構化數據,方便作數據壓縮,對針對某一列或者某幾列的查詢有很是大的IO優點。

文檔存儲

MongoDB

CouchDB

文檔存儲通常用相似json的格式存儲,存儲的內容是文檔型的。這樣也就有機會對某些字段創建索引,實現關係數據庫的某些功能。

key-value存儲

Tokyo Cabinet / Tyrant

Berkeley DB

MemcacheDB

Redis

能夠經過key快速查詢到其value。通常來講,存儲無論value的格式,照單全收。(Redis包含了其餘功能)

圖存儲

Neo4J

FlockDB

圖形關係的最佳存儲。使用傳統關係數據庫來解決的話性能低下,並且設計使用不方便。

對象存儲

db4o

Versant

經過相似面嚮對象語言的語法操做數據庫,經過對象的方式存取數據。

xml數據庫

Berkeley DB XML

BaseX

高效的存儲XML數據,並支持XML的內部查詢語法,好比XQuery,Xpath。

相關文章
相關標籤/搜索