nosql简答什么是最终一致性_NoSql的三大基石:CAP理论BASE最终一致性
關系型數據庫的局限
NoSql出現在關系型數據庫之后,主要是為了解決關系型數據庫的短板,我們先來看看隨著軟件行業的發展,關系型數據庫面臨了哪些挑戰:
1、高并發
一個最典型的就是電商網站,例如雙11,幾億大軍的點擊造成在某一時刻的并發量是很高的,傳統的關系型數據庫肯定已經是不堪重負了,如Oracle的Session數量推薦的才只有500。
2、高效率存儲海量數據
大數據時代,數據量已經不是用GB、TB來衡量了,而是EB、ZB了,面對這海量的數據,如何高效率的存儲這些數據,關系型數據庫無法解決這個問題,以Oracle為例,單機的物理擴展不僅成本高,而且難度也加大了。
3、高可用&高擴展
Oracle即使RAC能擴展數臺機器,但數量也是有限。
NoSql的出現即是為了解決這些問題了,但是NoSql并不是用來替代關系型數據庫的,因為它本身也有著不可克服的缺陷,俗話說,好處不可能都讓你占了。
關系型數據庫與NoSql一致性的比較
一般來說,構建NoSql,為了高可用和海量數據存儲,我們會選擇犧牲一致性,但這并不意味著我們不要一致性,而是我們可以選擇不實現強一致性,而實現弱一致性或者最終一致性。無論是在關系型數據庫或者NoSql中,我們都是通過事務來實現一致性,下面我們來討論兩者在一致性方面的差異:
關系型數據庫事務的4個基本特性ACID,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。
而對于分布式事務的特性BASE,則是反這個標準的,即基本可用(Basically Availble)、軟狀態/柔性事務(Soft-state)、最終一致性(Eventual Consistency)。下面是Brewer教授在PODC大會展示的ACID vs BASE:
前面我們說過,NoSql的出現是為了解決高并發、海量數據、高可用等問題的,因而一般分布式是最優選項,我們先來說一下分布式系統的特性:CAP理論,當然,這也是NoSql的特性:
CAP理論
CAP理論是Brewer教授提出的:一個分布式系統不能同時滿足一致性(Consistency)、可用性(Availability)和分區容錯性(Tolerance of network Partition)。魚和熊掌不可兼得。
一致性:任何一個讀操作總是能讀取到之前完成的寫操作結果,也就是在分布式環境中,多點的數據是一致的。
可用性:每一個操作總是能在確定的時間內返回,也不是系統隨時都是可用的。
分區容錯性:在出現網絡分區(如斷網)的情況下,分離的系統也能正常運行。
PS:這里有人可能會問,可用性與分區容錯性是不是一個意思(既然分區都可以容錯了,不就是可用么),個人理解這里可用性說的是調用不會被阻塞。
而市場上的NoSql則以CAP理論為指導,大多選擇實現了CAP理論的兩點(如CA、CP、AP),未實現的即其缺陷部分。下面則是常見NoSql系統的特性:
常見NoSql的分類
類型
部分代表
特點
列存儲
Hbase
Cassandra
Hypertable
顧名思義,是按列存儲數據的。最大的特點是方便存儲結構化和半結構化數據,方便做數據壓縮,對針對某一列或者某幾列的查詢有非常大的IO優勢。
文檔存儲
MongoDB
CouchDB
文檔存儲一般用類似json的格式存儲,存儲的內容是文檔型的。這樣也就有有機會對某些字段建立索引,實現關系數據庫的某些功能。
kv存儲
Tokyo Cabinet / Tyrant
Berkeley DB
MemcacheDB
Redis
可以通過key快速查詢到其value。一般來說,存儲不管value的格式,照單全收。(Redis包含了其他功能)
圖存儲
Neo4J
FlockDB
圖形關系的最佳存儲。使用傳統關系數據庫來解決的話性能低下,而且設計使用不方便。
對象存儲
db4o
Versant
通過類似面向對象語言的語法操作數據庫,通過對象的方式存取數據。
xml數據庫
Berkeley DB
XML
高效的存儲XML數據,并支持XML的內部查詢語法,比如XQuery,Xpath。
參考文檔
總結
以上是生活随笔為你收集整理的nosql简答什么是最终一致性_NoSql的三大基石:CAP理论BASE最终一致性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视频文件如何加密电脑如何给文件夹加密
- 下一篇: 电脑怎么散热电脑如何散热