天天看點

大資料技術---NoSQL

一、NoSQL概述

1、特點

靈活的可擴充性;

靈活的資料模型;

和雲計算的緊密結合。

2、傳統的關系型資料庫性能上的缺陷?

(1)無法滿足海量資料的管理需求;

(2)無法滿足高并發的需求;

(3)無法滿足高擴充性和高可用性的需求。

MySQL叢集方式的缺陷:

複雜性,整個叢集部署管理配置都非常複雜;

延遲性:當主庫壓力比較大時,就會帶來較大的延遲;

擴容問題:整個叢集壓力過大時,需求增加新機器對整個資料集進行重新分區,非常複雜。

3、NoSQL興起的原因?

(1)關系型資料庫無法滿足web2.0的需求;

(2)資料模型的局限性;

(3)web2.0關系型資料庫很多特性沒有發揮,比如事務機制和高效的查詢機制。

4、NoSQL與關系型資料庫的比較?

(1)資料庫原理方面:關系型資料庫具備完備的關系代數理論作為基礎;NoSQL缺乏理論基礎。

(2)資料規模方面:關系型資料庫很難實作橫向擴充,縱向擴充非常有限;NoSQL具有非常好的水準擴充能力。

(3) 資料庫模式方面:關系型資料庫要定義嚴格的資料庫模式,并且嚴格遵守;NoSQL資料模型非常靈活。

(4)查詢效率方面:關系型資料庫對于适當資料量級的查詢效率高,資料量級大查詢效率下降;NoSQL未建構面向複雜查詢的索引,查詢性能差。

(5)事務一緻性方面:關系型資料庫遵循ACID事務模型可以保證事務強一緻性;NoSQL采用base模型,隻能保證最終一緻性。

(6)資料完整性方面:關系型資料庫具有保證完整性的完備機制;NoSQL不具備完整性限制。

(7)可用性方面:關系型資料庫随着規模增大,為了保證嚴格的一緻性,可用性就被削弱;NoSQL具備很好的可用性,能夠在短時間内迅速傳回所需的結果。

(8)标準化方面:關系型資料庫遵循SQL标準,比較完善;NoSQL未形成統一的行業标準。

(9)技術支援方面:關系型資料庫很多都是商業資料庫;NoSQL很多屬于開源産品。

(10)可維護方面:關系型資料庫管理者維護;NoSQL維護較為複雜。

(11)兩種資料庫的應用場景:

關系型資料庫:電信銀行的關鍵業務系統;NoSQL:網際網路企業以及一些傳統企業的非關鍵業務。

5、NoSQL的類型

大資料技術---NoSQL

(1)鍵值資料庫:Redis、Memcached、SimpleDB

資料模型:鍵是一個字元串對象;值可以是任意類型的資料,比如整型、字元型、數組、清單、集合等。

典型應用:涉及頻繁讀寫、擁有簡單資料模型的應用記憶體緩存,比如購物車、配置檔案、會話、參數等,存儲配置和使用者資料資訊等移動應用。

不适用情形:沒有通過值查詢的途徑;在鍵值資料庫中,不能通過 兩個或以上的鍵來關聯資料,産生故障時不可以復原。

(2)列族資料庫:BigTable、HBase、Cassandra

資料模型:列族。

典型應用:分布式資料存儲和管理,資料在地理上分布于多個資料中心的應用程式,可以容忍副本中存在短期不一緻情況的應用程式,擁有動态字段的應用程式。

優點:查找速度快,可擴充性強,容易進行分布式擴充,複雜性低。

缺點:功能較少,大都不支援強事務一緻性。

(3)圖資料庫:Neo4J

資料模型:圖結構。

典型應用:專門用于處理具有高度互相關聯關系的資料,比較适合于社交網絡、模式識别、依賴分析、推薦系統以及路徑尋址等問題。

優點:靈活性高,支援複雜的圖形算法,可用于建構複雜的關系圖譜。

(4)文檔資料庫:MongoDB、CouchDB

資料模型:鍵值。

典型應用:存儲、索引并管理面向文檔的資料或類似的半結構化資料。

優點:json資料格式。支援更好的并發性。

大資料技術---NoSQL

二、CAP理論

大資料技術---NoSQL

1、C:consistency,一緻性

一緻性:指任何一個讀操作總能讀到之前完成的寫操作的結果。

2、A:availability,可用性

可用性:指快速擷取資料,可以在确定的時間内傳回操作結果,保證每個請求不管成功或失敗都有響應。

3、P:partition tolerance:分區容錯性

分區容錯性:指當出現網絡分區的情況時(系統中的一部分節點無法和其他節點進行通信),分離的系統也能夠正常運作。

大資料技術---NoSQL

4、BASE和最終一緻性

BASE:basically available soft-state and eventual consistency,NoSQL的理論基石,與關系型資料庫中的ACID是對應關系。

(1)基本可用性:指一個分布式系統的一部分發生問題變得不可用時其他部分任然可以正常使用,允許出現失敗的情形。

(2)軟狀态:指狀态可以有一段時間不同步,具有一定的滞後性。硬狀态:資料庫必須一直保持資料庫一緻性。

(3)最終一緻性:高并發的資料通路操作下,後續操作是否能夠擷取最新的資料。

大資料技術---NoSQL
大資料技術---NoSQL
大資料技術---NoSQL

三、從NoSQL到NewSQL

大資料技術---NoSQL

四、MongoDB:文檔資料庫

MongoDB:基于分布式檔案存儲的開源資料庫系統。

大資料技術---NoSQL
大資料技術---NoSQL
大資料技術---NoSQL