《大數據技術原理與應用》暑假學習計劃_06 - NoSQL簡述

《大數據技術原理與應用》暑假學習計劃_06 - NoSQL簡述

NoSQL概述

沒有接觸NoSQL時一直不太明白NoSQL的含義,一直覺得NoSQL只是一中新型數據庫的名稱。但直到前幾天學習以後我才確實瞭解到了NoSQL其真正的魅力。數據庫

NoSQL → Not noly SQL數組

NoSQL數據庫真正興起的緣由在於傳統關係型數據庫沒法知足Web2.0的需求,並且關係模型的侷限,以及Web2.0關係型數據庫的許多特性沒有發揮。瀏覽器

NoSQL數據庫具備靈活可擴展性能夠在多個節點水平擴展,並且具備靈活的數據模型,以及與底層雲計算緊密結合。網絡

傳統關係型數據庫架構

  • 傳統關係型數據庫的優勢
    1. 具備很是完備的關係理論基礎
    2. 具備事務性機制的支持
    3. 高效的的查詢優化機制
  • 傳統關係型數據庫的缺點
    1. 沒法知足海量數據管理需求
    2. 沒法知足高併發的需求
    3. 沒法知足高可擴展性和高可用性需求

傳統MySQL集羣缺陷併發

  • 複雜性:集羣部署管理配置複雜
  • 延時性:主庫壓力大時,會帶來較大時延
  • 擴容問題:整個集羣壓力過大時,增長機器時需對數據集再次分區,比較複雜

Web2.0一般不須要嚴格數據庫事務,也不須要嚴格讀寫實時性,不包含複雜SQL查詢,多表鏈接操做對Web2.0時代徹底是雞肋。分佈式

關係型數據庫與NoSQL數據庫對比

  • 數據庫原理
    • 關係型數據庫:具備完備的關係代數理論做爲基礎
    • NoSQL數據庫:NoSQL數據庫缺少理論基礎
  • 數據規模
    • 關係型數據庫:很難實現橫向擴展,縱向擴展十分有限,沒法支持海量數據存儲
    • NoSQL數據庫:具備很是好的水平擴展性
  • 數據庫模式
    • 關係型數據庫:要定義嚴格數據庫模式,嚴格遵照事先定義的數據庫模式
    • NoSQL數據庫:數據模式靈活
  • 查詢效率
    • 關係型數據庫:適當數據量級查詢效率較高
    • NoSQL數據庫:未構建面向複雜查詢的索引,查詢性能較差
  • 事務一致性
    • 關係型數據庫:遵循ACID事務模型保證事務一致性
    • NoSQL數據庫:未構建面向複雜查詢的索引,不支持事務強一致性,只保證最終一致性
  • 數據完整性
    • 關係型數據庫:具備保證完整性的完備機制
    • NoSQL數據庫:不能實現完整性約束
  • 可擴展性
    • 關係型數據庫:擴展性較差
    • NoSQL數據庫:水平擴展性很是好
  • 可用性
    • 關係型數據庫:規模增大時爲保證一致性可用性相對削弱
    • NoSQL數據庫:可用性較好
  • 標準化
    • 關係型數據庫:遵循SQL標準,標準化較完善
    • NoSQL數據庫:未造成通用行業標準
  • 技術支持
    • 關係型數據庫:大部分爲商業數據庫,可得到較強大的技術支持和完備的後續服務
    • NoSQl數據庫:開源產品,仍屬於發展階段
  • 可維護
    • 關係型數據庫:管理員維護
    • NoSQL數據庫:沒有成熟的基礎和實踐操做規範維護較複雜
  • 應用場景
    • 關係型數據庫:電信銀行等關鍵業務系統
    • NoSQL數據庫:互聯網企業及一些傳統非關鍵業務

NoSQL數據庫四大類型

鍵值數據庫:

數據模型:一堆鍵值對(鍵能夠是任意類型的數據)高併發

優勢:擴展性好,靈活性好,大量讀寫性能好,是理想的緩衝層解決方案。底層數據庫 → 緩衝層 → 瀏覽器性能

缺點:沒法存儲結構化信息,條件查詢效率較低,不支持值查找學習

列族數據庫:

數據模型:列族

相似HBase根據列族進行垂直劃分,根據行鍵進行水平劃分。

優勢:查找速度快,容易進行分佈式擴展,複雜性較低。

缺點:無事務一致性。

NoSQL理論基礎

CAP理論

consistency 一致性:全部節點在同一時間必須有一致數據

availabily 可用性

partitiontderance 分區容忍性

CA:將全部事務相關內容放在同一臺機器上,避免網絡分區(傳統關係型數據庫)

CP:使用網絡分區,等數據以以後再存取數據,短期內沒法取到數據,失去可用性

AP:可及時得到數據,但數據可能存在不一致

BASE 「鹼」

基本可用:容許部分分區失敗

軟狀態:一段時間內數據可能不一樣步,有滯後

最終一致性:可能有一段時間不一樣步。根據更新數據後各進程訪問到數據時間和方式不一樣能夠區分爲

  • 因果一致性
  • 「讀己之所寫「一致性
  • 單調讀一致性
  • 會話一致性
  • 單調寫一致性

假設有一個分佈式系統,爲實現其可靠性,要對數據進行冗餘存儲

N → 數據冗餘份數

W → 更新數據時須要保證寫完成的節點數

R → 讀取數據時需讀取的節點數

  • W+R>N → 強一致性
  • W+R<=N → 弱一致性(最終一致性時弱一致性的特例)

NewSQL

oldSQL:一種架構支持多類應用

NewSQL:多架構支持多類應用(同時具有oldSQL與NewSQL的優勢)

大數據時代:

  • NewSQL分析
  • oldSQL事務
  • NoSQL互聯網

文檔數據庫MongDB

文檔數據庫MongDB:基於分佈式文件系統的開源數據庫

  • 提供了面向文檔存儲,操做簡單
  • 能夠設置任何屬性的索引,實現更快的排序
  • 具備較好的水平可擴展性
  • 支持豐富查詢表達式,可查詢文檔內嵌對象及數組
  • 可替換已完成文檔某個指定數據字段

集合  → MongDB文檔組,相似於表。無固定結構,可對集合插入不一樣格式和類型的數據

文檔數據庫中文檔就是一個鍵值對,MongDB文檔不須要設相同字段而且相同字段不須要相同數據類型

相關文章
相關標籤/搜索