《NoSQL精粹》各章要點

2021-07-06 08:20:52 字數 2011 閱讀 1364

第一章 為什麼使用nosql

1、關係型資料庫二十多年來一直很成功,它能夠持久儲存資料,控制併發訪問,同時也提供了一套整合機制。

2、由於關係模型與記憶體中的資料結構不匹配,所以應用程式開發人員一直為這種阻抗失諧問題所困擾。

3、資料庫領域的遷移趨勢:原來,各個應用程式都把同乙份資料庫當成共用的整合點(integration point),而現在,各個應用程式都會封裝自己的資料庫,並通過服務彼此整合。

4、促使資料儲存方式發生變化的重要原因是:需要在集群上執行大量資料,而關係型資料庫不能在集群中高效執行。

5、nosql是偶然出現的新名詞。它沒有規範的定義,我們只能描述此類資料庫所共用的特徵。

6、各種nosql資料庫的共同特性是:

(1)不使用關係模型

(2)在集群中執行良好

(3)開源

(4)適用於21世紀的網際網路公司

(5)無模式

7、nosql崛起所產生的重要影響就是混合持久化

第二章 聚合資料模型

1、聚合是作為互動單元的資料集合。資料庫中的acid操作以聚合為界。

2、鍵值資料庫、文件資料庫、列族資料庫都屬於面向聚合的資料庫

3、聚合使資料庫在集群上管理資料儲存更為方便

4、如果資料互動大多在同一聚合內執行,則應使用面向聚合的資料庫;若互動操作需要使用多種不同格式的資料,那麼最好使用|「聚合無知式資料庫」

第三章 資料模型詳解

1、使用面向聚合的資料庫處理不同聚合之間的關係,要比處理同一聚合內部的關係更難。

2、圖資料庫強資料組織成一張由節點和邊所組成的圖,它們適合處理關係複雜的資料結構。

3、在無模式資料庫中,可以給記錄隨意新增字段,然而使用者在使用資料時,通常還是要遵循一套隱式模式。

4、面向聚合的資料庫通常能夠用不同方式重組主聚合(primary aggregate)的資料,以計算出各種「物化檢視」。計算過程一般通過「對映化簡」來實現。

第四章 分布式模型

1、資料分布有兩種方式:

(1)將不同的資料分片存放在多個伺服器中,每乙個資料子集(subset of data)都專門由一台伺服器負責。

(2)將資料複製到多個伺服器上,每份資料都能在多個節點中找到。

資料庫系統可以只選用其中一種技術,也可以兩種都用。

2、「複製」技術又有兩種形式:

(1)「主從複製」:將其中乙個節點當做權威資料來源,並負責寫入操作;其他從節點都要和主節點保持同步,它們可以負責讀取操作。

(2)「對等複製」:任何節點均可寫入,節點間相互協調以同步其資料。

「主從複製」減少了更新資料時的衝突機率,但它卻會讓主節點成為寫入操作的瓶頸,而「對等複製」則避免了這一點。

第五章 一致性

1、當兩個客戶端試圖同時修改乙份資料時,會發生「寫入衝突」。而當某客戶端在另乙個客戶端執行寫入操作的過程中讀取資料時,則會發生「讀寫衝突」。

2、悲觀方式以鎖定資料記錄來避免衝突,而樂觀方式則在事後檢測衝突並將其修復。

3、在分布式系統中,如果某些節點收到了更新資料,而另外一些節點卻尚未收到,那麼這種情況就視為「讀寫衝突」。若寫入操作已經傳播至所有節點,則此刻的資料庫就具備「最終一致性」。

4、客戶端通常希望具備「照原樣獨處所寫內容」的一致性,也就是說,客戶在執行完寫入操作之後,要能夠立刻看到新值。如果讀取與寫入操作分別發生在不同節點,那麼想保證這一點會比較困難。

5、想取得較好的「一致性」,就要用許多節點來執行資料操作,而這又會增大延遲。所以說,經常需要在「一致性」與延遲之間權衡。

6、「cap定理」宣稱,當有可能發生「網路分割槽」現象時,必須在資料的「可用性」與「一致性」之間權衡。

7、可以捨棄一部分「永續性」以減小延遲,如果想讓資料庫在複製資料出錯的情況下依然可用,那麼更應該考慮 這種權衡的方式了。

8、在採用「複製」技術的分布式模型中執行資料操作時,無需聯絡所有副本,只要為足夠多的副本所認可,就能夠保持「強一致性」了。

摘自《nosql精粹》

讀《NoSQL精粹》前三章有感

現在nosql很流行,所以買了一本這方面的書,這本書雖然很薄 156頁,但是感覺的確是大師的經驗之談,對於自己經驗還是很少。無法能完全能心領神會,大師所說的,就像乙個人說藥苦,你沒吃過。再聽別人描述也無法能完全知道其中滋味,只能憑自己想想。這本書名叫nosql精粹。感覺是對以前關係型資料庫乙個好的總...

C程式設計精粹

規則或建議。每條準則都有例外 1,假想的編譯程式 使用編譯程式所有的可選警告設施 使用lint來查出編譯程式漏掉的錯誤 如果有單元測試,就進行單元測試 2,自己設計並使用斷言 既要維護程式的交付版本,又要維護程式的除錯版本 要使用斷言對函式引數進行確認 要從程式中刪去無定義的特性,或者在程式中使用斷...

設計模式精粹

設計模式是軟體開發領域的孫子兵法,真正理解 精通 熟記設計模式,在適當的場合採用適當的設計模式來設計和編碼,將極大提高 的健壯性 可擴充套件性 可維護性,是高手與菜鳥分水嶺的顯著標誌之一。每乙個軟體設計和開發人員都必須掌握設計模式。設計模式種類較多,即使深刻理解嫻熟運用,時間久了也容易遺忘,需要時常...