1. 程式人生 > >NoSQL(Not only sql)基礎簡介

NoSQL(Not only sql)基礎簡介

NoSQL是非關係型資料庫

兩者關係,HBase是NoSQL的一種。

 

NoSQL特性

1.Eventual  consistency(最終一致性):

寫入資料庫之後,

你不一定能馬上讀到剛寫入的資料

但最終會保持一致。

 

2.  NoSQL資料庫不怕資料冗餘多副本,因為成本比較低。

而且這樣查詢很多資料就不需要join了,很多資料在一張表裡就搞定了。

 

關係型資料庫要避免資料冗餘,成本會增加不少。

關係型資料庫本身硬碟是特殊的,空間就已經很貴了,column可以用成char絕對不會用varchar。

 

NoSQL概念解釋

1. CAP理論:

Consistency:資料一致性

Availability :服務可用性(7x24小時)

Partition Tolerance:分割槽容錯性(不同機器上分散式部署後並行處理,

並可以進行災難恢復。也就是某臺機器上服務掛了,不影響整個系統的繼續處理)

 

可以看到關係型資料庫比較側重於資料一致性(讀寫隨時一致)和服務7x24小時可用

Nosql資料庫就比較重視一致性和容災,雖然不是強一致性,而是最終一致性

,對於服務7x24小時可用做的也沒那麼好。

HBase的Availability是通過zookeeper實現的,原生不支援,但是有方案。

 

2. 索引自己看吧,功能比較弱。

HBase要用到HDFS 

index一般建在主鍵上。

 

3. Nosql幾種主流查詢方式

(1)指令碼語言,如js

(2)後面加了對sql語言的支援,但是優化器還沒有,做的不是很好。不如hive。

(3)有些對mapreduce 程式碼也支援,所以mapreduce可以跨節點來計算。

 

4.Sharding(分片)

和hive partition是一個意思!!!

相當於把一個表,分散式儲存在不同機器上,進而分散式查詢。

 

5. 根據業務需求來選擇Nosql產品

 

 

 

主要是四類:

(1)key-value store

最廣泛但不是最流行,基於key-value。可以理解為一個大的hashmap table。

對資料結構schema沒有特別要求。

產品如redis等。

資料的格式最大的特點是:都有一個key,比如說下圖中row_id是key,其他列都是value。

 

(2)wide Column

和key-value方式唯一的區別就是寬列(column families / super column)。

Column famiilies就是一組column的集合,

以Hbase領銜,Google big table,Cassandra等。

更接近大資料的處理規模。

格式如下圖所示,column families也就是多個supercolumn,supercolumn下還有column。

 

 

 

(3)Document Store(完全沒聽懂,但是不重要)

以mongoDB領銜

文件通常是json物件,本身就是一種schema。

(4)用於關係型分析,比如朋友網路如何建立的。

基於圖的資料庫分析會方便。