NoSQL簡介(NoSQL Distilled讀書筆記)

    隨着NoSQL的流行,瞭解這種新型數據庫十分有必要。數據庫

首先,爲何咱們要選擇NoSQL?服務器

    主要是兩個緣由:一是待處理的數據量很大,或對數據訪問的效率要求很高,從而必須將數據放在集羣上;二是想採用一種更爲方便的數據交互方式來提升應用程序開發效率數據結構

    而傳統關係數據庫最大的問題,應該就是阻抗失諧分佈式

第二,NoSQL數據庫的共同特性是什麼?性能

     不使用關係模型;在集羣中運行良好;開源;適用於21世紀的互聯網公司;無模式優化

 

第三,NoSQL數據模型:索引

      模型主要能夠分爲四類:‘鍵值’ ‘文檔’ ‘列族’ ‘圖’ 前三種數據模型有一個共同的特徵,就是「面向聚合」。開發

      面向聚合所用的方式,操做數據時所用的單元,結構比元組集合複雜得多,以這種複雜結構來存放列表或嵌套其餘記錄結構。文檔

     具體來講同步

1)鍵值數據模型和文檔數據模型    二者之間界限比較模糊。區別以下:鍵值數據庫的聚合不透明。只包含一些沒有太多意義的大塊信息;文檔數據庫的聚合中,能夠看到其結構。不透明的優勢是聚合中能夠存儲任意數據,除了限制大小外,其餘方面很隨意。文檔數據庫則要限制其中存放的內容,定義了容許的結構與數據類型,能夠更好地訪問數據

    鍵值數據庫基本上都是經過鍵來搜索聚合的內容,在文檔數據庫中,提交的查詢關鍵詞每每基於文檔的內部結構

2)列族存儲

    採用大表格式數據模型。最好的理解方式是將其視爲兩級聚合結構。第一個鍵值表明行標識符,能夠用它來獲取想要的聚合。列族結構與「鍵值存儲」的區別在於,「行聚合」自己又是一個映射,包含更詳細的值。這些二級值就叫作列。

     三種方式的對比:

共同點:使用聚合這一律念,聚合中有一個能夠查找其內容的索引鍵。在集羣上運行時,聚合是中心環節,由於數據庫必須保證將聚合內的數據存放在同一個節點上。

不一樣點:鍵值數據模型將聚合看作不透明的總體,只能根據鍵來查出整個聚合,而不能僅僅查詢或獲取其中的一部分;文檔模型的聚合對數據庫透明,因而能夠只查詢並獲取其中一部分數據,不過,因爲文檔沒有模式,所以,在想優化存儲並獲取聚合中的部份內容時,數據庫不太好調整文檔結構;列族模型把聚合分爲列族,讓數據庫將其視爲行聚合內的一個數據單元。此類聚合的結構有某種限制,可是數據庫可利用此種結構的優勢來提升其易訪問性。

3)圖數據庫

   重視數據間的「關係」,圖是一種圖形數據結構,其中含有鏈接節點的邊。遍歷十分迅速

 

第四:分佈式模型

   分佈式模型基於服務器集羣上的橫向擴展。聚合成了數據分佈的單元。數據分佈有兩條路徑,複製和分片,它們是兩項正交的技術,能夠二者選其一,也能夠都使用。接下來是幾個分佈式相關的概念

1)分片

   不一樣的用戶須要訪問數據集中的不一樣部分,咱們所以把數據的各個部分存放於不一樣的服務器中,以此實現橫向擴展,這種技術叫分片

2)主從複製

   把數據複製到多個節點,其中一個節點叫作「主節點「或」主要節點」,存放權威數據,並且一般負責處理數據更新操做。其他節點叫作從節點或「次要節點」,複製操做就要讓從節點與主節點同步。

   在須要頻繁讀取數據集的狀況下,「主從複製」有助於提高數據訪問性能,能夠加強讀取操做的故障恢復能力;可是一旦主節點出錯,數據會丟失

3)對等複製

   沒有主節點的概念,全部副本地位相同,能夠接受寫入請求,並且丟失其中一個副本,並不影響整個數據庫的訪問

相關文章
相關標籤/搜索