讀了**的海量資料儲存系列, 感覺豁然開朗, 見地提公升了很多. 現在簡單用自己的話總結一下裡邊的"精髓".
第一 二章內容比較簡單. 第一章給了我們乙個模型. 他是乙個三層結構. 模型如下:
使用者api
關係代數和事務引擎
k-v 儲存.
使用者api就是我們使用sql, 結構化查詢語言. 這個對少有的資料庫知識的人來說都不陌生, 也不用介紹. 傳統的資料庫資料是按行儲存, 索引(二級索引, 復合索引)輔助以提供查詢效能(以空間換取時間). 多條件查詢就是關係運算.
比如這樣子乙個用表,有四個字段: pk(id), user_id(使用者id),name姓名, ***(性別) . 如果我們要查詢id=0 的使用者資訊, 最笨的方法是遍歷所有的表, 逐個記錄進行id的比對,返回符合條件的記錄. 還有一種是建立乙個索引表, 裡邊有乙個id欄位還有id對應的記錄的實體地址, 我們只需要掃瞄這邊索引表, 之後根據id對應的實體地址返回查詢記錄資訊(這叫反查)就可以返回id=0的記錄數. 同理 如果我要查詢 性別男並且使用者名稱稱為***的人, 一種做法我對性別***和使用者name分別做索引, 之後取交集(這是一種關係代數運算). 還有一種 我對使用者名稱name+性別 *** 做乙個復合索引, 直接返回滿足條件的記錄. 「或「的情況就是各種條件取並集. 所以簡單的可以把查詢的各種條件歸結為關係代數運算. 深層次想想索引表就類似於一種k-v儲存. 採用的是b tree(多路搜尋樹)樹形結構,以支援快速範圍查詢.
事務是資料庫的最重要的乙個屬性.它的本質是什麼呢?事務,本質來說就是一組由乙個人(或機器)發起的連續的邏輯操作,共同的完成一件事情,在 完成整個事情之前,其所有的改動,都不應該對其他人可見和影響。而在事務結束之後,其一切 的改動,都必須全部立刻對其他的人(或機器)可見。
人們為了描述事務, 提出了四個詞彙 acid, 下面簡單看看什麼是acid:
永續性(durability):永續性就是,事務執行後,資料不能丟. 為了一致性, 就會對資料做多個副本, 並且副本要盡可能的分布在不同的機房,以避免天災人禍等不可**的因素.
要保證一大批資料在不同的時間被查詢, 被修改,直至事務提交使用者才感知資料變化又要保證效能是個很複雜的事情. 實現主要有後面幾種方法:
讀寫鎖:
也是隔離性中―讀已提交,可重複讀 兩種實現中最重要的底層實現方式.簡單來說,就是如果乙個人在事務中,那麼他所有寫過的資料,所有讀過的資料,都給他來個鎖, 讓其他小樣兒都只能等在外面,直到資料庫能確定所有更改已經全部完成了,沒有剩下什麼半拉子狀態的時候,就解開所有的鎖,讓其他人可以讀取和寫入.
mvcc:
mvcc對讀寫鎖對讀寫鎖進行了乙個改進,寫不阻塞讀,讀不阻塞寫. 如果乙個人在事務中,會先申請乙個事務 id,這個 id 是自增的,每個事務都有他自己的唯一的 i d,那麼他寫過的資料,都會被轉變為一次帶有當前事務 id 的新資料,在讀取的時候,則只會讀取小於等於自己事務 id 的資料。這樣實現的東東,語義上來說,與可重複讀就一樣了。而如果讀小於等於全域性 id 的資料,那麼這樣的實現,就是讀已提交了. mvcc 只實現了四個級別中的第二級和第**,但這已經足夠了. 有了這個東西,我們的一致性也就很容易保證了,因為乙個事物和他對應的版本號對應,又有更改後的資料和更改前的資料,如果要提交,那麼就只需要很簡單的讓更改後的資料生效可見即可, 這樣我們可以將大量的更新中要做的事情,都在事務過程中進行,這樣,比原有的基於讀寫鎖的必須在 commit 時候一起做掉來說,commit 這個操作就輕量化了很多,於是,就可以支援更多的人(或機器)持有事務狀態了。
原子性和永續性:
原子性麼,一般來說就是要麼都成功,也就是新版本資料都讓他生效,要麼就都失敗,也就是讓和自己事務 id 對應的所有修改都無效即可。也很好就解決掉了。永續性。這個就是後面我們要在寫入模型裡面介紹的東西了,基本上來說就 是寫磁碟策略的事情.
《海量資料庫解決方式》讀後感
總看一些書介紹資料庫方面的周邊技巧,有點膩。近期買了 海量資料庫解決方式 這本書來看,已經讀完了,在內容方面安排還是比較有特色,內容既有國外大作那種功底知識介紹,又有國內書籍那種周邊技巧介紹,感覺出不一樣的風格。儘管書的題目是海量資料庫解決方式,可是讀完後我絲毫感覺不到海量的思想,很多其它是資料庫方...
《海量資料庫解決方式》讀後感
總看一些書介紹資料庫方面的周邊技巧,有點膩。近期買了 海量資料庫解決方式 這本書來看,已經讀完了,在內容方面安排還是比較有特色,內容既有國外大作那種功底知識介紹,又有國內書籍那種周邊技巧介紹,感覺出不一樣的風格。儘管書的題目是海量資料庫解決方式,可是讀完後我絲毫感覺不到海量的思想,很多其它是資料庫方...
《海量資料庫解決方案》讀後感
總看一些書介紹資料庫方面的周邊技巧,有點膩。最近買了 海量資料庫解決方案 這本書來看,已經讀完了,在內容方面安排還是比較有特色,內容既有國外大作那種功底知識介紹,又有國內書籍那種周邊技巧介紹,感覺出不一樣的風格。雖然書的題目是海量資料庫解決方案,但是讀完後我絲毫感覺不到海量的思想,更多是資料庫方面的...