這一章先是將key-value stores,其實這個就是對應的關係型數據庫的以schema爲基礎的存儲原理,通常的nosql就是用的這種,特色就是沒有什麼明顯的schema,除了key之外就是一大坨的value,不須要有什麼整齊的格式。html
講的數據庫,天然不得不提cap理論,就是說Consistency Available and Partition tolerance,即一致性(C)、可用性(A)與分區容錯性(P)組成了不可能三角,最多隻能知足兩個。算法
而後講了Cassandra的架構,Cassandra寫操做比較方便,寫進memtable(內存),內存滿了以後扔進disk的sstable裏面,搜索的話用bloom filters,以前學過這個東西有false positive的,不過沒啥大關係。而後副本sstable時不時merge一下以保持一致,固然不一致的時候也是有可能被查詢到的。sql
Cassandra是保證了A和P的數據庫,就是說很快,擴展能力好,可是一致性沒那麼強。數據庫
具體能夠看看這裏http://www.javashuo.com/article/p-qxdamkac-dv.html。架構
對應的又講了hbase,也是nosql可是原理和Cassandra徹底不一樣,我基本沒咋聽其實,複習的話能夠看看這裏http://www.javashuo.com/article/p-hdnfjaui-dk.html。hbase是保證C和P的。nosql
而後講的是時間一致性,就是不一樣的系統時間怎麼保持一致啊,講了兩種算法,crstian和ntp,我徹底沒聽。。。。主要聽的是後邊講的lamport時間戳,這個原理就是咱們不關心具體的時間,只關心不一樣系統中各個事務的發生的先後順序,方法是給每一個進程的發生的事情打上時間戳(1,2,3之類的),而後能夠經過邏輯推演得出不少不一樣系統進程事務之間的先後順序,固然還有不少事推不出來,那就須要人工的規則安排了。具體內容這裏講得不錯https://blog.csdn.net/aigoogle/article/details/38823175google
感受這門課內容量好多,信息也太密了。。。.net