傳統的關係型數據庫以及數據倉庫在面對大數據的處理時顯得愈來愈力不從心。由於關係數據庫管理系統 (RDBMS)的設計從未考慮過可以處理日益增加且格式多變的數據,以及訪問數據並進行分析的用戶需求呈爆炸式增加的勢頭。它們通常都是固定的schema,缺少對非結構化數據的支持,同時對數據分片存儲、系統擴展性的支持也比較侷限,系統的擴容過程也比較複雜
。另外,許多傳統的數據庫方法是爲長期的策略性分析而非實時決策構造的。在這樣的背景下,NoSQL數據庫就應運而生了。sql
數據庫中的Schema,爲數據庫對象的集合,一個用戶通常對應一個schema。
官方定義以下:
A schema is a collection of database objects (used by a user.).
schema objects are the logical structures (邏輯結構邏輯概念
)that directly refer to the database’s data.
A user is a name defined in the database that can connect to and access objects.
schemas and users help database administrators manage database security.數據庫
若要在關係型數據庫中存儲數據,首先必須定義「模式」,也就是用一種預約義結構向數據庫說明:要有哪些表格,表中有哪些列,每一列都存放何種類型的數據。必須先定義好模式,而後才能存放數據(結構化)
。數據結構
相比之下,NoSQL 數據庫的數據存儲就比較隨意了。「鍵值數據庫」能夠把任何數據存放在一個「鍵」的名下。「文檔數據庫」實際上也如此,由於它對所存儲的文檔結構沒有限制。在列族數據庫中,任意列裏面均可以隨意存放數據。你能夠在圖數據庫中新增邊,也能夠隨意向節點和邊中添加屬性。併發
無模式數據庫的倡導者們很享受它所帶來的自由與靈活。若是用了模式,那麼就必須提早指明你要存儲的數據,然而這一點卻比較難辦。擺脫模式的制約後,就能夠輕易存儲所需數據了,因而咱們很容易就能根據項目的進展狀況來修改原有的數據存儲方式,一旦發現了新東西,只要把它們加入數據庫中就好。此外,如果發現某些東西已經沒用了,那麼再也不存儲它們就好了。在使用模式的關係型數據庫中,若是刪除了某列,那麼你恐怕得擔憂此操做會不會致使舊數據丟失。nosql
在數據庫系統中,「分片」概念是指( 對數據的分片)。每個全局關係均可分爲若干個不相交的部分,每一部分稱爲一個片斷。分佈式
nosql中,分片即Sharding,能夠簡單定義爲將大數據庫分佈到多個物理節點上的一個分區方案。每一個 shard 都被放置在一個節點上面。性能
在傳數據庫系統中,事務具備ACID 4個屬性(Jim Gray在《事務處理:概念與技術》中對事務進行了詳盡的討論)。大數據
(1)原子性(Atomicity):事務是一個原子操做單元,其對數據的修改,要麼全都執行,要麼全都不執行。設計
(2)一致性(Consistent):在事務開始和完成時,數據都必須保持一致狀態。這意味着全部相關的數據規則都必須應用於事務的修改,以保持數據的完整性;事務結束時,全部的內部數據結構(如B樹索引或雙向鏈表)也都必須是正確的。日誌
(3)隔離性(Isolation):數據庫系統提供必定的隔離機制,保證事務在不受外部併發操做影響的「獨立」環境執行。這意味着事務處理過程當中的中間狀態對外部是不可見的,反之亦然。
(4)持久性(Durable):事務完成以後,它對於數據的修改是永久性的,即便出現系統故障也可以保持。
對於單個節點的事務,數據庫都是經過併發控制(兩階段封鎖,two phase locking或者多版本,multiversioning)和恢復機制(日誌技術)保證事務的ACID特性。對於跨多個節點的分佈式事務,經過兩階段提交協議(two phase commiting)來保證事務的ACID。
能夠說,數據庫系統是伴隨着金融業的需求而快速發展起來。對於金融業,可用性和性能都不是最重要的,而一致性是最重要的,用戶能夠容忍系統故障而中止服務,但毫不能容忍賬戶上的錢無端減小(固然,無端增長是能夠的)。而強一致性的事務是這一切的根本保證。
BASE來自於互聯網的電子商務領域的實踐,它是基於CAP理論逐步演化而來,核心思想是即使不能達到強一致性(Strong consistency),但能夠根據應用特色採用適當的方式來達到最終一致性(Eventual consistency)的效果。BASE是Basically Available、Soft state、Eventually consistent三個詞組的簡寫,是對CAP中C & A的延伸。BASE的含義:
(1)Basically Available:基本可用;
(2)Soft-state:軟狀態/柔性事務,即狀態能夠有一段時間的不一樣步;
(3)Eventual consistency:最終一致性;
BASE是反ACID的,它徹底不一樣於ACID模型,犧牲強一致性,得到基本可用性和柔性可靠性並要求達到最終一致性。