NoSQL綜述

NoSQL

概述

一、什麼是NoSQL

  • 1、NoSQL:not only SQL,非關係型數據庫
  • 2、NoSQL是一個通用術語
    a)指不遵循傳統RDBMS模型的數據庫
    b)數據是非關係的,且不使用SQL作爲主要查詢語言
    c)解決數據庫的可伸縮性和可用性問題
    d)不針對原子性或一致性問題

二、 爲什麼使用NoSQL

  • 互聯網的發展,傳統關係型數據庫存在瓶頸
    高併發讀寫
    高存儲量
    高可用性
    高擴展性
    低成本

三、NoSQL和關係型數據庫對比
主要有以下一些區別
在這裏插入圖片描述

四、NoSQL的特點

  • 1、最終一致性
  • 2、應用程序增加了維護一致性和處理事務等職責
  • 3、冗餘數據存儲
  • 4、NoSQL != 大數據
    a)NoSQL產品是爲了幫助解決大數據存儲問題
    b)大數據不僅僅包含數據存儲的問題

NoSQL基本概念

  • 1、三大基石
    CAP、BASE、 最終一致性
  • 2、Indexing(索引)、Query(查詢)
  • 3、MapReduce
  • 4、Sharding

三大基石

CAP理論

  • 1、數據庫最多支持3箇中的2個
    a)Consistency (一致性)
    b)Availability(可用性)
    c)Partition Tolerance(分區容錯性)
  • 2、NoSQL不保證"ACID"
  • 3、提供"最終一致性"
    在這裏插入圖片描述

BASE

  • 1、Basically Availble(基本可用)
    保證核心可用
  • 2、Soft-state(軟狀態)
    狀態可以有一段時間不同步
  • 3、Eventual Consistency(最終一致性)
    系統經過一定時間後,數據最終能夠達到一致的狀態
  • 4、核心思想是即使無法做到強一致性,但應用可以選擇適合的方式達到最終一致性

最終一致性

  • 1、最終結果保持一致性,而不是時時一致
  • 2、如賬戶餘額,庫存量等數據需強一致性
  • 3、如catalog等信息不需要強一致性
    a)Causal consistency(因果一致性)
    b)Read-your-writes consistency
    c)Session consistency

索引和查詢

Indexing(索引)

  • 1、大多數NoSQL是按key進行索引
  • 2、部分NoSQL允許二級索引
  • 3、HBase使用HDFS,append-only
    a)批處理寫入Logged
    b)重新創建並排序文件

Query(查詢)

  • 1、沒有專門的查詢語言,通常使用腳本語言查詢
  • 2、有些開始支持SQL查詢
  • 3、有些可以使用MapReduce代碼查詢

MapReduce、Sharding

MapReduce

  • 1、不是Hadoop的MapReduce,概念相關
  • 2、可進行數據的處理查詢

Sharding(分片)

  • 1、一種分區模式
  • 2、可以複製分片
    有利於災難恢復

NoSQL分類

主要分爲以下四類
在這裏插入圖片描述

鍵值存儲數據庫(Key-Value)

  • 1、通常用hash table來實現
    可以通過key來添加、查詢或者刪除數據
  • 2、常應用於內容緩存
    儲存用戶信息,比如會話、配置文件、參數等等
  • 3、不適用場景
    需要事務支持場景

列存儲數據庫(Wide Column Store)

  • 1、將數據儲存在列簇
    a)一個列簇存儲經常被一起查詢的相關數據
    b)每一個列簇包含kv鍵值對的「列」,可以隨行變化
  • 2、應用於分佈式數據存儲與管理
  • 3、優點
    a)查找速度快
    b)可擴展性強
    c)容易進行分佈式擴展

文檔型數據庫(Document Store)

  • 1、將數據以文檔的形式存儲
    a)文檔通常爲JSON對象,也可以使用XML
    b)每個文檔都有屬性和值
    c)值可以是簡單數據類型或複雜數據類型
    數組、到其他數據庫中的文檔的鏈接或子文檔
  • 2、應用
    存儲、索引並管理面向文檔的數據或類似的半結構化數據
  • 3、優點
    a)數據結構要求不嚴格,表結構可變
    b)可以使用它儲存不同的信息

圖數據庫(Graph Databases)

  • 1、將數據以圖的方式儲存
  • 2、適用的場景
    在一些關係性強的數據中
    推薦引擎

NoSQL和BI、大數據的關係

  • 1、BI(Business Intelligence):商務智能
    a)它是一套完整的解決方案
    b)BI應用涉及模型,模型依賴於模式
    c)BI主要支持標準SQL,對NoSQL支持弱於關係型數據庫
  • 2、NoSQL和大數據相關性較高 通常大數據場景採用列存儲數據庫 如:HBase和Hadoop